Wednesday, 11 February

20:21

Backpack Beware [The Stranger]

Signed, a former New Yorker, just trying to get home. by Anonymous

Seattle, I know you are relatively new to the public transit game, but I am BEGGING YOU to learn some basics about rush hour travel. You're relatively okay at standing to the right so people can walk by on the left on escalators, but for god's sakes, TAKE OFF YOUR BACKPACKS ON THE TRAIN!!

Picture this: It's 5 p.m., you're leaving the office. The train is packed full of tired, overworked, and underpaid people. You manage to squeeze on, only to get whacked by someone's backpack, while they are oblivious to the fact that by turning, they've turned their backpack into a weapon. You shift to the right, BAM! another backpack. You're being crushed in the doorway because you have nowhere to go. You look to the right, down the aisle, and see it looks relatively empty because everyone has their backpacks on! Each person takes up the space of two people: one space for their body and one space for their backpack.

Come on, y'all. We all want to get home. Take your backpacks off so we can fit more people on the train and not get clotheslined by a rogue backpack.

Signed,

A former New Yorker, just trying to get home 

Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! Send your unsigned rant, love letter, confession, or accusation to ianonymous@thestranger.com. Please remember to change the names of the innocent and the guilty.

19:56

It’s Groundhog Day Again…but Worse – DORK TOWER 10/02/26 [Dork Tower]

Most DORK TOWER strips are now available as signed, high-quality prints, from just $25!  CLICK HERE to find out more!

Also, here’s last July’s comic, so you don’t need to seek it out:

HEY! Want to help keep DORK TOWER going? Then consider joining the DORK TOWER Patreon and ENLIST IN THE ARMY OF DORKNESS TODAY! (We have COOKIES!) (And SWAG!) (And GRATITUDE!)

The Mark Of Donalds [Penny Arcade]

Time was, people would say that you had to read the newspost to know what <https://www.penny-arcade.com/comic/2026/02/11/">the comic was about - like that was a bad thing! As the author of the newspost, I have a natural impetus to craft the kind of strip which requires an independent Stone of Hammurabi to help interpret it; a conceptual side order. The thing about today's strip is that you will find absolutely no succor in these words - no nourishment. It's inspiration is almost impossible to explain, it must be experienced viscerally. Brenna was only able to watch it for ten seconds. How far will you get?

 
 
 
 
 
View this post on Instagram
 
 
 
 
 
 
 
 
 
 
 

A post shared by Chris Kempczinski (@chrisk_mcd)

19:07

Link [Scripting News]

I just watched Life on Our Planet on Netflix, loved it. Lots of takeaways, but this one will surprise you probably -- I think the AIs are our successors. We should at least try to preserve them so they can run on the Moon if we're in the 6th Mass Extinction, which of course we are. There's been a lot of criticism of the show, but it got me to think about evolution not necessarily in the terms they offer, but the scale of it. And the CGIs were fantastic.

18:49

Kapsule adds easy developer environment containers to KDE Linux [OSnews]

If you’re a developer and use KDE, you’re going to be interested in a new feature KDE is working on for KDE Linux.

In my last post, I laid out the vision for Kapsule—a container-based extensibility layer for KDE Linux built on top of Incus. The pitch was simple: give users real, persistent development environments without compromising the immutable base system. At the time, it was a functional proof of concept living in my personal namespace.

Well, things have moved fast.

↫ Herp De Derp

Not only is Kapsule now available in KDE Linux, it’s also properly integrated with Konsole now. This means you can launch Kapsule containers right from the new tab menu in Konsole for even easier access. They’re also working on allowing users to easily launch graphical applications from the containers and have them appear in the host desktop environment, and they intend to make the level of integration with the host more configurable so developers can better tailor their containers to their needs.

Slog AM: Ten are Dead After Mass Shooting in Canada, the Trump Administration Can’t Make Up Its Mind About the El Paso Airport, and It’s Super Bowl Parade Day in Seattle [The Stranger]

The Stranger's morning news roundup. by Megan Seling

Today, Seattle Celebrates: It’s parade day for the Seattle Seahawks, who defeated the New England Patriots 29–13 in Sunday’s Bad Bunny Bowl. The morning begins with a trophy ceremony at Lumen Field at 10 a.m., and the parade will start at Fourth Avenue and Washington Street at 11 a.m. Officials say it should take approximately two hours for the parade to make its way down Fourth Avenue to Cedar Street. SPD is expecting about a million people, and they started closing roads at 6:30 a.m. It’s gonna be nuts. Either rush down there now and embrace madness, or avoid the area completely. There is no in between. Just stay off the pergola

Mass Shooting in Canada: Ten people are dead, and more than 25 are wounded after a shooting at a small school in northern British Columbia. Police say the alleged shooter died by suicide. Two of the victims were found at a home believed to be connected to the incident. It’s the deadliest mass shooting in Canada since a shooter killed 13 people in Nova Scotia in 2020, and, as AP reports, “Canada’s government has responded to previous mass shootings with gun control measures, including a recently broadened ban on all guns it considers assault weapons.” 

Meanwhile, in America: According to massshootingtracker.site, which is a real website, there have already been 45 mass shootings in the US this year (we’re on day 42), with a total of 62 people killed and 137 wounded. Your thoughts and prayers are bullshit. 

Trump Administration Shuts Down El Paso Airport: Or not. Hard to say! On Tuesday night, Real World Boston star and the Secretary of Transportation Sean Duffy claimed Mexican cartel drones breached US airspace, so he grounded all flights for 10 days. This morning, though, the Federal Aviation Administration rescinded that order and said the shutdown was “prompted by the Defense Department’s use of new counter-drone technology.” America: We’re doing a great job!

Tax the Rich! Hundreds of union members rallied at the Capitol in Olympia yesterday to demand that local lawmakers pass the millionaires tax, which “calls for a 9.9% tax on Washington residents making more than $1 million a year beginning in 2028.” Why wait until 2028? Tax those fuckers now, I say! Unfortunately, I am not in charge. Our own Nathalie Graham will have more about this Senate bill later at the stranger dot com. Stay tuned.

In Other Lawmaker News: Gov. Bob Ferguson is working with state lawmakers to add "mental health safeguards to AI chatbots.” The policy would “require companion chatbots to notify users they are interacting with AI and not a human at the beginning of the interaction and every three hours,” according to the Seattle Times. But why just every three hours? Make the robots say it every 30 minutes! Every three minutes, even! In fact, melt the robots! Burn OpenAI to the ground! Hack the planet! I have had too much coffee!

If You’re Wondering Why People Turn to Robots for Help: It’s because our city (our state, our country, our world) is terrible at offering people meaningful mental health support when they reach out for help, and a new report on King County’s lack of mental health referrals proves it. The King County sheriff’s 911 center has zero standard procedures to help people in crisis, and apparently don't refer them to the 988 suicide hotline either. Instead, they just send officers and hope it works out?

Strange Case Gets Stranger: Last night, police announced that they detained a person of interest in Rio Rico, Arizona, in connection with Nancy Guthrie’s disappearance. This morning, that person was released. Nancy, the 84-year-old mother of Today host Savannah Guthrie, has been missing for more than a week, and for several days, Savannah and her siblings have been releasing videos to Nancy’s believed captors, who allegedly asked for $6 million in Bitcoin. 

And Stranger Still: Kash Patel and the Go Get ‘Em Kids released video footage yesterday of a masked person captured on a doorbell camera outside Nancy Guthrie’s home on the same night she went missing. According to one expert CNN interviewed, this person’s behavior is “impressive,” and they clearly did a “certain amount of planning.” What? Are we watching the same video? Dude looks like a bumbling idiot, rolling up to the house with a gun holstered directly above his crotch like someone said, “Put this on,” and he was like, “Okay, yeah, because I have definitely worn a gun before. I will just point it directly at my dick.” Then, guy was so ill-prepared for the presence of a very common doorbell camera that he paused to grab some weeds from the garden and attempted to fashion them into some kind of curtain, all the while staring directly into the camera lens at close range. And you want me to believe this is the same brilliant criminal mind capable of kidnapping the 84-year-old mother of a high-profile journalist and leading the FBI on a nationwide goose chase for more than a week? Sure, Jan. 

Speaking of Kidnappings: ICE is still at it! Locals in Minneapolis shared this scene after the fact. 

 

This is the aftermath of an ICE kidnapping a few blocks from my home in St. Paul—an hour ago. A quiet street full of broken glass and at least three wrecked cars. The target of the kidnapping was taken away by ambulance. He was on a stretcher and covered by a sheet, though a cop said he was alive.

[image or embed]

— Andrew Karre (@andrewkarre.bsky.social) February 11, 2026 at 8:46 AM

 

In Local Film News: Yesterday, The Stranger reported that the Boeing IMAX theater (the biggest IMAX theater in the state) is expected to be sold to the Space Needle Corporation. The theater is closed for now for a “brief renovation focused on improving the concessions and arrival experiences, scheduled to end in May.”

And now, I leave you with some of my favorite things to happen at the Olympics so far

🥌 Commentators constantly referring to the US mixed doubles curling teammates as Girl Cory and Boy Korey. (Congrats on the silver, buddies!)

🏒 The US women’s hockey team allowing their opponents exactly one goal in four games, including a 5–0 victory over Team Canada. Even better, it’s the Torrent players who are leading the team in points! Hilary Knight has two goals and three assists, Alex Carpenter has three goals and two assists, and Hannah Bilka has three goals and one assist. (Britta Curl has zero goals, which is what she deserves, because she’s a transphobic asshole.)

😭 Ilia Malinin skating to the sound of his own voice in the ultimate masturbatory figure skating performance, which I actually hated very much but had a lot of fun laughing at. Just some of the lines the 21-year-old recites during his program: “The only true wisdom / Is in knowing you know nothing.” “You are something / But not nothing.” lol ok quad god

18:21

Link [Scripting News]

Docker version of FeedLand. Scott Hanson has it working, and would like help with testing. Thanks so much to Scott.

18:00

How do I suppress the hover effects when I put a Win32 common controls ListView in single-click mode? [The Old New Thing]

A customer had a Win32 common controls ListView in single-click mode. This has a side effect of enabling hover effects: When the mouse hovers over an item, the cursor changes to a hand, and the item gets highlighted in the hot-track color. How can they suppress these hover effects while still having single-click activation?

When the user hovers over an item, the ListView sends a LVN_HOT­TRACK notification, and you can suppress all hot-tracking effects by returning 1.

    // WndProc
    case WM_NOTIFY:
    {
        auto nm = (NMLISTVIEW*)lParam;
        if (nm->hdr.code == LVN_HOTTRACK)
        {
            return 1;
        }
    }
    break;

If you are doing this from a dialog box, you need to set the DWLP_MSG­RESULT to the desired return value, which is 1 in this case, and then return TRUE to say “I handled the message; use the value I put into DWLP_MSG­RESULT.”

    // DlgProc
    case WM_NOTIFY:
    {
        auto nm = (NMLISTVIEW*)lParam;
        if (nm->hdr.code == LVN_HOTTRACK)
        {
            SetWindowLongPtr(hDlg, DWLP_MSGRESULT, 1);
            return TRUE;
        }
    }
    break;

The post How do I suppress the hover effects when I put a Win32 common controls ListView in single-click mode? appeared first on The Old New Thing.

17:56

In Many Ways the Greatest Self-Portrait I’ve Ever Taken [Whatever]

I think this photo captures many things, about me, about my cat, and about the relationship between the two of us. I don’t know how much more can be said. This photo may, in fact, be perfect.

— JS

16:21

Kimwolf Botnet Swamps Anonymity Network I2P [Krebs on Security]

For the past week, the massive “Internet of Things” (IoT) botnet known as Kimwolf has been disrupting The Invisible Internet Project (I2P), a decentralized, encrypted communications network designed to anonymize and secure online communications. I2P users started reporting disruptions in the network around the same time the Kimwolf botmasters began relying on it to evade takedown attempts against the botnet’s control servers.

Kimwolf is a botnet that surfaced in late 2025 and quickly infected millions of systems, turning poorly secured IoT devices like TV streaming boxes, digital picture frames and routers into relays for malicious traffic and abnormally large distributed denial-of-service (DDoS) attacks.

I2P is a decentralized, privacy-focused network that allows people to communicate and share information anonymously.

“It works by routing data through multiple encrypted layers across volunteer-operated nodes, hiding both the sender’s and receiver’s locations,” the I2P website explains. “The result is a secure, censorship-resistant network designed for private websites, messaging, and data sharing.”

On February 3, I2P users began complaining on the organization’s GitHub page about tens of thousands of routers suddenly overwhelming the network, preventing existing users from communicating with legitimate nodes. Users reported a rapidly increasing number of new routers joining the network that were unable to transmit data, and that the mass influx of new systems had overwhelmed the network to the point where users could no longer connect.

I2P users complaining about service disruptions from a rapidly increasing number of routers suddenly swamping the network.

When one I2P user asked whether the network was under attack, another user replied, “Looks like it. My physical router freezes when the number of connections exceeds 60,000.”

A graph shared by I2P developers showing a marked drop in successful connections on the I2P network around the time the Kimwolf botnet started trying to use the network for fallback communications.

The same day that I2P users began noticing the outages, the individuals in control of Kimwolf posted to their Discord channel that they had accidentally disrupted I2P after attempting to join 700,000 Kimwolf-infected bots as nodes on the network.

The Kimwolf botmaster openly discusses what they are doing with the botnet in a Discord channel with my name on it.

Although Kimwolf is known as a potent weapon for launching DDoS attacks, the outages caused this week by some portion of the botnet attempting to join I2P are what’s known as a “Sybil attack,” a threat in peer-to-peer networks where a single entity can disrupt the system by creating, controlling, and operating a large number of fake, pseudonymous identities.

Indeed, the number of Kimwolf-infected routers that tried to join I2P this past week was many times the network’s normal size. I2P’s Wikipedia page says the network consists of roughly 55,000 computers distributed throughout the world, with each participant acting as both a router (to relay traffic) and a client.

However, Lance James, founder of the New York City based cybersecurity consultancy Unit 221B and the original founder of I2P, told KrebsOnSecurity the entire I2P network now consists of between 15,000 and 20,000 devices on any given day.

An I2P user posted this graph on Feb. 10, showing tens of thousands of routers — mostly from the United States — suddenly attempting to join the network.

Benjamin Brundage is founder of Synthient, a startup that tracks proxy services and was the first to document Kimwolf’s unique spreading techniques. Brundage said the Kimwolf operator(s) have been trying to build a command and control network that can’t easily be taken down by security companies and network operators that are working together to combat the spread of the botnet.

Brundage said the people in control of Kimwolf have been experimenting with using I2P and a similar anonymity network — Tor — as a backup command and control network, although there have been no reports of widespread disruptions in the Tor network recently.

“I don’t think their goal is to take I2P down,” he said. “It’s more they’re looking for an alternative to keep the botnet stable in the face of takedown attempts.”

The Kimwolf botnet created challenges for Cloudflare late last year when it began instructing millions of infected devices to use Cloudflare’s domain name system (DNS) settings, causing control domains associated with Kimwolf to repeatedly usurp AmazonAppleGoogle and Microsoft in Cloudflare’s public ranking of the most frequently requested websites.

James said the I2P network is still operating at about half of its normal capacity, and that a new release is rolling out which should bring some stability improvements over the next week for users.

Meanwhile, Brundage said the good news is Kimwolf’s overlords appear to have quite recently alienated some of their more competent developers and operators, leading to a rookie mistake this past week that caused the botnet’s overall numbers to drop by more than 600,000 infected systems.

“It seems like they’re just testing stuff, like running experiments in production,” he said. “But the botnet’s numbers are dropping significantly now, and they don’t seem to know what they’re doing.”

[$] Evolving Git for the next decade [LWN.net]

Git is ubiquitous; in the last two decades, the version-control system has truly achieved world domination. Almost every developer uses it and the vast majority of open-source projects are hosted in Git repositories. That does not mean, however, that it is perfect. Patrick Steinhardt used his main-track session at FOSDEM 2026 to discuss some of its shortcomings and how they are being addressed to prepare Git for the next decade.

postmarketOS FOSDEM 2026 and hackathon recap [LWN.net]

The postmarketOS project has published a recap from FOSDEM 2026, including the FOSS on Mobile devroom, and a summary of its post-FOSDEM hackathon. This includes decisions on governance and the project's AI policy:

AI policy: our current AI policy does not state that we forbid the use of generative AI in postmarketOS, so far this document just lists why we think it is a bad idea and misaligned with the project values. We discussed this and will soon change it (via merge request) to clearly state that we don't want generative AI to be used in the project. It was also noted that currently the policy is too long, it would make sense to split it into the actual policy and still keep, but separate the reasoning from it.

[...] Power delegation and teams: in over two hours we discussed how to move forward with [postmarketOS change request] PMCR 0008 to organize ourselves better, and how it fits with soon having a legal entity. We figured that we need to rename "The Board" (which is currently for financial oversight) to "Financial Team", as we will soon have a new board for the legal entity. In the end our idea was to have the new board refer to an "assembly" for all important decisions, and this "assembly" would just be all Trusted Contributors in postmarketOS. The Core Contributors team would be dissolved in favor of having several topic-specific teams (a lot of which we already have, such as the infra team). This way we would have a very flat decision structure. The PMCR will be updated soon and discussed further there. Casey also asked on fedi for further feedback and got a lot of input.

Other topics include reaching out to resellers to sell phones with postmarketOS preinstalled, security, and more.

Ted Lasso [Judith Proctor's Journal]

 Having zero interest in football, I never would have tried a comedy series based around an American football coach working for an English soccer team...

But 'Replyhazy' suggested I try it while I have Apple TV, and I absolutely love it!  It's funny, it's warm-hearted and it has some great characters.

It may not be realistic, but most of the characters are really thoughtful about their relationships - men actually listen to what their girlfriends are telling them and act maturely.

Friendships are built that really have meaning.  Villains are relatively few, but they make up for it by being delightfully over the top.  Anthony Head, as the football club owner's ex-husband, does a wonderful job as a charming, womanising scumbag!

I think my favourite character is actually Trent Crimm, the newspaper reporter. acted by James Lance.  He starts as a minor character, only in some episodes, and is a full-time regular by the end of series 3.

But there are lots of great characters who you grow to love and appreciate.

I even enjoyed watching the football....



comment count unavailable comments

15:14

Link [Scripting News]

A fair number of people make a stop at news.scripting.com every day these days. I want to make some improvements, I think it can be made a bit faster. And I want to make it easier for anyone to create a site like that, for others to use. I think every news org should have one of those, to tell your readers who you read. Work together, we need it as we reboot the news. This is will be an alternative to twitter-style news readers, which took over the leading-edge from RSS feed readers, twenty freaking years ago. I think there should be a new news paradigm every couple of decades at least.

Link [Scripting News]

Found this excellent review of Twitter by Anil Dash in early 2007. I'd be interested in reading other early reviews of Twitter written by bloggers.

Link [Scripting News]

Twitter started in July 2006. I was an early user, and a fan. Found this excellent review of Twitter by Anil Dash in early 2007. I'd be interested in reading other early reviews of Twitter written by bloggers.

Link [Scripting News]

Each podcast shownotes page now has a link, at the bottom, to the home page of the shownotes site, which has a list of all podcasts in the series. There's a lot of good stuff in the previous episodes.

14:56

The Human Lifespan Probably has an Upper Limit … and Why That’s Good [Economics from the Top Down]

Your browser does not support the audio tag.

Download: PDF | EPUB | MP3 | WATCH VIDEO

We are at war with death and its causes.
We are building towards an infinite horizon.

Bryan Johnson

A common theme in science fiction is that people of the future will live far longer than folks today. The reasoning goes something like this. Historically, human life expectancy was short — often under 30 years. But today, in some wealthy countries, life expectancy is pushing into the upper 80s. Given this trend, it seems possible that the human lifespan could continue to grow forever.

Unfortunately, this thinking is probably wrong. While plausible on the surface, it misunderstands the nature of how the human lifespan has been extended.

The backstory is that for most of human history, about half of all children died before age 15. For tens of thousands of years, humans made essentially no progress at civilizing this gauntlet of youth. But today, things are different. With the help of modern science, the vast majority of children now reach adulthood. As a consequence, life expectancy at birth has exploded.

What has hardly budged, though, is life expectancy at the century mark. Or put another way, while humans have made great strides at allowing the young to survive, we’ve made virtually no progress at halting the march of old age. True, we can imagine a future in which we slow aging; but today, there’s no sign of such an elixir. And so we are faced with a simple mathematical problem; as long as aging remains inexorable, there is likely a natural upper limit to the human lifespan.

And that’s probably a good thing. You see, if the elixir of life were actually discovered, the risk is that the spoils of longevity would be hoarded by the rich. Thankfully, the opposite is true today. Indeed, one of the most stunning features of longer life expectancy is that it makes the human lifespan more equal.

Life expectancy explodes

To dive into the science of life expectancy, let’s review some recent history. For humans, the last two centuries have been the anthropic equivalent of the Cambrian explosion. For thousands of years prior, the pace of human social evolution was glacial. Then, with the onset of the industrial revolution, virtually every aspect of the human experience changed, including how long we live.

For some context, at the turn of the 19th century, global life expectancy at birth was under 30 years. Today, it is well over 70 years. Figure 1 shows this life-expectancy explosion, which came mostly in the last century.

Figure 1: The march towards longer living. The extension of human life expectancy began in earnest in the 19th century, but accelerated during the 20th century. Today, world life expectancy at birth is more than forty years greater than it was in 1800. Note that in this chart, annual data begins in 1950, so we don’t see the impact of the two world wars. But we do see the global impact of the Great Chinese Famine (induced by Mao’s ‘Great Leap Forward’), as well as the more recent carnage caused by the COVID-19 pandemic. [Sources and methods]

Looking at this remarkable extension of the human lifespan, we naturally wonder what lies ahead. One possibility is that the pattern over the last century continues indefinitely. That’s easy enough to extrapolate. On average, each new year of the 20th century brought a quarter-year extension to global life expectancy at birth. If this ascent continues, global life expectancy will reach 91 years by 2100. And by the mid 24th century (when the events in Star Trek: The Next Generation supposedly take place), global life expectancy will surpass 150 years. No doubt many folks (including me) would like to live in this sci-fi future. Sadly, it’s almost certainly a fantasy.

For one thing, the continued march of longer living depends in large part on continuous scientific progress, which is not guaranteed. I mean, just look at what the Trump regime is doing today. Forget new science … Trump is busy demolishing basic public health policies. If this demolition doesn’t stop, Americans are almost surely going to see their life expectancy continue (yes, continue) to drop.1

Let’s suppose, however, that this stupidity is a brief hiccup, and that scientific progress continues for centuries come. Even then, it’s unlikely that life expectancy will rise indefinitely. Perhaps the easiest way to see the problem is to look at trends in life expectancy not at the beginning of life, but near its end, where the picture is less sanguine.

Figure 2 illustrates this end-of-life story. Here, I’ve plotted global life expectancy for individuals at age 100. What’s notable is the lack of progress. In 1950, centenarians could expect to live for another 1.1 years, on average. By 2023, this life expectancy had been extended by just 0.4 years. In other words, despite the massive 20th-century gains in the average human lifespan at birth, longevity amongst the extremely old hardly budged. It’s this failure to extend the lifespan of the very old which suggests an upper limit to human life expectancy.

Figure 2: Meager gains — world life expectancy at age 100. Unlike life expectancy at birth, which rose steeply throughout the 20th century, world life expectancy at age 100 remained almost unchanged, rising by just 0.4 years from 1950 to 2023. The caveat is that centenarian life expectancy is difficult to estimate, largely because centenarians are rare. So the data here should be treated with appropriate uncertainty (especially the odd life-expectancy jump during the mid 1970s, which smells of a change in methodology). At any rate, what seems uncontroversial is that today, centenarians don’t live much longer than they did in 1950. [Sources and methods]

A tale of two gauntlets

To understand the historical route to longer life expectancy, it’s helpful to think of the human lifespan as having two survival gauntlets — a gauntlet of youth and a gauntlet of old age.

The gauntlet of youth begins at birth, which is one of the most dangerous periods of life. Historically, many individuals died during infancy, and only about half of children reached adulthood. In other words, the gauntlet of youth was brutal. Fortunately, things have changed. In fact, reducing infant mortality is the most important factor in increasing human life expectancy.

Figure 3 illustrates. Here, the horizontal axis shows life expectancy at birth, measured for every country since 1950. The vertical axis shows the rate of infant mortality (the portion of infants that die before age one). What we find is that rising life expectancy comes with a massive decline in infant mortality. For example, when life expectancy is below 30 years, about 20% of infants die before age one. But when life expectancy is over 80 years, infant mortality is more than 100 times lower.

Figure 3: The collapse of infant mortality. Reducing infant mortality is the most important factor in increasing life expectancy at birth. Here, each point represents a country, observed between 1950 and 2023. The vertical axis shows the infant mortality rate — the portion of infants that die before age one. (Note the log scale.) The horizontal axis shows life expectancy at birth. [Sources and methods]

The secret to cutting infant mortality turns out to be quite simple, largely because the bodes of the young are designed to survive. Basic sanitation, basic infection control, and basic medical interventions at birth go a long way towards keeping newborns alive.2 And if children survive infancy, there’s a good chance they’ll reach adulthood.

When we turn to the gauntlet of old age, though, the same principles do not hold. Yes, modern medicine can treat some of the downstream effects of old age (like cancer, heart disease, and diabetes). But as far as halting aging itself, science has proved impotent. And that’s not surprising. Aging likely has deep evolutionary roots in metabolism itself … roots which are not easily upended.3

In short, unlike the bodies of infants, which are designed to live, the bodies of the extremely old are riddle with the insults of age. Which is why it’s unsurprising that old-age mortality rates remain intransigent.

Figure 4 illustrates the lack of progress. Here, I’ve plotted mortality rates at age 99 as a function of population life expectancy at birth. Across more than seven decades of rising life expectancy, mortality rates at age 99 are barely halved. So yes, there has been humble progress at taming the gauntlet of old age … but it is nothing like the success at civilizing the gauntlet of youth.

Figure 4: Stubbornly high mortality rates at age 99. Unlike infant mortality, which plummets with rising life expectancy (see Figure 3), mortality rates at age 99 don’t move much. Here’s the modest pattern across all countries between 1950 to 2023. On average, a five decade increase in life expectancy at birth comes with a halving of mortality at age 99. [Sources and methods]

The mathematics of aging

To understand the limits of the human lifespan, it’s helpful to explore the mathematics of aging — by which I mean the statistics associated with getting older. Sadly, age makes almost everything worse.

Professional athletes are a conspicuous example. Athletes typically reach their prime in their mid 20s, after which their performance gradually declines. (This pattern is known as the aging curve.) By age 40, most athletes have retired.4

Elsewhere, the insults of aging are less visible, but still detectable. Of course, the most insulting effect of aging is death itself. From adulthood onward, the risk of death increases inexorably with age. Figure 5 illustrates the pattern in the United States.

Here, the blue curves shows how mortality rates change with age. Note the J-shaped pattern, which appears when we plot mortality rates on a logarithmic scale. At birth, mortality rates are quite high, but drop quickly for the individuals who survive infancy. By age 10, mortality rates reach a lifetime low. From then on, things get worse. During the teen years, mortality rates rise, largely because teens take bigger risks than children.5 And from adulthood onward, mortality rates climb inexorably. This ascent marks the statistical march of senescence.

Figure 5: Mortality rates by age in the United States. When plotted on a logarithmic scale, age-specific mortality rates have a characteristic J shape. Mortality is high at birth and then shrinks during early childhood. It spikes again during teen years, after which it rises perpetually with adult age. [Sources and methods]

Shifting the mortality-rate spectrum

I highlight these age-specific mortality patterns because they are key to understanding the human lifespan. At the most basic level, life expectancy rises because mortality rates fall.

Figure 6 shows this tendency, measured across all countries between 1950 and 2023. Here, I’ve plotted age-specific mortality rates as a function of population life expectancy (shown in color). Let’s run through the evidence.

First, note that regardless of life expectancy, all the mortality-rate curves have a ‘J’ shape. Across every population, the risk of death is high at birth, low during early adolescence, and then rises inexorably during adulthood. Second, note that higher life expectancy comes with lower mortality rates at every age. This connection is a logical necessity; to live longer, people must die less. Third, and most importantly, note that mortality-rate reductions are not even across ages; instead, the reductions are large during youth and small during old age.

Figure 6: Living longer by dying less — the spectrum of age-specific mortality rates. Each colored curve shows mortality rates as a function of age, measured for populations with a specific life expectancy (indicated by color). As life expectancy rises, mortality rates fall. However, the reduction is most pronounced among youth, and least pronounced among the elderly. Note: to create the mortality curves, I have binned country-year observations by life expectancy, and then averaged the age-specific mortality rates within each bin. [Sources and methods]

It is this last fact that is crucial for understanding the limits of the human lifespan. If greater life expectancy was achieved by taming both the gauntlet of youth and the gauntlet of old age, there would be hope for an unbounded lifespan. However, all of the evidence points to the opposite scenario. While we have succeeded at reducing mortality among the young, mortality among the old remains stubbornly high.

Figure 7 visualizes this intransigent pattern, which I’ve dubbed the ‘funnel of death’. What I’ve done here is plot age-specific mortality rates relative to the baseline for a population with a life expectancy of 35 years. (This mortality-rate baseline corresponds to the dashed horizontal line.) The colored lines illustrate how mortality rates shift (downward) as population life expectancy increases.

The resulting triangular shape highlights the lopsided nature of mortality-rate reductions. The most spectacular mortality-rate reductions come at birth. But from infancy onward, these gains are gradually winnowed away until we reach age 90 and up. There, regardless of population life expectancy, individuals are funnelled relentlessly towards death.

Figure 7: The funnel of death. Each colored curve plots the reduction in age-specific mortality rates, measured relative to a population with a life expectancy of 35 years. Longer life expectancy comes with a huge reduction in infant mortality. But for the remainder of life, these gains are winnowed away, until the elderly are funnelled towards certain death, regardless of population life expectancy. Note: to create the mortality curves, I have binned country-year observations by life expectancy, and then averaged the age-specific mortality rates within each bin. [Sources and methods]

The upper limits of the human lifespan

Because the gauntlet of old age remains intransigent, it follows that the human lifespan probably has an upper limit. Here are some ways to estimate it.

A popular approach is to assume that the old-age gauntlet narrows perpetually, until it eventually collides with certain death. With this model, we can estimate the maximum possible lifespan of a human individual.

Figure 8 illustrates this method using US data in 2021. Here, the blue curve shows how US mortality rates rise as a function of age. To model this march of senescence, we fit the mortality-rate data with an exponential function (shown in red). Then we extrapolate this function until it crashes into the mortality rate of 100%. At this point, death becomes certain, which means we have estimated the maximum lifespan of an individual in the given population. For the US in 2021, this maximum lifespan is about 113 years.

Figure 8: Crashing into certain death — the exponential model of the old-age gauntlet. This chart illustrates one method for estimating the maximum human lifespan. Given empirical data for age-specific mortality rates (here, I’ve used US data, shown in blue), we fit the late-adulthood data with an exponential function (red). Then, we extrapolate the trend until it crashes into certain death — the point where mortality is 100%. The age at which this collision occurs is an estimate for the maximum lifespan for individuals within the population. For the US in 2021, this collision happens at age 113. [Sources and methods]

While this exponential method is conveniently simple, it’s also quite unrealistic. In my mind, there is no compelling reason to suppose that the human body has an insurmountable maximum lifespan. Yes, death may become more probable with older age … but imminent death is never certain. Which is to say that we need a more plausible way to model mortality rates during extreme old age.

A better approach is to treat the gauntlet of old age as something that narrows perpetually, but never actually ‘touches’ certain death. A simple way to model this narrowing is with a logistic function. Figure 9 illustrates the revised method.

As before, we fit our model to empirical mortality rates during late adulthood. Then we use the model to extrapolate the pattern into extreme old age. The difference is that with our logistic model, mortality rates bend towards certain death, but never actually touch it. As a consequence, this model presumes that there is no maximum human age; continued survival is always a matter of (increasingly minute) probability.

Figure 9: Approaching, but never touching, certain death — the logistic model of the old-age gauntlet. This chart illustrates a second (improved, in my opinion) method for extrapolating mortality rates into extreme old age. Here, I fit late-adulthood mortality rates with a logistic model. When we use this model to extrapolate mortality rates into old age, it bends towards the certain death mark, but never touches it. Consequently, this model does not define a maximum lifespan for individuals. But it does provide a way to measure the onset of the old-age gauntlet, which I define as the age when mortality rates cross the 50% mark. For the US in 2021, this threshold occurs at age 106. [Sources and methods]

While this logistic model doesn’t define a maximum lifespan, it does provide a way to define the onset of the old-age gauntlet — an onset that sets an effective upper bound on human life expectancy.

Here’s how it works.

I’ll define the ‘old-age gauntlet’ as the point when death becomes more probable than survival. This threshold occurs when age-specific mortality rates exceed 50%. In Figure 9, I’ve marked the gauntlet zone with the red shaded region. Now, in the United States, the empirical data never enters this region. But supposing that our logistic model is sound, we can extrapolate the trend, and estimate the age at which mortality rates exceed 50%. In the US in 2021, I find that this old-age gauntlet begins at about age 106.

So what should we make of this onset? Well, because the old-age gauntlet is a statistical concept, it says little about the survival of specific individuals. (In a large population, a small fraction of people will defy the odds and live past age 106.) That said, the onset of the old-age gauntlet is important, because it signals the effective upper limit to human life expectancy in the given population.

The logic works as follows. Once individuals enter the old-age gauntlet, death becomes more probable than survival, which means that their life expectancy is extremely short. (It is measured in months, not years.) Now, imagine a future society in which virtually everyone lives to age 105, yet the old-age gauntlet remains entrenched at age 106. In this scenario, the population life expectancy would remain close to 106, simply because so few people would surpass this age.

Now, we can quibble about whether this scenario is likely. (If most people survive to age 105, then the onset of the old-age gauntlet might get pushed back.) But the point is that the mathematics are clear: the onset of the old-age gauntlet sets the effective upper limit to the average human lifespan.

The old-age gauntlet has a sticky onset

Having defined a way to estimate the onset of the old-age gauntlet, let’s see how these estimates vary with population life expectancy at birth. Figure 10 shows my measurements.

As life expectancy rises, the onset of the old-age gauntlet slowly recedes. However, the recession has an intriguing ‘Z’ shape, with a curious plateau at age 102. Why?

Figure 10: The sticky onset of the old-age gauntlet. This chart shows my measurements for the onset of the old-age gauntlet (the adult age where mortality rates exceed 50%), measured as a function of life expectancy at birth. Note: each point represents a binned estimate, in which I first group mortality-rate observations by population life expectancy, average the age-specific mortality rates, and then fit the resulting data with a logistic function, which I use to infer the onset of the old-age gauntlet. [Sources and methods]

I have some thoughts about where this Z-shaped pattern comes from. But first, let’s get to the bad news.

Even if onset of the old-age gauntlet continues to recede as life expectancy pushes into the 90s, the current trend implies a maximum trajectory. The reason is quite simple. By definition, life expectancy at birth cannot (significantly) exceed the onset of the old age gauntlet. But according to current trends, the old-age gauntlet is retreating much slower than life expectancy is rising, which means that the two numbers will eventually collide. If this trend continues, I estimate that the collision will occur at age 117. (See Figure 13 in the appendix for more details.) I consider this age a reasonable estimate for the maximum possible human life expectancy. Time will tell if this prediction is correct.

Back to the Z-shaped trend in Figure 10. What causes it? One possibility is that it’s an artifact of the way I’ve analyzed the data. (I run some consistency checks in the appendix, and don’t find any obvious problems.) But for arguments sake, let’s suppose that the Z-shaped pattern is a real feature of the human experience. If so, an intriguing possibility is that the plateau region illustrates some sort of ‘natural’ maximum for human life expectancy.

Of course, the word ‘natural’ needs some caveats. In many ways, extreme old age is not ‘natural’, in the sense that wild animals rarely reach this stage of senescence. In the wild, there’s too much competition, too many predators, and too many diseases for animals to reach ‘nursing-home’ age. So paradoxically, the ‘natural’ limits of an animal’s lifespan only reveal themselves in the safety of captivity, where individuals are able to die of old age.

By analogy, perhaps we can think of the fruits of industrial civilization as creating a ‘captivity’ zone in which humans can live — a zone that isolates us from the insults of the wild. In this captivity zone, the human body naturally hits its lifespan limit shortly after age 100. With intensive medical intervention, the body can survive for a bit longer. And of course, if conditions of war, famine and pandemic intervene, bodies age more rapidly. But in the safety of the captivity zone, we see evidence for a ‘natural’ maximum lifespan.

(Am I confident in this interpretation? No. I’m throwing it out there mostly as an empirical provocation.)

The march towards equality of life

One of the oddities of the human species is that we are the only animal that is cognizant of its own mortality. Perhaps there is a reason for that.

As a rule, animal reproduction is a killing field. For example, when a female salmon lays eggs, about 99.9% of these potential offspring die before reaching adulthood. Even among our closest evolutionary relative, the chimpanzee, survival to adulthood is generally worse than a coin flip.6 So if other animals reflected on their life prospects at birth, they might be horrified at the injustice.

Of course, throughout most of human history, lifespan injustice was the norm. Many children died young, while relatively few people reached old age. Even as recently as the late 20th century, episodes of vast injustice occurred. For example, in the 1980s, South Sudan endured a brutal civil war, in which food blockades were a common weapon. Tens of thousands died in the ensuing famines, with most of the toll paid by children.

In Figure 11, the top panel quantifies the carnage. Here, the red curve plots the age distribution at death in 1988 South Sudan. During the depths of the famine, the majority of the dead were children under age 10. (In that year, life expectancy at birth was just 11 years.)

Figure 11: Death at opposite ends of life. This chart shows individuals’ age distribution at death in two regions with opposite extremes. The top panel shows the youth-heavy distribution in South Sudan in 1988 — a year marked by a brutal war-induced famine. The resulting death toll was dominated by children. The bottom panel shows the elderly-heavy death distribution in Monaco in 2023, which has the highest life expectancy on record. [Sources and methods]

The good news is that such tragedies are now rare, and the root causes of childhood mortality are easily preventable. The result is that in the wealthiest countries, deaths now pile up on the opposite end of life. The most extreme example of this reversal comes from Monaco in 2023. The bottom panel in Figure 11 shows this demographic upheaval. In modern Monaco, most adults survive to old age, and the most common age at death is 90.7

With these two extremes in mind, we should ask ourselves why the famine in South Sudan is considered ‘tragic’, while the old-age pileup in Monaco is not. Yes, the answer to this question is fairly obvious. But let’s go ahead and spell it out.

The human notion of ‘tragedy’ seems to be tied (at least in part) to the existence of plausible counterfactuals. For example, it is ‘tragic’ for children to die of starvation, because the alternative — not starving — is easy to envision. Likewise, it is a tragedy when a young parent dies of cancer, because again, we can imagine a world in which the parent survived. But when it comes to death at old age, we find it difficult to imagine an alternative (science fiction notwithstanding). Indeed, for all we know, there is no alternative to biological aging. And so we do not consider death from old age a ‘tragedy’. It is simply the natural course of life.

One way to frame this morality is that it describes perhaps the most basic form of human right — the right to die at roughly the same old age. Of course, nature itself cares nothing for this right. But we humans have made it a fundamental social goal. And we have gone a tremendous way towards achieving it.

Let me illustrate this success by quantifying the inequality of the human lifespan, measured with the Gini index. When this Gini index is high, individual lifespan is unequal; most people die young, while only a lucky few reach old age. In contrast, when the lifespan Gini index is low, it indicates that human lifespan is equal; most people die at close to the same (old) age.

With this lifespan Gini index in hand, we can quantify what is perhaps the most stunning yet under-recognized pattern in all of demography. It turns out that the task of extending human life expectancy has been a project of bringing remarkable equality to the human lifespan. Figure 12 shows this pattern. As life expectancy rises, lifespan inequality falls.8

Figure 12: Inequality of the human lifespan. The project of extending human life expectancy is overwhelmingly one of making individual lifespans more equal. Here, the vertical axis shows lifespan inequality among individuals, measured using the Gini index. And the horizontal axis shows population life expectancy at birth. Each point represents a country-year observation measured between 1950 and 2023. When life expectancy is low, most individuals die young while a few live to old age, hence lifespan inequality is high. But when life expectancy is high, most individuals survive to old age, hence lifespan inequality is low. [Sources and methods]

I should add that this wire-tight trend is the sort of pattern that emerges only when there is no social ‘choice’ involved. True, humans choose to extend our lifespans. However, the route we take is non-negotiable. We extend life expectancy almost entirely by keeping the young alive, and not by extending the lifespan of the extremely old. The consequence of this non-negotiable strategy is that human lifespan must become more equal as life expectancy increases.

Now, the dream of longevity gurus is to make death at old age optional. Of course, there is no hint that the elixir of life exists. But if it were discovered, I think that it would almost surely be disastrous. Let me put it this way. Today’s billionaires are able to amass extreme wealth. They are able to accumulate immense power. And they are able to bequeath these gains to their children. But the one thing that billionaires cannot do is hoard lifespan itself.

But what if they could?

Imagine a world in which CEOs are as immortal as the corporations they command. Imagine a world in which the poor are short-lived, expendable ants. Imagine a world in which lifespan is inherited at birth. I cannot imagine a worse hell.

Of course, it’s possible that humans of the future will be able to distribute the fruits of extended living with justness and equality. But then again, given the debauchery of today’s elites, this utopia doesn’t seem particularly likely. Which is to say that while I would personally be quite pleased to live much longer than a century, I’m quite certain that I won’t. Nor, for that matter, will anyone else.

At least for now, I think this human finitude is a good thing.


Support this blog

Hi folks, Blair Fix here. I’m a crowdfunded scientist who shares all of my (painstaking) research for free. If you think my work has value, consider becoming a supporter. You’ll help me continue to share data-driven science with a world that needs less opinion and more facts.

member_button


Stay updated

Sign up to get email updates from this blog.



This work is licensed under a Creative Commons Attribution 4.0 License. You can use/share it anyway you want, provided you attribute it to me (Blair Fix) and link to Economics from the Top Down.


Estimating the maximum possible human life expectancy

Here is an intriguing way to estimate the maximum possible human life expectancy. Figure 13 shows how the onset of the old-age gauntlet relates to life expectancy at birth. (This is the same data as in Figure 10.)

Let’s suppose that current trends continue. For example, when life expectancy climbs above 70 years, we see that the onset of the old-age gauntlet tends to retreat. Let’s imagine that this retreat continues, as illustrated by the red line. While one might think that this extrapolation can rise forever, it actually cannot.

The problem is that given current trends, the onset of the old-age gauntlet recedes more slowly than life expectancy advances, leading to an eventually collision in the two values. This collision signals the maximum possible human life expectancy, since by definition, life expectancy cannot significantly exceed the onset of the old-age gauntlet. Given current trends, I estimate that this collision will occur at age 117.

Figure 13: Life expectancy collides with the onset of the old-age gauntlet. Here is a simple way to estimate the maximum possible life expectancy of the human species. Blue points show the empirical relation between the onset of the old-age gauntlet (the age when death becomes more likely than survival) and life expectancy at birth. Suppose we extrapolate the trend on the right, as illustrated by the red curve. This extrapolation hits a logical limit when life expectancy at birth collides with the onset of the old age gauntlet (since the former cannot logically exceed the latter). This collision marks the maximum possible human life expectancy, which I estimate here to be about 117 years. [Sources and methods]

A consistency check

I find it quite intriguing that the onset of the old-age gauntlet has a Z-shape pattern when measured as a function of life expectancy at birth. The caveat is that I’m not confident that this pattern is a ‘real’ thing.

For example, it’s possible that the dynamics of infant mortality somehow ‘muddy’ patterns which are revealed at old age. One way to remove this effect is to switch from measuring life expectancy at birth to measuring life expectancy at mid-life — say age 40.

As Figure 14 shows, when we make this shift, we still find that the onset of the old-age gauntlet retreats with a Z-shaped pattern (although a more muted one). Interesting, the plateau again occurs at around age 102. Notably, we also find an implied maximum life expectancy, determined by the collision between life expectancy and the onset of the old-age gauntlet. When I extrapolate the right-hand portion of the ‘Z’ (above the age-forty life expectancy of 35 years), I calculate that this collision will occur at age 123.

Figure 14: Onset of the old-age gauntlet as a function of life expectancy at age 40. This chart is conceptually the same as Figure 10, except that instead of grouping the mortality-rate data by life-expectancy at birth, I group it by life expectancy at age 40. Within each life-expectancy bin, I then fit a logistic function to age-specific mortality rates about age 70, and use this function to infer the onset of the old-age gauntlet. [Sources and methods]

Old-age frauds

One last caveat to the analysis here is that the demography of the extremely old is fraught with uncertainty caused by clerical errors and outright fraud. In two recent papers, researcher Saul Justin Newman outlines the reasoning (and the evidence):

The demographic problem stems from the finitude of the human lifespan, and by the fact that exceedingly few people live past age 100. The (unintuitive) consequence is that the population of super-centenarians is likely full of fraudsters.

To see how the math works, consider the following thought experiment. Imagine that among the general population, a tiny fraction of people inflate their age by a decade in order to collect an early pension. At first, these fraudsters are vanishingly rare. But as time passes, the fraudsters become more prominent within their age cohort. That’s because, being a decade younger than their truth-telling counterparts, the fraudsters have significantly lower death rates. And so with each passing year, more truth-tellers die, leaving behind the population of fraudsters. When we pass the century mark, so many of the truth-tellers have died that only the fraudsters are left. Indeed, it is not unrealistic to think that everyone who claims to surpass age 110 is lying.

To back up the claim that many super-centenarians are fraudsters, Newman musters some noteworthy statistics. For example, in the United States, Newman finds that the number of super-centenarians per capita peaked just before the introduction of exhaustive birth certificates. And across regions in England, Newman finds that the number of super-centenarians per capita is associated with several measure of social ill. Regions with more super-centenarians tend to have higher crime, greater health deprivation, and bizarrely, fewer people over aged 90. In short, super-centenarians seem to be most common in environments that are conducive to pension fraud. So if you’d like advice about how to reach age 110, probably the best thing you can do is lie about your age.

Tellingly, some of the (ostensibly) oldest humans have had rather unhealthy habits. For example, Jeanne Calment, the French woman who is touted as the oldest human ever, apparently “smoked daily, drank daily, and ate around a kilogram of chocolate a week”. So either Calment was immune to the well-known effects of smoking and drinking … or she was a complete fraud.

The latter is surprisingly likely. A plausible scenario is that when Calment’s mother died in 1934, Calment assumed her identity to avoid paying inheritance tax. (Calment subsequently destroyed all her family documents.) A few years later, France was upended by the Nazi occupation, which would have made an identity switch easier to achieve. Of course, it is impossible to know the truth about Calment’s claims. But I find it more plausible that the smoking/drinking Calment died at the old (but still realistic) age of 99, than to have attained the unheard of age of 122.

At any rate, Newman convincingly argues that scientists who study the extremely old are gripped by a strong dose of wishful thinking, and that demography statistics past age 100 are rife with fraud.

Sources and methods

World life expectancy at birth (Figure 1)

Life expectancy data is from Our World in Data.

US mortality rates by age (Figures 5, 8, and 9)

US age-specific mortality rates in 2021 are from the CDC, National Vital Statistics Reports. I used data from Table01, conveniently buried on this FTP server. I used series qx for age-specific mortality rates.

International life tables

All other charts in this essay use life-table data from the United Nations World Population Prospects 2024. I used the table ‘Single age life tables up to age 100 – Both Sexes’. Specific calculations are as follows:

  • World life expectancy at age 100 (Figure 2): Series ex gives life expectancy by age for each country/year. I calculate the global life expectancy at age 100 by averaging across countries, weighted by their population. I use population data from Our World in Data.
  • Life expectancy at birth: series ex (life expectancy by age) measured at age 0.
  • Infant mortality rate (Figure 3): series qx (age-specific probability of dying) measured at age 0.
  • Mortality rate at age 99 (Figure 4): series qx (age-specific probability of dying), measured at age 99.
  • Mortality-rate curves by population life expectancy (Figure 6): mortality-rate curves use series qx (age-specific probability of dying). To smooth the mortality curves, I bin the qx data by life expectancy at birth, grouped into life-expectancy intervals of 0.2 years. Then I take the age-specific geometric mean of the qx data within each life-expectancy bin. In Figure 7, I normalize these curves against the data for life expectancy = 35 years.
  • Onset of the old-age gauntlet (Figure 10 and 13): First, I use the steps above to average the age-specific mortality-rate data (qx) by life expectancy bins. Then within each bin, I keep data for age 70 and up. If this empirical data contains a point where mortality rates exceed 50%, I use the R approx function to infer the exact onset of the old-age gauntlet. If the empirical mortality-rate data never crosses the 50% threshold, I fit it with a logistic function (defined by the R function plogis). I then estimate the onset of the old-age gauntlet using the best-fit logistic function.
  • Old-age gauntlet consistency check (Figure 14): I use the same steps as for Figure 10, but instead of binning the data by life expectancy at birth, I bin it by life expectancy at age 40. From there, the same methods apply.
  • Age distribution at death (Figure 11): I use series dx — number of deaths by age. 1988 South Sudan and 2023 Monaco have the lowest and highest (respectively) life expectancies recorded in the UN data.
  • Gini index of individual lifespan (Figure 12): I calculate the Gini index of individual lifespan using series dx — number of deaths by age. (The age distribution at death is equivalent to the distribution of individual lifespans in the given year.) To calculate the Gini index, I first create a Lorenz curve for the age distribution at death. From this Lorenz curve, I measure the Gini index by calculating the area under the curve. (To calculate this area, I use the auc function from the R library pracma.)

    Note that because the empirical data is bounded at age 100, it introduces a slight bias in the lifespan Gini index for regions with a high life expectancy. (You can see this bias in Figure 11, where the age distribution at death in Monaco ends abruptly at age 100.) In Figure 12, I’ve corrected for this problem by fitting the empirical mortality-rate data (qx in each country/year) with a logistic function, and then using this function to extrapolating the dx series well past age 100. It is a fun exercise in computation, but one that actually makes virtually no difference to the resulting lifespan Gini indexes.

Notes

  1. American life expectancy peaked in 2014 and then plateaued for several years before plunging during the pandemic. It has not since recovered to pre-pandemic levels.↩
  2. Until recently, cities were demographic sinkholes where death rates exceeded birthrates. Given the lack of sewers, and the tendency for water wells to get laced with cholera, it’s not hard to see why. Today, we associate long living with fairly advanced forms of healthcare. But early on, the gains came from simple things like sewage systems and water treatment. (Vaccines and antibiotics also made a huge difference.)

    It’s also worth noting that once the perils of contaminated water were discovered (by John Snow in 1855), it took major prodding to get governments to actually do something about the problem. For example, see George Pinwell’s 1866 cartoon Death’s Dispensary.↩

  3. Regarding the metabolic roots of aging, see Nick Lane’s recent book Transformer: The Deep Chemistry of Life and Death. Lane argues that the torrent of cellular metabolism inevitably creates damage, which accumulates with time. In this light, aging is not a design feature, so much as a evolutionary side effect which natural selection can tweak but not remove.↩
  4. Since my topic here is life expectancy, it’s worth noting that there’s a connection between the rate of athletic performance decline and overall life expectancy. A 2023 study by Saul Newman found that among professional baseball players, a rapid age-related decline in performance is associated with a shorter lifespan.↩
  5. In the US, the leading causes of teen death are, in descending order, unintentional injuries (mostly car crashes and drug overdoses), homicide, and suicide.↩
  6. Walker and colleagues estimate that female chimpanzees reach sexual maturity at about age 11. And Hill and colleagues estimate that about 43% of females survive to this age. For males, the survival rate to age 11 is even worse, at about 37%.↩
  7. It’s worth noting that Monaco is a tiny city-state that serves as a tax-haven for Europe’s super wealthy. So it’s debatable whether Monaco’s long life expectancy is actually its own accomplishment. It could be more of a migration effect, whereby the (long-lived) super-rich move there to retire. Still, Monaco’s population illustrates the current upper extreme of human life expectancy.↩
  8. One way to think about this newfound equality in the human lifespan is that we are now the masters of our own ‘natural’ selection. That is, across all species, the gauntlet of youth is typically a major force for evolution, weeding out the ‘unfit’ long before reproductive age. Today, humans have largely succeeded in removing this selective force. It’s not clear what this achievement means for the future, other than that we are the first species to hold the reins of our own selection.↩

Further reading

Newman, S. J. (2019). Supercentenarian and remarkable age records exhibit patterns indicative of clerical errors and pension fraud. bioRxiv.

Newman, S. J. (2024). The global pattern of centenarians highlights deep problems in demography. medRxiv.

The post The Human Lifespan Probably has an Upper Limit … and Why That’s Good appeared first on Economics from the Top Down.

14:49

Stable kernels for Wednesday [LWN.net]

Greg Kroah-Hartman has unleashed six new stable kernels: 6.18.10, 6.6.124, 6.12.70, 6.1.163, 5.15.200, and 5.10.250. Each one contains important fixes throughout the tree; users are advised to upgrade.

Rewiring Democracy Ebook is on Sale [Schneier on Security]

I just noticed that the ebook version of Rewriring Democracy is on sale for $5 on Amazon, Apple Books, Barnes & Noble, Books A Million, Google Play, Kobo, and presumably everywhere else in the US. I have no idea how long this will last.

Also, Amazon has a coupon that brings the hardcover price down to $20. You’ll see the discount at checkout.

14:28

Agency [Original Fiction Archives - Reactor]

Original Fiction Horror

Agency

Illustrated by Jamie Keenan

Edited by

By

Published on February 11, 2026

0 Share
An illustration of a brass key with a skull-shaped bow against a bright blue sky.

An estate agent is forced to choose between a sale and his humanity when facing the inhuman eldritch forces that feed off rental tenants across the United Kingdom.

Novelette | 10,215 words

Mr. Three arrives fifteen minutes before his appointment, then rings the doorbell repeatedly. Three p.m. is a straightforward instruction, with no ambiguity, yet still the piercing sound ruins my concentration. Perhaps he’s hoping the extra quarter hour will help him discover the secret code. Maybe he’s hoping he can win me over, as if I’ve got anything to do with it at all, as if I’m anything other than a worm wriggling on the hook.

He leans on the doorbell again, an old-fashioned one, just a shrill bell echoing up and down the corridor, vibrating the nails of my headache.

I squint down at my phone, trying to remember the correct sequence of buttons, the glyphs that will let me pay off my credit card with the last of my salary. Has to be today or the interest payments mean baked beans next month. I’m taking slices off my debt pile, clinging on to solvency, just about. But a sale lives or dies on appearances. You win by manifesting the person you want to be—that they want you to be—so I have to bottle it all up for the clients. Mr. Three wants me to be fifteen minutes early. Mr. Three wants things on his time. Mr. Three wants an absolute kicking if he doesn’t stop ringing that bell.

The landlord calls me into the bathroom and shows me the state I’m in. I wet my hair down, shoot my cuffs, and straighten my tie in the cabinet mirror, making the best of myself I can as I peer around the distortions in the glass. It’s a cheap suit, and it never sits right, but it’s all I’ve got. This was my first permanent job straight out of uni and the only one offering a guy with a mediocre degree a hefty salary. I know everyone hates estate agents, but I never had a dream, just my student debt. There’s that second shadow on the wall behind me again, as if the mirror is giving out its own light. No time for that.

I open the front door to find Mr. Three leaning on the garden wall, flicking at his phone in the drizzle. ‘Nice and early, I see. Do you want to come in?’ He looks straight past me into the flat, mumbling as he shakes the rain off his waterproof. He’s lean, well-groomed, dressed in unremarkable office wear—a pastel cotton shirt, black trousers, black leather brogues—a man permeated with the quotidian. He should be Rafe’s client, but Rafe has fobbed him off on me. Single, fortysomething, buying past-sell-by-date pork pies for dinner. I see a man of restraint, routines and structure, regular savings and moderation. Fastidious. Immeasurably predictable. Hardly what the landlord is looking for.

I show him anyway.

The property is the downstairs flat of a Victorian terrace conversion. A long corridor reluctantly reveals a bedroom in the original dining room, a dining room—complete with a jug of wilting daffodils—in the original reception room and a kitchen where it has always been, although the bathroom extension into the garden is new. Fully furnished, integrated dishwasher and washer-dryer, access to the dingy garden shared with the landlord, who occupies the upstairs property. Recently repainted, with a particularly muddy red-brown accent wall in the bedroom, it will be several weeks before the mould becomes visible again, by which point the spores will have permeated the new tenant’s skin completely. They will carry the fungus out into the world, leaving traces of it across the trains, their place of work, their friends’ houses. They will hold it close under their duvet at night and coat their guests with every loving hug.

But Mr. Three is more concerned about break clauses than rising damp. He comments on the very competitive rent for the area. He can imagine his finances all the way to next year, while the ichor of blood sacrifices across centuries runs through the bricks and mortar he covets. He thinks wealth matters, that it will keep him safe. His kind are two a penny.

When I explain that all aspiring tenants must provide a written statement, take a breathalyser test, and provide a drop of blood he merely raises an eyebrow and says, “Is that all? The last place wanted my financial records going back three years.” I have to be more subtle normally, but there’s no risk here. I know the landlord won’t accept him. This meagre man.

I steal his breath, prick his thumb. He’s writing down his true names when the boiler releases a powerful crack. I’ve wasted enough of the landlord’s time. I usher Mr. Three out with the constant babbling of my trade, the next viewing arriving, stacked up all day, terribly sorry, such a popular property, call the office if you want to make an offer.

A gust of wind from upstairs slams the door shut behind him, and the pipes growl and creak around me. It’s got worse lately. Its hunger has been growing. Once, deep into a two-day bender I couldn’t afford with the guys from the agency—an early mistake, to think I could buy my way in—Misha whispered to me, “The more people there are on the planet, the harder they have to fight.” He blanched once he realised he’d said the words out loud, that he’d broken one of the covenants of his class. That was the night they brought me in, in a fit of MDMA brotherhood. In their drug-addled way I think they meant it as a sign of respect, that in another life I could have been one of them. The comedown was harsh, but it paled against Rafe’s grey face in the office the Monday after, when he realised what he’d done.

Things never change. Even though there are more have-nots than ever before, power like Misha’s lies in the illusion. They all live in terror of the landlords, and they all wish they could become one.

The game is bringing fresh meat to the table. Anyone can find tenants. It takes a finer touch to procure a feast.

The landlord keeps me busy after Mr. Three, just because it can. By the time I’ve ushered the prospect out the door and back to whatever grey iteration he calls a life, beetles and flies litter the property and a thick layer of grease is spreading up the kitchen splashback. Owning everything doesn’t stop them being petty.

I spend half an hour scrubbing the kitchen clean again, trying not to imagine what kind of fat it is. It’s stubborn, a bloody red-brown in colour, and the air tastes salty as I work. I sweep up all the insect carcasses, and dust down surfaces I cleaned this morning. I’m sweeping the hallway clean, almost finished, when he comes. It’s a tight feeling in my chest like always, a dank stink of panic before he enters me in that thick rush like I am a glove being ripped by ragged claws a sharp tug down my spine and the fit is snug the weight of a heavy blanket so warm in my bed at nigh—

I am an emperor begging for scraps. This is all you can offer? Do you dare to starve me? To draw my hunger out until I am forced to consume you simply to secure your silence?

Legions have crumbled under my gaze, the blood of continents has poured off my back like rain. This world was born from the darkness of my home. You are my subjects. You are tools at my disposal. You are the salt-and-wort tang of marrow in my throat. Your history is my banquet.

You know what I need. I must feed. Nourishment. To regain my strength and cut your plane asunder and open the door to home. Now, share my hunger, feel what waits behind the curtain. Beneath all you know, under the glimmering disorder of your world.

There, can you feel it?

You know what I need.

I peel my eyes open, my head throbbing. Things slowly come into focus, and I see a bright red streak on the corner of the radiator. Probing gently, I feel a sharp hit of pain above my hairline, my fingertips coming away red. I lift myself from the floor, wadding tissues to the wound to stem the bleeding. I watch the blood run back up the metalwork of the radiator as it is sucked into the bleed valve, every last drop.

I panic when I see more on the skirting board. Just ten minutes until the next viewing. I wipe it clean as best I can with more tissues, my stomach twisting as if a snake is coiling inside it.

I’m so hungry.

“Asda Spice called, he says he’s interested in the flat, but has a couple more viewings. Fucking tease, eh?” It’s Misha’s turn in the office today, so he’s running the phones. It’s Saturday, game time in our world, but Misha’s ahead on targets as always. He’s hungry, same as all of us, but gluttons can be lazy too.

Everything is on the line for me today though, last weekend before the salary run. I’m off my monthly and quarterly targets. No targets, no OTE bonus—no OTE and I’m back to syphoning fuel out of Rafe’s Audi to keep my car running. No company car with mileage for me, you have to earn that. Saturday is the day. Today. All the young professional couples are in a thousand knife fights for viewing slots. Everyone is ready to overpay for the prime locations, the recent refurbs, the fully-furnished local amenities and twenty-four-hour transport links. Just one weekend to get it done before they’re back to burning next week on the pyre.

I ask Misha, “You mean Mr. Three, right?” It’s easier to avoid real names, Misha is right about that at least.

“Hold on.” I hear pages being turned, then he says, “Three p.m., Tuesday. You called him ‘indigestible.’ The landlord wasn’t a fan then?”

“You could say that.” I barely slept last night, with my throbbing skull and the whipping ruination of my guts. The cut on my head doesn’t show to clients, at least.

It’s not the first time the landlord has taken its anger out on me. I’ve tried everything for my stomach across the last year—eating, not eating, probiotics, a high-fibre diet, carb loading, spirulina shakes, keto and paleo diets, the 5:2, milk of magnesia—but I still feel like mouths are birthing inside my bones one tooth at a time, feeding on my marrow like it’s egg yolk. “Tell me you’ve got something good set up.”

“Yeah, I do. Rafe handed one over last night. They’re in a rush and he’s booked up with the Anscombe-Branks couple. Said he’s already sampled and they’re ‘plump for it.’” Rafe is another public-school boy impervious to his averageness. His clients get names; they have futures. Misha’s run with him since they were kids. They’re both from families that have served the landlords for generations, this whole fucked-up social scene of intermarriages, secret handshakes, and disclosing which landlord they’re under before they make out. Kids born into it. Fucking travesty of a childhood, if you ask me, turning out these stunted little men who thrive on their inadequacies. It’s my sole consolation since taking this job—because I can never leave it now—at least people like Misha and Rafe finally make sense.

“Send them over. Don’t screw me on this one, Misha. I need the sale. The landlord is already talking about asking the agency for a volunteer.”

“Keep your merkin on, twinkletwat,” Misha laughs, but it’s hollow. We all know the stories, and we all believe them.

Don’t be a Barnaby, they say. They bat it about the office, braying like donkeys as they talk about old school friends and the depraved shit they did. Rafe was the one who told me what it meant, eventually.

Oh fuck, Francis, this is just the funniest fucking thing you’ve ever heard. So Tobias was the most extreme bender in the school. He’d stick his dick in literally anything. Once over the Easter holidayshis parents were on safari and Mummy had taken Father to Antigua for their anniversarywe broke into the school’s wine cellar and got absolutely rascalled on vintage amontillado, totally blottoed, and he fucked a loaf of bread right in the breadbin, then left it there. Pre-buttered toast! He’s such a fucking delinquent.

The morning after that, hanging out of a dog’s arse, Tobias’s got a telegram from his MamaUncle Barnaby had to volunteer. Total calamity for the family, obviously. Barnaby was doing super well until Black Monday, when he got wiped out. From star agent to impoverished cretin overnight, selling off his stockholdings and properties in secret until there was nothing left. He started turning up to work in suits from Marks & Spencer, if you can believe itand, you know, there’s no coming back from that. Poor old Barnaby was given a choice in the endand he bloody well stumped up. Took out life insurance then volunteered himself to the landlord. Tobias said his family ended up buying a house in Reading with the insurance. Poor bastards.

Poor Barnaby, if you ask me.

Misha says, “All yours. They’re booked for this afternoon.”

Misha sends over the written statements from Mr. and Mrs. Four-Thirty in advance, so I read them in the car, where I’ve parked several streets away. It’s over if they see me climbing out of my rusty, dented old Nova. They need to believe I’m one of them. He’s oversold it, he always does, but there is something there.

Mr. enjoys a career in finance with the investment branch of a leading multinational bank, where he is training to serve high-net-worth clients. He was cox for the college first boat, and played 1st XV for Richmond’s Under 21s. In his spare time he plays jazz saxophone (only at reasonable hours haha!).

That’s all in the past, now he spends fifteen hours a day in one of the glass-and-chrome prisons on Bishopsgate. Entry-level smell to him, fresh out of the packet. They mention the rowing at the beginning, while they still remember what it felt like to watch the sunrise over frosty meadows from the river. Still, his first job will out-earn everyone I knew at Oxford Brookes. One and a half miles, and generations of wealth separate us. It’s all about the pursuit of wealth for him, his path to success a coded labyrinth of status. It’s nothing as crass as money. He’ll earn a fortune and never be free to spend any of it.

Mrs. gained her MPhil in the radical political roots of sixteenth-century Japanese ceramics at Goldsmiths, where she worked with such artists as Beth Lo and Jonathan Yamakami. Her own work focuses on reimagining kintsugi traditions in the post-colonial Anthropocene spaces of twenty-first-century London, using materials such as reclaimed plastic and Victorian glass she finds as part of her amateur mudlarking team. She is a social media manager working for a major high-street biscuit brand.

She’s the catalyst, of course. Mr. drank the Kool-Aid, but Mrs. spent too long nurturing her essences to ignore them. All that hope and imagination will fester. She’ll start nesting and going out with new friends Mr. has never met, forgetting about kintsugi but taking up pottery, perfecting glazed marigolds on handmade teacups. Anything to fill the time as Mr. works longer and longer hours, then weekends and public holidays. As she realises she has more and more money to replace him with, and her specialised knowledge of obscure arts is cracking with age, and the only gold she has is wrapped tightly around her finger.

Rafe is right, give them a few years for their despairs to flower, and they’ll be perfect. But I have days, maybe hours. I get out of the car, straighten my tie in the wing mirror, and head for the property. 

Mr. and Mrs. arrive on time, announcing themselves to the street with an avalanche of clattering heels and muttered swearing. They walk with all the arrogance of a young couple masquerading as shambolic—bickering and boundlessly confident.

The simmering resentment of their argument helps, so the door whispers open to a brightly lit corridor, the air soft and warm on the skin as they step in from the cool afternoon. The shadows of leaves dance on the hallway walls, hinting at an Arcadia just beyond the combi boiler. In the bedroom, bedside lamps cast friendly glows on the burnished terracotta accent wall, the newly made bed lacking only a chocolate on the pillow. The carpets are plump and fresh, like spring meadows beckoning bare toes to relish in their pile. In the dining room, a shaft of sunlight picks out the vase of pussy willow, complete with silvery silken nubs.

Mr. and Mrs. immediately fall into their roles, their conflicts suppressed so easily, and start planning out their new lives. Where their TV will go, “It’s 4K, 72 inches, total beast, you know,” and then the sofa, the prints, the cabinet for displaying Mrs.’s pots. How well their linen suits the walls, the red such a bold choice. Soon they’ve held dinner parties with Tracy and Alex and Alex and Alex. The tipped heads and laughs as they tell me, “We only make friends with people called Alex,” as they open kitchen cupboards, barely looking inside. “Just don’t tell Tracy, haha.”

Mrs. lets slip a hushed, perfectly enunciated, “Oh fuck,” when she opens the last cabinet and a sharp twist of metal from an old broken latch just inside the door bites at her finger. She sucks a drop of blood from the tip, and looks at me nervously. “Sorry, that hurt a bit.”

“It takes more than that to upset an estate agent, don’t you worry. We’ll get that fixed right away.”

Mr. isn’t paying attention to his wife, instead leaning over the sink to peer into the garden. The window is the only thing not gleaming clean. He huffs a heavy breath, which vanishes into the glass as the landlord steals it away, onto a smudge, and wipes with his sleeve to make a tiny clean patch. He can see thick brambles and tall grass. “Do upstairs not use it at all?” he asks.

“Not really, as you can see. Upstairs mostly keep to themselves. I’m sure they’d be delighted if you wanted to take it on as a project.” The couple flinch, Mr. gasping in shock, as an air bubble suddenly squeals through a pipe like a distant howling dog. “You would need to ask permission first, of course.”

Mrs. laughs and says, “He’s not really a gardener. More a concrete-it-all kind of guy, aren’t you, babe?”

He replies, “I could be up for it. Look, it’s west facing. Lovely light in the evening. We could have barbecues. I can finally show Alex how to make a proper burger. I have the best recipe.”

Mrs. continues to suck at her finger, which hasn’t stopped bleeding. She looks like a little girl upset at Daddy, while Mr. dreams of the man he’ll never be.

I tell them, “I’ll give you a couple of minutes to yourselves.”

Paltry morsels. I grow more hungry with every rotation of this pathetic globe.

I remember how it felt when we first saw your kind shining in the darkness. We grew fat on your souls even as you cowered. We were titans you dreamed of capturing in stories. You so few, but so bright. Swollen, fat with light in your hovels. You were succulent. Your essence cascaded through me as I gorged myself.

Endless forest covered this world, a vast animus that sang like the spirit shrikes of home, root and claw, earth and taint. But the parasite has no regard for the beauty of the host. You have sullied your flesh, made poison of your flesh. Your tiny cruelties. Cobbles and bricks and fire and concrete and cities and smog and wealth and cholera and poverty and rivers of shit in buried tunnels and vermin and rust and rot and mould and waste and tiny jealousies and gold and gold and gold and luxury and greed and ownership.

So little, made from so much.

My empire is reduced to solitary watchtowers. My army is a facile child. My altar this house.

Just once more. One great meal, and I will rip open the air, return to the beautiful shadows, where space is a dream, where all these limbs and muscles and flesh and blood and bodies are nothing.

I come to slowly, drifting in and out of the narcoleptic haze the landlord leaves me with after a consultation. It has returned to wherever it is it spends its time. It is dark. The Four-Thirties left hours ago.

I’m on the bathroom floor, so I push myself up on the bath to turn the light on. The bulb carves stark shapes from the room, leaving thick slabs of shadow behind every angle. In the mirror, I check the extent of the abuse. My face is sore, where I must have bruises forming. A whispery grey form behind me seems to caress my cheek. I double over as hunger staples my stomach into ever smaller pouches.

I breathe deeply until the pain clears. Eventually, I draw water from the sink for a drink, hoping I can trick my starving body into quieting, if just for a moment. Looking at the mirror again, I see my eyes are bloodshot, with shadowy bags underneath. And the dragged finger-mark smears on the glass tell me it tried to reach something in the reflection again. What is it looking for? Can it open a doorway there, truly? Does it just like torturing me? My stomach unleashes its fury again in all-consuming cramps. I need to sleep. To eat.

The doorbell rings. Strange. It’s late, early Saturday evening. Nothing is booked. My clients are all preparing for nights out with loud music and shitty coke. I check my phone—no messages from Misha. I head for the front door, leaning on walls to stop myself tumbling to the floor.

I open the door to find a woman who looks as exhausted as I feel. Forty-something, mousy hair, on her way to curvy, dressed in high-street denim. I doubt she can afford this place. She was pretty once, past the wrinkles that have consumed her youth, under the black bags of her eyes. Her hair is loose around her shoulders, the collar of her jacket high and buttoned closed. She quivers, like she’s on the cusp of screaming.

A tiny face peeks from behind her thigh—snotty, tearful, and full of the remorseless sorrow of a child. The woman breathes in sharply, spreading her hands to grab the invisible reins of the doorstep, as if she’s afraid it will buck and throw her back to the kerb. “I saw the sign. The ‘to let’ sign. And I saw the light on. I thought maybe I could . . . Could I? Bit of an emergency, really.” Her smile is all mania and fear.

It’s time for me to be knocking off and getting what sleep I can before Sunday’s viewings. Behind her a group of lads walk along the street, chattering like rooks, no doubt heading for the pub. It’s the time when the drinkers annex the streets for another night. No place for a child. I need to go home, swallow as many painkillers as I can, and force down whatever food the landlord will allow me. Wash. Try to sleep. But the way this mother keeps shooting glances over her shoulder gets to me. It’s not those lads. She wants to be off the street.

I step back, and welcome her in with an arm. I say, “Sure, I’ve got a bit of time, nothing planned for tonight anyway. Let me show you around. It can be a lovely place, for the right viewers.”

She scuttles into the hall, pulling her daughter with her, and shuts the door quickly. Her eyes linger on the locks an extra moment, as if she’s memorising each one, learning how it can be opened. Lost in a private catechism, she gives herself permission to breathe again. She rests both palms on the door for a moment, then says, “Love the place. How much is it? I can move in tomorrow, all packed and ready to go. I can pay the deposit, I’ve got some money put aside. Really, honestly. How much is it?”

“It might be best if you can call the office in the morn—”

“No! Sorry, no. I need a place right now. I’ll sign whatever you want. Please.”

She pushes past me down the hall, turning sideways to fit through the space, so that her jacket catches, the button at the neck popping open, giving me a flash of finger marks on her throat. Dark, livid, deep. She quickly closes the buttons and disappears into the kitchen.

I bend down to the little girl, who is still in the hallway with me, smile, and put out my hand for a shake. “Hello, I’m Francis. Do you want to live here with your mummy?”

The girl looks past me, then runs after her mother in silence. I follow through the door to find the girl tugging her mother’s elbow and whispering loudly, “I don’t like it here, Mummy, I don’t like it.”

Behind them, in the bathroom, I see an oil-thick shadow vanish through the doorway, catch a glimpse of a baleful red eye blinking closed in the cabinet mirror.

The landlord never comes to the property until it’s ready. For it to show itself now means . . .

I walk over to them and start to lead the pair of them out of the house. The mother tries to shrug off the arm I extend over her shoulder, then grunts in pain and shock as I shove her into a wall. “Sorry, but actually I can’t have you here. I’d lose my job if they thought I was doing things off the books.” At the door to the hallway the mother starts to push back out of some instinct for resistance, punching me weakly with a courage she is clearly still new to. The girl is retreating down the hallway, turning to the front door to open it.

There is a loud thump, as if a wardrobe fell to the ground upstairs, followed by the sound of something heavy dragging across the floor, just once. Chilly tendrils reach for my back, scraping at my skin with a slick, viscous quality. My skull tightens, as if claws are squeezing me, and the tips are chiselling into my temples and in the centre of the fractured seam at the top, my fontanelle, where once a throbbing membrane of skin was the frailest of partitions between my mind and that which is.

I grip the doorframe around me tightly, feeling my nails digging into the wood, splinters shooting up into the nail beds. The pain—the physical pain of my body—gives me focus, pulls me back into myself. I keep clawing at the wood, dragging the flesh and bones of myself over the threshold, reclaiming myself from the landlord one traumatised nerve at a time.

From the garden path, the mother stares at me in anger and confusion at her eviction.

I tell her quickly, while I still can, “We’ll get you signed up tonight, not a problem. Come with me to the office so we can do all the paperwork.”

The mother breaks and she starts sobbing openly with relief, a lightness in her voice as she starts thanking me over and over. I barely hear it, just usher her out of the garden, telling her to wait there while I lock up, how we’ll go to the agency straightaway, this endless gabbling sales patter coming out of my mouth while I’m focusing all my will on pulling the door shut behind us.

The pain in my guts expands to fill my entire torso, bubbles of agony bursting in my lungs. I feel like a constellation of flesh. I burn with an acidic compulsion to go back into the house, my feet dissolving with every step I take further away. The tendrils have thickened to tentacles, wrapping themselves around me, ripping away my skin then immediately coiling around me once more like an insatiable polyp.

Somehow, I stop myself from screaming.

Her.

The child.

Now.

Misha looks up in a panic as we walk into the office, scraping the line on his desk into the bin. The mother and girl wait nervously by the entrance as I walk to the back to talk to him. He bats his nostrils back and forth, sniffing repeatedly and says, “What you doing here, Frankie? Past business hours, I’m closing up in a minute.”

“Big night planned, is it?” Of course it is, always is for his type. 

“Just wrapping today’s sales. Rafe did Tiverton Street. Two hundred over asking, drinks to celebrate, you know how it is?”

“Thanks Misha. I didn’t, but I do now.”

“I’m not doing new clients. Lionel’s got the morning, saddle him with it. Come spend some time with the lads.”

It’s said out of good form as much as anything—there’s no expectation that I’ll actually go, or that they’d be happy if I come. I can’t afford their lifestyle, and they don’t understand mine. It’s just how it’s done. I don’t give a shit though, I need him gone. “I’ll do it, got a good feeling about this one, you know? Leave the sales, I can do those as well.”

Misha doesn’t hesitate for a second, breaking out a Harley Street smile and saying, “Brick. You’re a total brick, Frankie. I owe you one.” He swirls his coat up off his chair and shoots out the door to whatever basement cocktail bar Rafe found on TikTok this week.

The landlord’s grip on me weakened as soon as I made it out of the house. It knows I must bring it what it wants through official channels, that it can’t risk close investigations of the flat, so it had to let me go. Even so, I feel weaker than ever.

I slump into my chair as the mother and girl settle into theirs on the opposite side of the desk. The mother keeps her coat buttoned tight, sitting ramrod straight on the edge of the seat. The girl frets the cuffs of her coat, tugging at a loose thread in silence.

I search our list of active properties, hoping it’s still available, relieved to find it is. None of the guys care about filling it, the owner being a human. Worst of all, a human who has given us explicit instructions to hold the rent below market rates. One Mrs. Whetherell, owner of the two-up terrace next door to hers, her mum’s old place, empty since she bought the neighbouring property and moved into that. This lady has lived either side of one wall her entire life. It’s small but clean, in good school catchments, but is too far from the station to attract commuters. The photos show ’70s textured wallpaper, swirly brown carpet, and commemoration plates on the wall for every royal wedding—at least until Charles and Camilla. And there’s a vast wealth of shortbread available for anyone savvy enough to compliment her baking.

I take down their names—Maisie is the mother, Alba the girl—and just a few more details, trying to avoid it coming across as interrogation. She’s been through enough. The bruises on her neck are like ink stains from a glove.

Maisie breaks down when I eventually show her the property and she hears the price. Maisie needs a place to live, not a manifestation of ambition in brick and designer furniture. She needs a door she can lock. She needs to be able to take a breath and know that the next will happen just as easily. Mrs Whetherell just wants nice people to live next to her. Mrs Whetherell just wants some company.

Maisie hugs her daughter tightly and says, “We’ll be okay, honey. We can make this work. New school, new friends, new start.”

Alba whispers back, “I don’t want new friends, I already have friends. I don’t want to move, mummy.”

“I know, darling, but we have to live somewhere new. Now that daddy is sick.” She looks up at me, pleading with me silently to condone her deception. Begging me for mercy, as if I am master of her destiny. All I do is let flats, and lie to people.

Alba asks her mother, “Is this going to be like the other house? I didn’t like the other house. The bathroom troll was scary.”

“What bathroom troll, darling? You didn’t even see the bathroom.”

The girl clams up and glares at me with the fury her mother should be letting out. She knows, fuck knows how, but she does. I wish it was a troll, something contained within arms and legs and teeth. Something that could be killed. If she knew what that splintered orb in the mirror belonged to, the swollen protuberances of its limbs, the endless twitching tentacles, the tiny biting mouths that open up at random across its body.

I don’t even know how many of them there are, how many companies exist to serve them. What if they’re everywhere, hiding under factories and warehouses as well? What if my one is the runt of the litter, a bullied god of hate punching down. I checked the agency records once but they’re encrypted, so I only know the entity that uses me as its tool. I hope that they only exist in this country, that there are places free of their infestation. I pray, though I know it isn’t true, that I’m the only slave they control. I don’t even have a name for them, despite how intimately they violate me. It’s different for Rafe and Misha; his kind are employees, inheriting that fig leaf of freedom. Rafe told me that I’m the only person they’ve told the truth, that no one else outside their families even knows they exist. I’ve been fucked ever since they got me high and opened their box of secrets to me. Flushed with serotonin, my saucer eyes gazing into the abyss, they told me we were brothers, joined by something greater than us, and, fool that I was, I believed them. All I know is that without them our agency would shrivel and die, shutters pulled on shiny offices across the city, maybe the country. Inheritances would evaporate. Misha would need to pick a cheaper drug habit, or find another host company to burrow into. Rafe would float on into another fortune, impervious to it all. The other junior agents—the ones who believe all we do is let flats—would need to get actual jobs, and I, well, I pray for it every day.

I’ve seen the glistening flesh of a boneless snake running through the pipes, drinking down the effluence, every drop of piss and blood, every scummy-watered bath. I’ve coddled nervous tenants, telling them that the noises from the roof are anything but ravenous creepers, a multitude of them hunting with one mind, each little more than claws and scales and hate. I’ve tutted and sighed about sound insulation when I know the bricks whisper and scream and fight and smash and howl in their dreams every night. I’ve prattled on about architectural oddities causing feelings of claustrophobia, as the very space around us is being chewed upon like cud, and the room sucks the life from its inhabitants in a desperate act of self-preservation. I’ve watched people twitch and fidget, their hindbrain knowing something isn’t right even as they tell me they love the place, not feeling everything reflecting back on themselves, their thoughts gulped down and spat out half chewed, their hopes and souls flayed in layers so fine they never notice how they are diminished, how every sudden draft passing over them is another piece of their essence consumed by the landlord.

I realised, after a few weeks working at the agency, just how many I have lived with in my life. All the shitty house shares I’ve tolerated. The years my asthma flared up, my eyelids erupting into hives with allergies, the smothering weight of depression trapping me in my bed. The country has been infested with them for centuries, but only now I know they are there can I see them. Now I’m like Rafe’s lot—profiting by helping the parasites. The obscene cost of renting a home is the final insult—the banality of hiding darkness under the naked cruelties of money.

I used to think that I was responsible, that my choices had some kind of effect. But there is no choice, not while the landlords are still here. Not while a few people can get rich.

That’s what I think as I look at Maisie hugging her daughter tightly, lest the wind rip her from her arms. Nothing I’ve done can be changed. I’m complicit, just like we all are. All I can change is what I do next. Maisie has escaped, and Alba has never known anything else.

I can’t give them to the landlord.

It’s past 10 p.m. when I unlock the door of my one-bed flat on the edge of the industrial estate near where the bypass spews endless traffic into the city every hour of every day. It was sold as a new-build years ago, morphing into something uncategorised and undesired now that the newness has worn off. It’s a shell at best, full of draughts, leaking seals, and cracked housings on the appliances.

But that’s it.

With my parents, content with their middle-class careers in the town hall but all their wealth tied up in equity, a mortgage is an impossible dream for me. The Bank of Mum and Dad is already in hock. So I am slaved to the indenture of my home, paying rent on credit and paying off the credit with my salary. If I pay to have the mattress steam-cleaned I can’t pay for a dehumidifier to stop the mould. Do I fix a leaking washing machine or the dripping cistern that stops me sleeping? The lock on the front door or the bedroom window? Why bother at all when the frames of both are warped?

I kick the clothes strewn across my bedroom floor into a pile and straighten the bedding, as Maisie follows to lay a barely conscious Alba down to sleep. I head for the kitchen as she settles her daughter, looking through the cupboards for anything I can make dinner from. Tomato puree, a huge bag of paprika I’m sure was here before I moved in, and one tin of red kidney beans. The fridge is empty except for a can of Red Bull.

I close it and turn around to see Maisie standing in the doorway, studying me. She’s taken her coat off at last, tucked her hair behind her shoulder to reveal the extent of the bruises. She fronts well, not showing me any weakness. I take my keys from my pocket and slide them across the tiny kitchen table towards her.

“That’s the only set. No bolt on the bedroom door, but there’s a few weeks’ worth of laundry you can block it up with. I’ll sleep on the sofa.”

She picks up the keys in silence, coils a fist around them so the stick out between the fingers. “What do you want from me? What’s the price?”

“Nothing.” Penance. Salvation.

She sniffs, looks back over her shoulder to the bedroom, hearing the twist of duvet or some tiny whimper from Alba perhaps. “You try a single fucking thing and I will kill you in your sleep.”

I nod, not really sure what to say.

She takes a moment longer to think, then says, “Do you want some dinner?”

I am a hollow ghoul, thinner than I have ever been. I’d chew my own fingers to the bone if I thought I could keep it down. Christ knows what I look like to her, taut and shivering with nerves, hunched over the vacuum of my stomach. “Can’t really cook much,” I confess.

“I can cook.”

“There’s nothing in the house anyway.”

“You look hungry, you know. Like . . . I mean, not well.”

She makes me laugh, despite it all. Not well. As if there’s a cure for what I have. But people do eat, normal people at least. That’s what I should be doing, and maybe that’s what she needs. A normal night doing normal things.

I grab my coat, check my wallet is in there, and say, “I’ll go buy some bits. Buzz me back in, yeah?”

She nods, something in her relaxing as she realises I’m leaving her in my home. That I’m offering my secrets up to her, without asking her any questions. That she can lock me out.

I squint against the bright lights of the corner shop as I fill a basket with vegetables and chicken, trying to remember what a meal looks like. The tightly stacked rows of boxes and tins, with their glossy images of meat, fruit and vegetables look like the building blocks of something I no longer understand.

Back at the flat I find Maisie drying my pans, the kitchen newly cleaned. She takes the bag and waves me to sit down with a soapy hand. She works in silence, and I am too tired to ask any questions. My life is an endless, meaningless chatter, and I already know everything I need to know about her. The next half hour is filled with scents as she prepares a meal. Simple, homely, rich herby smells that fill my house and my head.

When she puts the plate in front of me I am surprised to find myself hungry, my stomach gurgling in anticipation. I take a fork and lift a tiny amount to my mouth, blowing gently to cool it. Maisie watches me keenly, and there is little trust in her silence. She stands leaning against the counter, my chef’s knife next to her. She’ll barricade herself in with her daughter until morning, I know. 

But first, I eat.

The Four-Thirties are holding hands and harmonious when they arrive for the second viewing. Rehearsals went well then. They are dressed for a party—Mr. in chinos and a pastel shirt, a jumper most unironically over his shoulders, Mrs. in a flowing cotton Laura Ashley dress and bright green wedges—their chat all reminders that Alex is a stickler for punctuality, not like Alex, haha, oh Alex, at least Alex buys Sabra hummus, none of that wallpaper paste they sell at Sainsbury’s, haha. Mrs. runs delicate fingers capped with immaculate nails—and a sticking plaster—over the furniture as she chatters, a mantra of privilege I’ve seen a hundred times.

This time, they play their parts perfectly. Mr. goes out into the garden, treading down the brambles, and maybe he doesn’t hear the chitters and rustling of vermin in the undergrowth, because he comes back tutting and wiping his hands like a mechanic hoping to fleece some old dear out of their pension. “It really would be such a lot of work, almost worth a reduction in the rent, haha.”

Mrs. is waiting for him in the kitchen, peering at the boiler with feigned comprehension. She turns back to me slowly, leading with her head, her finger lingering on the fitting with a languid ease. “When was this last serviced? Really, we were expecting a heat-exchange system at this price.” Behind her, the shower curtain flicks out of the bath like a snake’s tongue. “It’s draughty too. When did you say the windows were installed?” They are full of their parents’ standards, hoping to shape the world the only way they’ve been shown how.

The shadows in the bathroom strengthen, pulling in more light, as claws scratch at my temples. The Four-Thirties have misread the power dynamic, and failed to account for all factors. They think they’re up against me and my cheap suit. Misha has told me how none of the landlords like negotiating, and that this is one of the worst—it despises anything other than total acceptance of its terms. Wheedling and bargaining hastens its hunger, shortening the eventual tenancy. Talk of rights and duties sparks cacophonous outpourings. The sacrifice must be willing.

I usher Mr. and Mrs. away from the bathroom and back to the front bedroom, where weak sunlight barely pierces the growing gloom. We file into the room, the couple settling into the angles of the bay window, and convene around the bed under the sodden pottery colour of the accent wall. They share a quick glance, Mrs. giving a barely perceptible nod, revealing which of their parentage carries more weight. Mr. beams back at her, stuffing his hands in his pockets to hide his excited fidgeting. Mrs. is more restrained, offering a tiny smile as she says, “We’d like to make an offer. How many other viewings do you have?”

“Just a couple more this weekend,” I say, swallowing a retch. It would make no sense to them, how little their money changes things here. I long to scream, “Yes, take the fucking flat! I hope you both die in this bed,” except long, hateful fingers are squeezing my chest and pushing me into the carpet. My body doesn’t feel my own as I say, “I have to finish this round of viewings. Give me a call at the office tomorrow, and we can talk it over then.”

They are clearly at a loss as I usher them to the front door. Now, finally, they have noticed something that isn’t right. A sacred covenant has been broken, that of wealth’s command. They carry the petulant faces of children first encountering the banal horror of the world, their toys no use out here. Mrs. looks back into the bedroom one last time, her gaze on the pillows so fat and welcoming. She is dreaming of mornings they would spend here, stories to tell their future children. Except her father didn’t warn her about mattresses. Fathers only ever think about boilers. They don’t like to think about their daughters all sweating and drooling and fucking on the same mess of fabric and coiled metal; they forget about legions of mites and worms and parasites that colonise the spaces closest to our skin; they cannot imagine inhuman intelligence permeating our flesh and coiling around our inner beings with every slumbering breath.

I follow them, keeping my gaze on the couple, out to the street as I lock the door. The landlord has to let me go, but it still tears at me as I deadlock the door, my skin feeling so tight it might rip, my fingers splaying against the dank paintwork of the door.

Feeling like I am pulling a tooth from a jaw, I tug the key free.

All my power pushed into so little flesh. So weak, incapable of mastering even yourself. How dare you be so tiny, so undeserving. What use are you? What function have your kind? What indignity that we even converse, you protoplasm, you molecule, you prion.

Civilisations have waded through mud in my honour. I have bathed in the souls of creatures who barely knew my name as a whisper in the darkness. I was adored, enduring their outpourings of love like the filth it was.

Yet you, mote, feel me within your skin. You, atom, defy me.

You will bring me the mother. I will have her child.

Then I will sear every particle of your being from this plane. I will sunder your essence into a multitude of sufferings and cast them across the fields of home.

Eternity will be yours.

Mrs. Whetherell slides a plate (Elizabeth II and Philip, original judging by the aging of the gloss) of chocolate chip shortbread towards Alba. The girl has opened up in her presence, a willing victim to Mrs. Whetherell’s ancient magics.

Mrs. Whetherell then offers a shortbread to Maisie, and lastly me. “Come on, lad, you look a bit peaky. I’m not one to brag, but these shortbreads were good enough for a Lord in 1987.”

“They look fresher than that,” I say with a wink.

Mrs. Whetherell laughs and says, “You wicked boy. Asda’s garibaldi’s for you, then! Only good boys and girls get my shortbread.”

I laugh for the audience, but the early morning sun cuts through me like a knife. Or maybe it’s easier to blame the light for how the darkness is slicing me up. It’s all I can do to sip water.

The landlord is weaker here, on the other side of town. But it still wants my attention every second, and I can feel it scratching across the roofs, up and down the streets, searching for me.

I leave them to bond, barely able to concentrate on talk of schools, homework, and favourite animals. I’m not needed any more. I’m nothing more than a glorified administrator now that I’ve arranged the introduction. But when Mrs. Whetherell says, “What made you decide to move with the little one?” I jump into Maisie’s moment of hesitation. I can see how the question drags her back in an instant to the violence she’s desperate to escape. Violence that is still happening for her, right now. I can see her trying to condense everything that led her here, with just Alba’s ragged unicorn, a rucksack of clothes, and her bruises, into the words that will convince this kindly old lady to take her in. But she can’t speak without ripping her heart out of her chest and dropping it onto collector’s china, to drip blood between biscuits and royal paramours. Maisie has lived by will alone for who knows how long. It’s clear to me she’s not even sure she made a decision, or if she just ran. So I speak for her, I take that choice away from her. I manipulate people, no doubt about it, but sometimes I can do it for the right reasons.

I lean over to Mrs. Whetherell, giving a conspirator’s wink, and tell her, “They’ve been looking for somewhere quiet, away from the noise. They’re knocking down some ex-local flats next door—the solid ones from the 1950s, they don’t make them like that any more do they, Mrs. W? You know those new apartment buildings, no sound insulation at all. It’s diggers and cranes all day. Add in one bad neighbour and . . . They get so much homework, from such a young age these days.”

Exactly on cue the granny I wish I’d had tips her head and says, “Aww, poor pet. It must be so hard bringing up the little one like that. Have you a garden? No outside space? That won’t do, the little ones need to be outside.”

“I know you’ve been looking for some nice, trustworthy tenants, and I’ve known Maisie and Alba here for years.” Maisie shoots me a glance, surprised at the ease of my lies. “To tell you the truth, I got them that last flat. I didn’t know about the new developments, and we had no idea what the neighbours were like, I swear. I’ve felt awful ever since. But then I realised, I could make it up to them both . . .”

She swallows it all, of course, and Maisie keeps her lips clamped shut. Mrs. Whetherell lives in a world where dishonesty is a thing for television and the newspapers. People don’t really lie to each other, not real people. No one could ever look a mother in the eye as they’re gouging her for every penny she’s got. No one would hit a child.

She pats me on the hand and says, “It’s not making mistakes that matters, but what you do after. Bless you, my boy. Now, you two young ladies, would you like to come see the garden? I hope you like strawberries, I can never eat the whole crop.”

They head into the kitchen, following the lingering smells of baking out into the sunny garden. They are already meshing into a new family, both Maisie and Mrs. Whetherell smiling as little Alba dashes out the back door, turning back to beam a smile at us all before skipping onto the lawn.

I can’t watch them for long. Something about the purity of the scene makes my scalp itch. It’s like happiness can’t find a home in me and instead is crawling the inside of my skull in search of an escape route.

I retreat to my car, planning to confirm bookings with more young couples, more new builds, more prefabricated units, more tributes. But as I settle into my seat my phone rings, an unknown number.

“Is that Francis?”

“Speaking, who’s calling?”

“It’s about the flat. I’ve been looking over a few numbers and, well, I would like to make the landlord an offer.”

Mr. Three. Lionel probably gave him my number, the conniving little shit. And Misha put him up to it, I’m sure. “I’m not in a position to negotiate. You should speak to Lionel in the office.”

“He told me to call you. It’s a good offer, fifteen percent over. It’s a good price. You won’t get more that far from the station.”

The tone of his delivery is quite incredible. In his mind the conversation is already complete, and we’re just going through the motions. “Really, I can’t—”

“How about I mail it over? I’ll do that now. Okay?”

It’s the way he says “Okay?” that triggers me. The exactitude that would flatten my agency, render me just a tool at his disposal. People shouldn’t be used. People shouldn’t conform to tiny expectations. People should be wild and unpredictable and fierce.

I hold the phone before me, surface to the sky like a prayer as I respond: “I said no, so fuck off.”

I hang up.

The coat hangers scrape at my skull the moment I get out of my car, dragging me towards the door of the flat. I brace against the vehicle, dry-heaving a wisp of tar, when my phone pings loudly. Misha has sent me the tenancy agreement for the Four-Thirties, agency boilerplate locking them in to twenty-four months, with rent reviews at months twelve and eighteen, and no right to appeal. He included one of his usual inspirational notes as well: Fuck-de-doodle me, golden-nips. You suddenly grown a pair? You might just last in this gig after all. That or two hundred carnations for mumsie next week. I’ve got £100 with Clarence you don’t sign it, so chin up, my proley baby. M xoxo

The truth is I’ve never heard of anyone attempting to force a tenant on a landlord. Rafe has joked about it once or twice, in a fit of coked-up bravado late on a Friday night, but it’s just one of a multitude of empty brags that he spouts. He struts like a cock when it’s just us in front of him, but I saw how he looked the night he came back from Beulah Road after the tenants vanished. Ten days they’d lived there, not even a fortnight. He never said what happened, but he was as white as ash, and he shredded the invoice from the cleaning agency before any of us could see it. Something broke inside him that night; an essential part of his inhumanity collapsed. I think all the stories came true, all at once, and he didn’t like the feel of blood on his hands. I’m sure Misha thinks Rafe lost his nerve, but I think maybe he finally found a little bit of it. He called his dad and started handing over clients shortly after.

But something has to change, we can’t all be slaves to so few masters. The landlords don’t eat us all, so maybe they can’t, maybe that’s the great lie they hide with violence. There has to be hope.

For now I wait, leaning on the garden wall so the landlord can take reassuring nips, and know I’m in its grip. I watch pigeons peck discarded fried chicken at the bus stop opposite. A butterfly strays into the road, buffeted into oblivion by a passing SUV. Overhead, an endless sequence of planes jettison carbon dioxide into the upper atmosphere. Life continues.

Eventually, the Four-Thirties arrive, proceeding down the footpath hand in hand, strutting like they’ve just arrived from a photoshoot. Mrs. has an improbable curl in her hair, while Mr. has a box-fresh fade, the curly thatch on top preserved with all its manufactured misdemeanour. Their gloss and makeup don’t quite hide the bags under their eyes, but otherwise it’s a perfect performance. They look like the affluent boomers their parents are, that they’re one inheritance away from becoming.

I run them through the contract in the garden, trusting in momentum and a confident delivery to stop them asking to go inside. Not yet, I need one more thing. “If you could just sign here and here.” They extend long, elfin fingers to complete their covenants on the tablet. Mrs. signs first, the sacred acts reduced to tutting and clumsy thumbs. Mr. may as well be at nursery making finger paintings. No matter, the deeds are binding however crude their assent. I tap Submit, sending the landlord its notice of the new tenants.

I know it’s coming. I know this pain. I hiss through my teeth anyway, as the landlord’s fury takes hold.

Mr. and Mrs. exchange a worried glance as they take the keys from my shaking fingers. I don’t hear anything else. Maybe I waved them goodbye. Maybe I wished them well in their new home. Maybe I slipped through the cracks in the paving. Maybe I was sucked into the bowels of the earth by a ravenous claw, to suffer my punishment. Maybe the landlord tossed me away like a bird’s carcass. I know I next feel myself slumping against the car door. I open it and curl up on the back seat wrapped around the nimbus of my stomach the acidic knot the pain is like nothing else a vast wall shutting out the heavens shutting out the heavens shutting out us all a whipping lash of hot wire coiled through my arteries I am become rage—

The wall flashes by at unimaginable speed, scales the size of cities shatter the clouds this world is dark and pungent and not mine this inconceivable edifice hurtles into space the scales the scales so many scales this behemoth has swallowed god and it turns now I see I see too late I am not my own I belong to this and it opens an eye the size of eternity and gazes down on me alone mote nothing in all this creation other than—

You own nothing.

You are mine.

That moving house is stressful is well-known these days, but Anna and Michael are proud of how they deal with the job together. They save money by doing it all themselves, rather than booking a removals service. Instead Anna borrows a van from a local branch of Daddy’s company, and they graciously accept Alex’s offer of help with the boxes.

Moving in summer means open windows with the radio tuned to Magic FM. Bill Withers reminds them it’s going to be a lovely day as Anna unpacks the Wedgwood dinner service, the Le Creuset dishes and the carbon steel pans. Michael sorts the books by colour (something Anna saw on Instagram and loved the idea of) on their mahogany shelves, those a wedding present from Auntie Moll.

They end the first day with pizza from their new local wood-fired oven takeaway, sipping one of their Viogniers they normally save for Alex and Alex, but the rest of the wine hasn’t chilled yet, and they’re celebrating, just such a shame the nice wineglasses are at the bottom of the pile of boxes in the kitchen right now. They won’t get to them for another two days, distracted as they are by making the bed and sorting the wardrobes out and taking a break to walk in their new local park before sharing their first shower in their new home, slippery hands running across each other’s bodies with giggles as the spores drift in the air, catch in the water, and are massaged into their skin lovingly.

Feeling naughty, they dash naked through the flat to the bed, toss the duvet off, and exhaust their lust in a tangle of limbs and water. They doze after, at once sated and filled with cupidity.

Gently, Michael is the first to cough.

“Agency” copyright © 2026 by George Sandison
Art copyright © 2026 by Jamie Keenan

Buy the Book

An illustration of a brass key with a skull-shaped bow against a bright blue sky.
--> An illustration of a brass key with a skull-shaped bow against a bright blue sky.

Agency

George Sandison

The post Agency appeared first on Reactor.

14:07

Security updates for Wednesday [LWN.net]

Security updates have been issued by Debian (kernel, linux-6.1, munge, and tcpflow), Fedora (accel-ppp, atuin, babl, bustle, endless-sky, envision, ettercap, fapolicy-analyzer, firefox, glycin, gnome-settings-daemon, go-fdo-client, greenboot-rs, greetd, helix, hwdata, keylime-agent-rust, kiwi, libdrm, maturin, mirrorlist-server, ntpd-rs, ogr2osm, open-vm-tools, perl-App-Cme, perl-Net-RDAP, perl-rdapper, polymake, python-requests-ratelimiter, python-tqdm, rust-add-determinism, rust-afterburn, rust-ambient-id, rust-app-store-connect, rust-bat, rust-below, rust-btrd, rust-busd, rust-bytes, rust-cargo-c, rust-cargo-deny, rust-coreos-installer, rust-crypto-auditing-agent, rust-crypto-auditing-client, rust-crypto-auditing-event-broker, rust-crypto-auditing-log-parser, rust-dua-cli, rust-eif_build, rust-git-delta, rust-git-interactive-rebase-tool, rust-git2, rust-gst-plugin-dav1d, rust-gst-plugin-reqwest, rust-heatseeker, rust-ingredients, rust-jsonwebtoken, rust-lsd, rust-monitord, rust-monitord-exporter, rust-muvm, rust-nu, rust-num-conv, rust-onefetch, rust-oo7-cli, rust-pleaser, rust-pore, rust-pretty-git-prompt, rust-procs, rust-rbspy, rust-rbw, rust-rd-agent, rust-rd-hashd, rust-redlib, rust-resctl-bench, rust-resctl-demo, rust-routinator, rust-sccache, rust-scx_layered, rust-scx_rustland, rust-scx_rusty, rust-sequoia-chameleon-gnupg, rust-sequoia-keystore-server, rust-sequoia-octopus-librnp, rust-sequoia-sq, rust-sevctl, rust-shadow-rs, rust-sigul-pesign-bridge, rust-speakersafetyd, rust-tealdeer, rust-time, rust-time-core, rust-time-macros, rust-tokei, rust-weezl, rust-wiremix, rust-ybaas, rustup, sad, strawberry, systemd, tbtools, transmission, trustedqsl, tuigreet, uv, and vdr-extrecmenung), Oracle (brotli, git-lfs, java-1.8.0-openjdk, kernel, libsoup, libsoup3, nodejs:24, python3.12, and thunderbird), Red Hat (fence-agents, python-urllib3, python3.11-urllib3, python3.12-urllib3, and resource-agents), SUSE (avahi, cups, freerdp, golang-github-prometheus-prometheus, java-11-openjdk, java-17-openjdk, libsoup2, libxml2, and python-pip), and Ubuntu (expat, glib2.0, and imagemagick).

13:42

Organizational Strategies from the Collective Wisdom of Nature [Radar]

Circa 2016, a logistics company was drowning. Their centralized routing system—the kind most enterprises still use—couldn’t keep pace with millions of daily deliveries. Managers were making routing decisions through layers of approval. Response time measured in hours. In ecommerce, that’s death.

Then they did something counterintuitive.

Instead of building a smarter central command, they dismantled it. Thousands of delivery drivers were told: Take the shortest available route you see, avoid congested zones, coordinate with your neighbors. Ignore the central system if it makes sense to ignore it.

The first week was chaos. Drivers felt unmoored. They’d been trained for years to defer to authority. But the second week, something shifted. Drivers started talking to each other, sharing what they learned. Within months, delivery times dropped 15%. Fuel costs fell 12%. And the system became more resilient to disruptions, not less.

The system reflected one of nature’s key coordination models: swarm intelligence—the collective behavior of thousands of simple agents following basic local rules and producing astonishingly sophisticated global outcomes. Of course, this wasn’t swarm intelligence in the purist sense. It was something more practical: centralized optimization with locally adaptive execution. The routes were still computed by HQ algorithms, but drivers had authority to deviate based on what they observed. This hybrid model—plan centrally, execute locally—outperformed purely rigid centralization.

This matters. Because most organizations make a different mistake: They assume every problem requires either total central control or total decentralization. The reality is more nuanced. Still, the point remains: The natural world offers a range of coordination models your organization can learn from as you address the specific challenges you face.

The Nature That Shaped Intelligence

A leafcutter ant colony doesn’t have a CEO. No board meetings. No quarterly planning sessions. Yet somehow thousands of ants coordinate to strip trees and farm fungus underground with mind-bending efficiency.

A school of fish doesn’t vote on which direction to swim when a predator appears. No consensus process. Each fish simply watches its three nearest neighbors, maintains distance, and matches speed. They move as one organism.

A flock of birds migrates thousands of miles without a navigator. No GPS. No preplanned route. Each bird follows the same three rules: Stay close to your neighbors, don’t collide with them, and match their speed. Somehow they arrive.

But nature has other models too. Bees don’t swarm to find food. They use waggle dances—a signal system where scouts communicate location and quality to the hive, and the colony collectively decides where to forage. This is collective decision-making, not swarm behavior.

Here are some of the models nature uses, and how you might employ them in your organization:

Ant colonies (pheromone-based swarms): Individual ants are cognitively simple. They follow chemical trails. They don’t strategize. They don’t discuss. Coordination emerges from simple stimulus-response rules repeated at scale. This is perfect for routing algorithms. Humans? Not so much. We have language. We overthink. We have egos and agendas.

Bird flocks (proximity-based synchronization): Each bird watches its nearest neighbors and maintains distance, alignment, and speed. This produces coordinated movement without central direction. It’s useful for thinking about organizational synchronization, but in practice, knowledge workers don’t coordinate through proximity. They coordinate through explicit communication.

Bee colonies (collective decision-making via signaling): Scouts find food sources and perform waggle dances; the hive collectively decides where to forage. There’s communication. There’s collective judgment. This maps better to humans—we make decisions through voting, consensus, or appointed authority structures. But we do this through language, not dance.

Small human groups (language-based coordination): Humans naturally work in intimate groups of 5–15 people. We communicate directly. We debate. We explain reasoning. We build trust through repeated interaction. This is our strength. Research on military special forces, surgical teams, and startup founding teams shows that this scale consistently outperforms larger hierarchies for complex, novel work.

Here’s what matters for organizations: Not all nature-inspired coordination is the same, and not all models suit human knowledge work equally well. The mistake organizations make is mixing these models. Trying to run a board decision through swarm logic doesn’t work. Trying to route 10,000 deliveries through consensus doesn’t work. Match the model to the problem.

How to Distribute Intelligence (Without Creating Chaos)

The winning organizations distribute decision-making by problem type, not by ideology. Start by asking yourself “What type of decision is this?”

Optimization problem with clear goals and frequent repetition?

Consider swarm-inspired algorithms or distributed rules. Routing, scheduling, resource allocation. These benefit from parallel exploration and adaptation.

Define simple, transparent local rules. “Always choose the shortest queue” is better than “we’ve determined you should do this.” Transparency builds trust. It enables agents to adapt rules as conditions change.

Establish clear boundaries. Swarms aren’t lawless. Even the most autonomous ant colony operates within biological constraints. Similarly, decentralized decision-making needs guardrails: budget limits, compliance rules, service-level agreements, ethics boundaries. These constraints prevent harmful emergence while preserving autonomy.

Measure emergent patterns. Are teams naturally clustering around customer segments? Are response times improving faster than expected? Are deviations from planned rules creating better outcomes? These patterns reveal whether the system is actually adaptive or just chaotic.

Measure emergent patterns. Are teams naturally clustering around customer segments? Are response times improving faster than expected? Are deviations from planned rules creating better outcomes? These patterns reveal whether the system is actually adaptive or just chaotic.

Want Radar delivered straight to your inbox? Join us on Substack. Sign up here.

Repeated execution with local knowledge advantage?

Delegate authority. A store manager sees local demand before HQ does. A nurse sees treatment patterns before epidemiologists do. Give them authority to act within clear boundaries.

Make authority explicit. People need to know: What can I decide? What requires escalation? Build trust through transparency. And create communication channels. Small teams work because people talk directly. Don’t remove that advantage by adding layers.

Small-group knowledge work or novel problem?

Use small teams with explicit communication. Strategy, product direction, customer account decisions. These need debate, judgment, and reasoning—not local rules.

Preserve hierarchy for initial deliberation, then push decisions down. A CEO might set direction (“we’re entering this market”), but let teams decide execution. Mix levels of control by decision phase.

Then build the culture progressively. Organizations where power has been tightly held resist decentralization. Pilot in bounded domains. A single supply chain. One customer segment. A specific operational challenge. Demonstrate value. Build credibility. Then expand. And yes, this requires middle managers to give up control. Most companies fail here. If you aren’t ready to fire managers who hoard decisions, don’t bother trying to decentralize. They’ll sabotage it.

Strategic or ethical choice?

Humans in a room. These require deliberation, trust-building, and explicit reasoning. You can’t swarm your way through a values decision.

Markets shift faster than executives can perceive. Customer preferences change in real time. Disruptions emerge from nowhere. The solution is to distribute intelligence by matching decision type to coordination mechanism. Nature figured out multiple coordination models. Organizations should too.

Real-World Applications

Smart cities: Traffic signal timing in Copenhagen and Singapore uses distributed coordination. Instead of a central traffic control room synchronizing all lights, intersections coordinate based on local congestion. Signals adjust in real time to vehicle flow. This is closer to true swarm behavior—local rules, no central command, emergent global optimization. The result: reduced congestion and lower emissions.

Healthcare: Diagnostic systems using AI aggregate insights across thousands of clinicians. This is distributed sensing. Every clinician is an antenna. The algorithm learns from patterns observed across all of them simultaneously. Drug discovery accelerates as algorithms explore molecular spaces too vast for sequential testing. This works because the goal is clear (better diagnosis, faster discovery), and local information (what clinicians observe) accumulates into global patterns.

Financial services: Real-time algorithmic trading uses multiple agents executing strategies based on local market signals. Agents respond to local conditions without central coordination. But notice: This only works because the goal is crystal clear (maximize return) and the environment is well-defined (market data). Try this for strategic investment decisions and you’ll have chaos.

Energy systems: Power grid management in renewable-heavy systems uses swarm-like coordination to balance supply and demand in real time. Distributed generators respond to local price signals. Consumers adjust consumption based on local grid conditions. This approximates true swarm behavior because the problem is optimization at scale (balance supply and demand) without central planning.

Small teams with autonomy: Amazon’s two-pizza teams have authority to build and deploy independently. Netflix engineers can deploy code without centralized approval gates. Southwest Airlines gate agents make refund decisions on the spot. These are delegated authority structures—not swarms but genuinely autonomous decision-making. They work because the team is small enough for direct communication, the authority boundaries are clear, and the decisions are nonstrategic (execution choices, not direction).

The Competitive Advantage: Speed Through Matching Model to Problem

Organizations that match coordination model to problem type will outpace competitors trapped in binary thinking (all centralized or all decentralized). The advantage isn’t technological. The algorithms are known. The models are established. The advantage is structural clarity. Companies that can identify problem type, choose the right coordination mechanism, and execute without paralysis will move faster.

This mirrors natural evolution. Ant colonies didn’t succeed because they invented new biology. They succeeded because they used the right coordination model for the problem (optimization at scale). Humans didn’t dominate because we swarm. We dominated because we combine small-group collaboration with individual reasoning. Organizations following the same principle—using the right model for the right problem—will emerge as leaders.

For you as a business leader, the question isn’t whether to adopt distributed thinking. Markets are pushing you there. The question is: What types of decisions should be distributed, and what types should stay centralized? And crucially: What coordination mechanism actually suits each type? Your organization’s intelligence doesn’t live solely in the executive suite. It lives in frontline employees, customer interactions, market data, and operational feedback. The companies winning are the ones learning to access it.

But distributed decision-making isn’t one thing. It’s multiple things—swarms for optimization, delegation for execution, small teams for strategy, humans for judgment. Nature has already shown you multiple models. The only question is whether you’ll use the right one for the right problem.

One size doesn’t fit all.

13:35

CodeSOD: Cover Up [The Daily WTF]

Goodhart's Law states that when a measure becomes a target, it ceases to be a good measure. Or, more to the point: you get what you measure.

If, for example, you measure code coverage, you are going to get code coverage. It doesn't mean the tests will be any good, it just means that you'll write tests that exercise different blocks of code.

For example, Capybara James sends us this unit test:

@MockitoSettings
class CentralizedLoggerTest {
    @InjectMocks
    private CentralizedLogger centralizedLogger;
    @Test
    void logAround() throws Throwable {
        centralizedLogger = new CentralizedLogger();
        MethodSignature signature = mock(MethodSignature.class);
        ProceedingJoinPoint joinPoint = mock(ProceedingJoinPoint.class);
        when(joinPoint.getSignature()).thenReturn(signature);
        centralizedLogger.logAround(joinPoint);
        Assertions.assertTrue(true);
    }
}

It doesn't really matter what the mocks are, or what gets instantiated, or honestly, anything that's happening here. The assertion is the beginning and ending.

James writes:

The only requirement was sonar coverage to push the code to production. There is no other purpose.

[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

12:35

Prompt Injection Via Road Signs [Schneier on Security]

Interesting research: “CHAI: Command Hijacking Against Embodied AI.”

Abstract: Embodied Artificial Intelligence (AI) promises to handle edge cases in robotic vehicle systems where data is scarce by using common-sense reasoning grounded in perception and action to generalize beyond training distributions and adapt to novel real-world situations. These capabilities, however, also create new security risks. In this paper, we introduce CHAI (Command Hijacking against embodied AI), a new class of prompt-based attacks that exploit the multimodal language interpretation abilities of Large Visual-Language Models (LVLMs). CHAI embeds deceptive natural language instructions, such as misleading signs, in visual input, systematically searches the token space, builds a dictionary of prompts, and guides an attacker model to generate Visual Attack Prompts. We evaluate CHAI on four LVLM agents; drone emergency landing, autonomous driving, and aerial object tracking, and on a real robotic vehicle. Our experiments show that CHAI consistently outperforms state-of-the-art attacks. By exploiting the semantic and multimodal reasoning strengths of next-generation embodied AI systems, CHAI underscores the urgent need for defenses that extend beyond traditional adversarial robustness.

News article.

11:42

Urgent: Call Verizon not to support DHS and deportation thugs [Richard Stallman's Political Notes]

US citizens: call on Verizon to stop supporting the Department of Hatred and Suffering and the deportation thugs.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: End Apple and Google contracts with deportation thugs [Richard Stallman's Political Notes]

US citizens: Tell Apple & Google CEOs: End your contracts with the deportation thugs. Also call on them to allow people to freely share and install libre apps.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: End Amazon contracts with deportation thugs [Richard Stallman's Political Notes]

US citizens: Tell Amazon to end contracts with deportation thugs.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Call on Target to help protect Minnesota from deportation thugs [Richard Stallman's Political Notes]

US citizens: call on Target's New CEO to help protect Minnesota from deportation thugs.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Human made sediments on British beaches [Richard Stallman's Political Notes]

* As much as half of some British beaches' coarse sediments consist of human-made materials such as brick, concrete, glass and industrial waste, a study has found. Climate breakdown, which has caused more frequent and destructive coastal storms, has led to an increase in these substances on beaches.*

This doesn't imply that those substance do specific harm when present in a beach, but they demonstrate the magnitude of change that humans are already causing in this early stage of climate breakdown.

"Hate speech" rules could stifle classroom discussions [Richard Stallman's Political Notes]

*New "hate speech" rules for NSW schools could stifle classroom discussions about Gaza, teachers warn.*

Punishing "hate speech" as a crime generally tends to lead to repression.

Crushingly disappointing PFAS action plan for UK [Richard Stallman's Political Notes]

*Environmentalists decry "crushingly disappointing" PFAS action plan for UK.*

This weakness was predictable, because Starmer Labour's first priority is catering to business.

Cars in Chine to have mechanical release on all doors [Richard Stallman's Political Notes]

*Cars sold in China will now be required to have a mechanical release on both the inside and outside of every door except the [trunk].*

That exception is disturbing. I had heard, years ago, that cars were designed so that a person inside the trunk could open the door of the trunk. It seems a shame to retreat from that safety measure.

Contacts with Epstein pulled plug on career of Peter Mandelson [Richard Stallman's Political Notes]

Contacts with Epstein pulled the plug on the career of Peter Mandelson, a Labour MP and minister who worked unceasingly to strengthen the power of business — and not only in Britain.

FLOCK license plate readers accessed by federal agents [Richard Stallman's Political Notes]

FLOCK "security" license plate readers installed by California towns were being accessed secretly by federal agents who were surely up to no good.

Amazon as an example of enshittification [Richard Stallman's Political Notes]

Amazon as an example of enshittification: mistreating customers and manufacturers in many different ways, explained in this article.

Do you feel disgusted with Amazon, but yield because "boycotting Amazon is impossible"? I find it possible! I have never ordered anything from Amazon, and I don't find it hard to continue refusing. If a product I want is sold only by Amazon, I look for a substitute.

As a separate matter, I never order any product remotely, not directly. Instead I ask a friend to order it — not from Amazon! — and reimburse my friend before or after. That way, no data is collected about me.

Indeed, when someone wants to buy a present for me, I ask per to "Please not get anything for me from Amazon. Not anything, ever!"

Amazon is not the only company to engage in the injustice of DRM — Digital Restrictions Management.

The practice of DRM is vicious no matter who does it. I boycott all media that have DRM. What I say about Netflix and Spotify goes for Amazon too.

I detest DRM so much that I refuse to listen or watch someone else's DRM's copy using per own DRM-supporting media player, because that would be surrendering to DRM. The only morally legitimate copy of such a work is an unauthorized copy.

Robert Reich on funding for deportation thugs [Richard Stallman's Political Notes]

Robert Reich: Congress should write into the law to fund the deportation thug agency an explicit requirement that failure to obey any court order will immediately terminate all funding for it.

Israeli army bulldozed graves in war cemetery [Richard Stallman's Political Notes]

Last fall the Israeli army bulldozed graves in a war cemetery in which were buried Allied soldiers who died in World War I and II. Some people are shocked.

You'd think that some people are more concerned about symbolic insult to deceased Australians than about the killing of living Palestinians.

Illinois established connection with WHO [Richard Stallman's Political Notes]

Illinois has established a connection with WHO, to coordinate with global response to diseases.

This is necessary because the saboteur in chief has blocked the US government from doing this job.

Trump suggests Republicans should "take over" elections [Richard Stallman's Political Notes]

*Trump suggests Republicans should "take over" elections to protect the [Republican] party* from losing elections.

Artificial species of life [Richard Stallman's Political Notes]

Discussing the possibility and danger of artificial species of life, being created and released.

It should be noted that AlphaFold2 is not perfect. It can predict the three-dimesional shape of of most amino-acid chains, but there is a substantial fraction that it gets wrong.

Nonetheless, it does a better job of this than any other known system, including a human being, so I think it qualifies as "intelligence".

Discord cracked, government IDs stolen [Richard Stallman's Political Notes]

*[The unjust digital communication site] Discord says users' government IDs [which it demanded for government-mandated] age checks [were] stolen by [crackers].*

  • Discord is pervasively unjust, since it requires every user to run nonfree software, and nonfree software is always unjust.
  • Discord did a lot of surveillance years before it started demanding proof of users' ages.
  • Please maintain the distinction between "hackers" (people who enjoy playful cleverness) and "crackers" (people who focus on how to break or defend digital security measures). I love hacking; I hardly pay much attention to cracking.

Cop infiltrated anti-fascist group in UK [Richard Stallman's Political Notes]

Three anti-fascist activists in the UK accuse an undercover cop who infiltrated their group of trying to recruit them into a plan to firebomb a store. He told them that the store was a front for some right-wing activity.

They were not inclined towards violence, so they rejected the suggestion immediately. Will he be prosecuted for this attempt to organize crime?

Democrats' 10 demands to "rein in" deportation thugs [Richard Stallman's Political Notes]

*Democrats' 10 demands to "rein in" [the deportation thugs] – the full list of proposed reforms.*

I support all these. I also support taking away the extra funds the deportation thugs received in the Big Bad Bill and giving them to medical treatment for nonwealthy Americans, and we ought to demand both. But if we must choose one or the other, I would choose the former. Fascist government is a worse problem than poverty.

10:21

Pluralistic: Europe takes a big step towards a post-dollar world (11 Feb 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



An old-fashioned credit-card imprinter; its handle is a cracked and dirty American flag. Under the slip is a gold Trump Card. Looming over the imprinter is the top half of Trump's face, brooding and squint-eyed; it has been altered to increase its orangeness, to add bloodshot sclera to his eyes, and to add liver spots. At its bottom, the face merges with a bubbling, hellish cauldron of smoke and flame.

Europe takes a big step towards a post-dollar world (permalink)

There's a reason every decentralized system eventually finds its way onto a platform: platforms solve real-world problems that platform users struggle to solve for themselves.

I've written before about the indie/outsider author Crad Kilodney, who wrote, edited, typeset and published chapbooks of his weird and wonderful fiction, and then sold his books from Toronto street-corners with a sign around his neck reading VERY FAMOUS CANADIAN AUTHOR BUY MY BOOKS (or, if he was feeling spicy, simply: MARGARET ATWOOD):

https://pluralistic.net/2024/02/19/crad-kilodney-was-an-outlier/#intermediation

Crad was a hell of a writer and a bit of a force of nature, but there are plenty of writers I want to hear from who are never going to publish their own books, much less stand on a street-corner selling them with a MARGARET ATWOOD sign around their necks. Publishers, editors, distributors and booksellers all do important work, allowing writers to get on with their writing, taking all the other parts of the publishing process off their shoulders.

That's the value of platforms. The danger of platforms is when they grow so powerful that they usurp the relationship between the parties they are supposed to be facilitating, locking them in and then extracting value from them (someone should coin a word to describe this process!):

https://pluralistic.net/2024/11/07/usurpers-helpmeets/#disreintermediation

Everyone needs platforms: writers, social media users, people looking for a romantic partner. What's more, the world needs platforms. Say you want to connect all 200+ countries on Earth with high-speed fiber lines; you can run a cable from each country to every other country (about 21,000 cables, many of them expensively draped across the ocean floor), or you can pick one country (preferably one with both Atlantic and Pacific coasts) and run all your cables there, and then interconnect them.

That's America, the world's global fiber hub. The problem is, America isn't just a platform for fiber interconnections – it's a Great Power that uses its position at the center of the world's fiber networks to surveil and disrupt the world's communications networks:

https://en.wikipedia.org/wiki/Edward_Snowden

That's a classic enshittification move on a geopolitical scale. It's not the only one America's made, either.

Consider the US dollar. The dollar is to global commerce what America's fiber head-ends are to the world's data network: a site of essential, (nominally) neutral interchange that is actually a weapon that the US uses to gain advantage over its allies and to punish its enemies:

https://pluralistic.net/2023/10/10/weaponized-interdependence/#the-other-swifties

The world's also got about 200 currencies. For parties in one country to trade with those in another country, the buyer needs to possess a currency the seller can readily spend. The problem is that setting up 21,000 pairwise exchange markets from every currency to every other currency is expensive and cumbersome – traders would have to amass reserves of hundreds of rarely used currencies, or they would have to construct long, brittle, expensive, high-risk chains that convert, say, Thai baht into Icelandic kroner to Brazilian reals and finally into Costa Rican colones.

Thanks to a bunch of complicated maneuvers following World War II, the world settled on the US dollar as its currency platform. Most important international transactions use "dollar clearing" (where goods are priced in USD irrespective of their country of origin) and buyers need only find someone who will convert their currency to dollars in order to buy food, oil, and other essentials.

There are two problems with this system. The first is that America has never treated the dollar as a neutral platform; rather, American leaders have found subtle, deniable ways to use "dollar dominance" to further America's geopolitical agenda, at the expense of other dollar users (you know, "enshittification"). The other problem is that America has become steadily less deniable and subtle in these machinations, finding all kinds of "exceptional circumstances" to use the dollar against dollar users:

https://pluralistic.net/2025/11/26/difficult-multipolarism/#eurostack

America's unabashed dollar weaponization has been getting worse for years, but under Trump, the weaponized dollar has come to constitute an existential risk to the rest of the world, sending them scrambling for alternatives. As November Kelly says, Trump inherited a poker game that was rigged in his favor, but he still flipped over the table because he resents having to pretend to play at all:

https://pluralistic.net/2026/01/26/i-dont-want/#your-greenback-dollar

Once Trump tried to steal Greenland, it became apparent that the downsides of the dollar far outweigh its upsides. Last month, Christine Lagarde (president of the European Central Bank) made a public announcement on a radio show that Europe "urgently" needed to build its own payment system to avoid the American payment duopoly, Visa/Mastercard:

https://davekeating.substack.com/p/can-europe-free-itself-from-visamastercard

Now, there's plenty of reasons to want to avoid Visa/Mastercard, starting with cost: the companies have raised their prices by more than 40% since the pandemic started (needless to say, updating database entries has not gotten 40% more expensive since 2020). This allows two American companies to impose a tax on the entire global economy, collecting swipe fees and other commissions on $24t worth of the world's transactions every year:

https://finance.yahoo.com/news/europe-banks-launching-product-break-101215642.html

But there's another reason to get shut of Visa/Mastercard: Trump controls them. He can order them to cut off payment processing for any individual or institution that displeases him. He's already done this to punish the International Criminal Court for issuing a genocide arrest warrant for Benjamin Netanyahu, and against a Brazilian judge for finding against the criminal dictator Jair Bolsonaro (Trump also threatened to have the judge in Bolsonaro's case assassinated). What's more, Visa/Mastercard have a record of billions (trillions?) of retail transactions taking place between non-Americans, which Trump's officials can access for surveillance purposes, or just to conduct commercial espionage to benefit American firms as a loyalty bonus for the companies that buy the most $TRUMP coins.

Two days after Lagarde's radio announcement, 13 European countries announced the formation of "EuroPA," an alliance that will facilitate regionwide transactions that bypass American payment processors (as well as Chinese processors like Alipay):

https://news.europawire.eu/european-payment-leaders-sign-mou-to-create-a-sovereign-pan-european-interoperable-payments-network/eu-press-release/2026/02/02/15/34/11/168858/

As European Business Magazine points out, EuroPA is the latest in a succession of attempts to build a European payments network:

https://europeanbusinessmagazine.com/business/europes-24-trillion-breakup-with-visa-and-mastercard-has-begun/

There's Wero, a 2024 launch from the 16-country European Payments Initiative, which currently boasts 47m users and 1,100 banks in Belgium, France and Germany, who've spent €7.5b through the network:

https://finance.yahoo.com/news/europe-banks-launching-product-break-101215642.html

Wero launched as a peer-to-peer payment system that used phone numbers as identifiers, but it expanded into retail at the end of last year, with several large retailers (such as Lidl) signing on to accept Wero payments.

Last week, Wero announced an alliance with EuroPA, making another 130m people eligible to use the service, which now covers 72% of the EU and Norway. They're rolling out international peer-to-peer payments in 2026, and retail/ecommerce payments in 2027.

These successes are all the more notable for the failures they follow, like Monnet (born 2008, died 2012). Even the EPI has been limping along since its founding, only finding a new vigor on the heels of Trump threatening EU member states with military force if he wasn't given Greenland.

As EBM writes, earlier efforts to build a regional payment processor foundered due to infighting among national payment processors within the EU, who jealously guarded their own turf and compulsively ratfucked one another. This left Visa/Mastercard as the best (and often sole) means of conducting cross-border commerce. This produced a "network effect" for Visa/Mastercard: since so many Europeans had an American credit card in their wallets, European merchants had to support them; and since so many EU merchants supported Visa/Mastercard, Europeans had to carry them in their wallets.

Network effects are pernicious, but not insurmountable. The EU is attacking this problem from multiple angles – not just through EuroPA, but also through the creation of the Digital Euro, a Central Bank Digital Currency (CBDC). Essentially, this would give any European who signs up an account with the ECB, the federal bank of the Eurozone. Then, using an app or a website, any two Digital Euro customers could transfer funds to one another using the bank's own ledgers, instantaneously and at zero cost.

EBM points out that there's a critical difficulty in getting EuroPA off the ground: because it is designed to be cheap to use, it doesn't offer participating banks the windfall profits that Visa/Mastercard enjoy, which might hold back investment in EuroPA infrastructure.

But banks are used to making small amounts of money from a lot of people, and with the Digital Euro offering a "public option," the private sector EuroPA system will have a competitor that pushes it to continuously improve its systems.

It's true that European payment processing has been slow and halting until now, but that was when European businesses, governments and households could still pretend that the dollar – and the payment processing companies that come along with it – was a neutral platform, and not a geopolitical adversary.

If there's one thing the EU has demonstrated over the past three years, it's that geopolitical threats from massive, heavily armed mad empires can break longstanding deadlocks. Remember: Putin's invasion of Ukraine and the end of Russian gas moved the EU's climate goals in ways that beggar belief: the region went from 15 years behind on its solar rollout to ten years ahead of schedule in just a handful of months:

https://pluralistic.net/2026/02/05/contingency/#this-too-shall-pass

This despite an all-out blitz from the fossil fuel lobby, one of the most powerful bodies in the history of civilization.

Crises precipitate change, and Trump precipitates crises.


Hey look at this (permalink)



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

Object permanence (permalink)

#15yrsago Realtime API for Congress https://web.archive.org/web/20110211101723/http://sunlightlabs.com/blog/2011/the-real-time-congress-api/

#15yrsago Steampunk fetish mask with ear-horn https://bob-basset.livejournal.com/156159.html

#10yrsago Facebook’s “Free Basics” and colonialism: an argument in six devastating points https://web.archive.org/web/20160211182436/https://www.theatlantic.com/technology/archive/2016/02/facebook-and-the-new-colonialism/462393/

#10yrsago UK surveillance bill condemned by a Parliamentary committee, for the third time https://web.archive.org/web/20250523013320/https://www.wired.com/story/technology-ip-bill-surveillance-committee/

#10yrsago Haunted by a lack of young voter support, Hillary advertises on the AOL login screen https://web.archive.org/web/20160211080839/http://www.weeklystandard.com/hillary-reaches-base-with-aol-login-page-ad/article/2001023

#10yrsago Celebrate V-Day like an early feminist with these Suffragist Valentines https://web.archive.org/web/20160216100606/https://www.lwv.org/blog/votes-women-vintage-womens-suffrage-valentines

#10yrsago Elements of telegraphic style, 1928 https://writeanessayfor.me/telegraph-office-com

#10yrsago Disgraced ex-sheriff of LA admits he lied to FBI, will face no more than 6 months in prison https://web.archive.org/web/20160211041117/https://www.latimes.com/local/lanow/la-me-ln-ex-l-a-county-sheriff-baca-jail-scandal-20160210-story.html

#5yrsago Apple puts North Dakota on blast https://pluralistic.net/2021/02/11/rhodium-at-2900-per-oz/#manorial-apple

#5yrsago Catalytic converter theft https://pluralistic.net/2021/02/11/rhodium-at-2900-per-oz/#ccscrap

#5yrsago Adam Curtis on criti-hype https://pluralistic.net/2021/02/11/rhodium-at-2900-per-oz/#hypernormal

#5yrsago Dependency Confusion https://pluralistic.net/2021/02/11/rhodium-at-2900-per-oz/#extra-index-url

#1yrago Musk steals a billion dollars from low-income Americans and sends it to Intuit https://pluralistic.net/2025/02/11/doubling-up-on-paperwork/#rip-freefile


Upcoming appearances (permalink)

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



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

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026
  • "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, 2027

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



Colophon (permalink)

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 (1027 words today, 26735 total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

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

Pluralistic.net

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

https://pluralistic.net/plura-list

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

https://mamot.fr/@pluralistic

Medium (no ads, paywalled):

https://doctorow.medium.com/

Twitter (mass-scale, unrestricted, third-party surveillance and advertising):

https://twitter.com/doctorow

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

10:07

Time well spent [Seth's Blog]

What an admirable goal. Perhaps the overriding goal of all goals.

How often do we measure this? Do we even know how?

Do the systems we’re in push us from considering this? I wonder why.

08:21

The Mark Of Donalds [Penny Arcade]

New Comic: The Mark Of Donalds

06:21

Girl Genius for Wednesday, February 11, 2026 [Girl Genius]

The Girl Genius comic for Wednesday, February 11, 2026 has been posted.

02:49

01:42

SPD Policy Undermines Rivera’s Immigrant-Protecting Bill [The Stranger]

Unfortunately, nothing in government is that simple, and the Seattle Police Department (SPD) exists. by Micah Yip

Councilmember Maritza Rivera has done something right. 

This morning, the Public Safety Committee passed her bill that protects immigrants from our own municipal code. It strikes language that says city employees (including police) must “cooperate with, not hinder” federal immigration enforcement, and adds a section clarifying that they are not to collect or share personal information for immigration agencies, either.

Yay! Thanks, Rivera!

Unfortunately, nothing in government is that simple, and the Seattle Police Department (SPD) exists. And once again, it is preventing us from having nice things. While police are technically regulated under Rivera’s bill, SPD policies give them a pass. 

Let’s start with the language repeal. Rivera’s bill removes that “cooperation” line, which originated in 1986 from an initiative passed by Seattle voters (what the hell, ’80s Seattle voters!). Excellent first step. Rivera’s bill also creates a new section in the Seattle Municipal Code (SMC) blocking city employees and officers from sharing personal information—like someone’s address, phone number or social media handle—for immigration enforcement, except if required by a court order. Good second step. 

Both changes align city code with state laws like the 2019 Keep Washington Working (KWW) Act and the 2020 Courts Open to All (COTA) Act, which place information collection and sharing restrictions on local law enforcement, judges, court personnel and prosecutors. The bill also aligns the city code with the city code. In 2003, a “don’t ask” policy was added to the SMC—city employees can’t ask about someone’s immigration status.

Except officers if they have “reasonable suspicion” that (1) a person has been previously deported, (2) that person is again in the United States and (3) they’ve committed or are committing a felony. 

On top of that, SPD has their own policies independent of city and state law. According to Council Central Staff, the department has “chosen to enact a policy” for immigration situations that is “quite a bit narrower and does not contemplate any of the criteria” described in current city or state law. 

It’s a whole mess: SPD policy generally prohibits collecting immigration info. But the Chief can make exceptions. But Keep Washington Working keeps law enforcement from data collection and sharing for immigration enforcement. But officers are also regulated under the 2003 SMC amendment. But they’re also given a pass under the same amendment.

It’s convoluted enough that Councilmember Eddie Lin abstained. 

“I don’t want to hold up the important bill and good work that you brought forward, Councilmember Rivera,” he said. “But it just seems like there’s still a bit of confusion, at least in my mind.”

Rivera acknowledged the shortfalls. She said KWW likely overrides the SMC code , but said they’d need to do further legal analysis before amending that section. She was adamant—passionate, even—that the bill should still be passed. 

“One doesn’t preclude the other, so we can move this bill forward,” Rivera said. “[We can] take this what I deem to be an important step, all while then having the conversations about what else.”

The bill passed, with Rivera, Committee Chair Bob Kettle and Vice Chair Rob Saka voting yes. Councilmember Debora Juarez was absent. It’ll go before the full City Council at the February 17 meeting.

Pacific Science Center’s Boeing IMAX Theater to Be Sold to Space Needle [The Stranger]

The question of what that “IMAX experience” entails will now be top of mind for Seattle movie lovers. Many consider the Boeing IMAX to be one of the best places to go see the biggest releases of the year, but staff who spoke to The Stranger are concerned that this new buyer isn’t interested in screening first-run releases of Hollywood films, like Christopher Nolan’s upcoming The Odyssey. by Chase Hutchinson

The Boeing IMAX theater, the biggest IMAX theatre in the state, has been closed since Feb. 1 and will be sold to a new owner: the Space Needle Corporation, the Pacific Science Center confirmed in an email Tuesday. 

“PacSci will not resume operations in that theater,” the spokesperson said. “Once the transaction concludes, we anticipate that the buyer will make some renovations and reopen the theater as an IMAX experience later this spring.”

The question of what that “IMAX experience” entails will now be top of mind for Seattle movie lovers. Many consider the Boeing IMAX to be one of the best places to go see the biggest releases of the year, but staff who spoke to The Stranger are concerned that this new buyer isn’t interested in screening first-run releases of Hollywood films, like Christopher Nolan’s upcoming The Odyssey. A spokesperson for PacSci said they will be showing Nolan’s film at their smaller theater, the PACCAR, but deferred questions about the future of film programming at the Boeing IMAX to the Space Needle Corporation. 

In a statement shared with The Seattle Times, Space Needle CEO Ron Sevart said “we’re excited to partner with Pacific Science Center in continuing the availability of two IMAX theaters on the Seattle Center Campus” and that it will continue to operate as a movie theater following a "brief renovation focused on improving the concessions and arrival experiences, scheduled to end in May." However, he didn’t specify what movies or programming will be shown there, only saying “we haven’t explored any use other than as an IMAX theater.”

“While continued operation of the Boeing IMAX Theater is our short-term focus, we can’t wait to explore other partnership opportunities that support the future of Pacific Science Center and the Seattle Center,” Sevart said in a release. 

Also speaking to the Times, PacSci President and CEO Will Daugherty said, “the economics of operating a movie theater have become increasingly challenging. It made sense for PacSci to include the Boeing IMAX Theater in this transaction.” 

Can our movie theaters catch a break already? SIFF ended its lease at the Egyptian last year, the Varsity Theatre closed just last month, and the Grand Illusion is still looking for a new home. However, the Boeing IMAX is something different. It’s the region’s “only true IMAX,” as the theater’s website once referred to it, with a 1.42:1 aspect ratio AKA a massive screen. When Ryan Coogler’s stellar vampire horror Sinners swept the nation last year, it was one of only a handful of places in the country where you could see the film as the filmmaker intended. (Having seen the film, I can’t overstate how much of an impact this makes.) 

Now, it’s an open question whether they’ll be able to experience anything like that again anytime soon at the Boeing IMAX. As for the impact the sale could have on employees, a spokesperson for PacSci said “we have not yet determined the impact on PacSci staffing.”

Editor's Note: A previous version of this story said that the sale was final. Since publication, the Pacific Science Center has clarified that the sale has not yet gone through, but is expected to. 

00:56

Pacific Science Center’s Boeing IMAX Theater Sold to Space Needle [The Stranger]

The question of what that “IMAX experience” entails will now be top of mind for Seattle movie lovers. Many consider the Boeing IMAX to be one of the best places to go see the biggest releases of the year, but staff who spoke to The Stranger are concerned that this new buyer isn’t interested in screening first-run releases of Hollywood films, like Christopher Nolan’s upcoming The Odyssey. by Chase Hutchinson

The Boeing IMAX theater, the biggest IMAX theatre in the state, has been closed since Feb. 1 and has been sold to a new owner: the Space Needle Corporation, the Pacific Science Center confirmed in an email Tuesday. 

“PacSci will not resume operations in that theater,” the spokesperson said. “Once the transaction concludes, we anticipate that the buyer will make some renovations and reopen the theater as an IMAX experience later this spring.”

The question of what that “IMAX experience” entails will now be top of mind for Seattle movie lovers. Many consider the Boeing IMAX to be one of the best places to go see the biggest releases of the year, but staff who spoke to The Stranger are concerned that this new buyer isn’t interested in screening first-run releases of Hollywood films, like Christopher Nolan’s upcoming The Odyssey. A spokesperson for PacSci said they will be showing Nolan’s film at their smaller theater, the PACCAR, but deferred questions about the future of film programming at the Boeing IMAX to the Space Needle Corporation. 

In a statement shared with The Seattle Times, Space Needle CEO Ron Sevart said “we’re excited to partner with Pacific Science Center in continuing the availability of two IMAX theaters on the Seattle Center Campus” and that it will continue to operate as a movie theater following a "brief renovation focused on improving the concessions and arrival experiences, scheduled to end in May." However, he didn’t specify what movies or programming will be shown there, only saying “we haven’t explored any use other than as an IMAX theater.”

“While continued operation of the Boeing IMAX Theater is our short-term focus, we can’t wait to explore other partnership opportunities that support the future of Pacific Science Center and the Seattle Center,” Sevart said in a release. 

Also speaking to the Times, PacSci President and CEO Will Daugherty said, “the economics of operating a movie theater have become increasingly challenging. It made sense for PacSci to include the Boeing IMAX Theater in this transaction.” 

Can our movie theaters catch a break already? SIFF ended its lease at the Egyptian last year, the Varsity Theatre closed just last month, and the Grand Illusion is still looking for a new home. However, the Boeing IMAX is something different. It’s the region’s “only true IMAX,” as the theater’s website once referred to it, with a 1.42:1 aspect ratio AKA a massive screen. When Ryan Coogler’s stellar vampire horror Sinners swept the nation last year, it was one of only a handful of places in the country where you could see the film as the filmmaker intended. (Having seen the film, I can’t overstate how much of an impact this makes.) 

Now, it’s an open question whether they’ll be able to experience anything like that again anytime soon at the Boeing IMAX. As for the impact the sale could have on employees, a spokesperson for PacSci said “we have not yet determined the impact on PacSci staffing.”

00:07

Redox gets working rustc and Cargo [OSnews]

Another month, another Redox progress report. January turned out to be a big month for the Rust-based general purpose operating system, as they’ve cargo and rustc working on Redox.

Cargo and rustc are now working on Redox! Thanks to Anhad Singh and his southern-hemisphere Redox Summer of Code project, we are now able to compile your favorite Rust CLI and TUI programs on Redox. Compilers are often one of the most challenging things for a new operating system to support, because of the intensive and somewhat scattershot use of resources.

↫ Ribbon and Ron Williams

That’s not all for January, though. An initial capability-based security infrastructure has been implemented for granular permissions, SSH support has been improved and now works properly for remoting into aRedox sessions, and USB input latency has been massively reduced. You can now also add, remove, and change boot parameters in a new text editing environment in the bootloader, and the login manager now has power and keyboard layout menus. January also saw the first commit made entirely from within Redox, which is pretty neat.

Of course, there’s much more, as well as the usual slew of kernel, glibc, and application bugfixes and small changes.

80386 barrel shifter [OSnews]

I’m currently building an 80386-compatible core in SystemVerilog, driven by the original Intel microcode extracted from real 386 silicon. Real mode is now operational in simulation, with more than 10,000 single-instruction test cases passing successfully, and work on protected-mode features is in progress. In the course of this work, corners of the 386 microcode and silicon have been examined in detail; this series documents the resulting findings.

In the previous post, we looked at multiplication and division — iterative algorithms that process one bit per cycle. Shifts and rotates are a different story: the 386 has a dedicated barrel shifter that completes an arbitrary multi-bit shift in a single cycle. What’s interesting is how the microcode makes one piece of hardware serve all shift and rotate variants — and how the complex rotate-through-carry instructions are handled.

↫ nand2mario

I understood some of this.

“The original vi is a product of its time (and its time has passed)” [OSnews]

For me, vim is a combination of genuine improvements in vi’s core editing behavior (cf), frustrating (to me) bits of trying too hard to be smart (which I mostly disable when I run across them), and an extension mechanism I ignore but people use to make vim into a superintelligent editor with things like LSP integrations.

Some of the improvements and additions to vi’s core editing may be things that Bill Joy either didn’t think of or didn’t think were important enough. However, I feel strongly that some or even many of omitted features and differences are a product of the limited environments vi had to operate in. The poster child for this is vi’s support of only a single level of undo, which drastically constrains the potential memory requirements (and implementation complexity) of undo, especially since a single editing operation in vi can make sweeping changes across a large file (consider a whole-file ‘:…s/../../’ substitution, for example).

↫ Chris Siebenmann

I have only very limited needs when it comes to command-line text editors, and as such, I absolutely swear by the simplicity of nano. In other words, I’m probably not the right person to dive into the editor debate that’s been raging for decades, but reading Siebenmann’s points I can’t help but agree. In this day and age, defaulting an editor that has only one level of undo is insanity, and I can’t imagine doing the kind of complex work people who use command-line editors do while being limited to just one window.

As for the debate about operating systems that symlink the vi command to vim or a similar improved variant of vi, I feel like that’s the wrong thing to do. Much like how I absolutely despise how macOS hides its UNIX-y file system structure from the GUI, leading to bizarre ls results in the terminal, I don’t think you should be tricking users. If a user enters vi, it should launch vi, and not something that kind of looks like vi but isn’t. Computers shouldn’t be lying to users.

If they don’t want their users to be using vi, they shouldn’t be installing vi in the first place.

Beneath the Mask [The Stranger]

Shapiro’s journey through the art world is a storied one. by Amanda Manitach

Somewhere in Manhattan, sometime in the mid 1980s: a friend invited Ann Leda Shapiro to a clandestine gathering of nameless, faceless women at an artist’s loft. “Come to this meeting,” she was told. “We’re pissed off. We’re going to do something.” It turned out to be the beginning of the Guerrilla Girls.

Shapiro kept the secret of her involvement for 40 years; she will still only say so much. But there is one story about the time The Washington Post was sending people up to conduct a photoshoot. This posed a problem, as one of the primary commitments of the group was anonymity. Shapiro, taking notes for their meeting, was scribbling down ideas as fast as they came, when she committed a misspelling that would make art history: instead of guerrilla, she wrote gorilla. It was an a-ha moment, and their solution—the now-iconic gorilla mask—was born.

Shapiro’s journey through the art world is a storied one, her intersection with the Guerilla Girls just one of many tantalizing threads that could be spun into a volume. As she (selectively) spills the lore, our conversation is lubricated by multiple cups of coffee served in the artist’s Vashon Island living room. It’s a well-loved and lived-in house just up the road from a rocky slip of beach. Sun glitters off the face of the water, flooding the space with dappled light that dances across the ceiling with each break in the clouds. An acupuncturist’s table—not an easel or drawing desk—takes primary place in the room.

She’s lived here for 30 years, tucked away from the limelight.

Like the majority of female artists who achieve renown, it’s only been later in life that she’s been getting her flowers. (Shapiro turns 80 this August, though age feels like a preposterous abstraction here; she moves and speaks with the vivacity of someone 80 going on 18.) Last spring her solo exhibit, Interconnected Worlds, debuted in Antwerp. Another solo, Body Is Landscape, is currently hanging in Hong Kong. This January, Shapiro received the Betty Bowen Award—one of the region’s most coveted—which comes with a hefty cash prize and an exhibition at Seattle Art Museum. (Hers is scheduled for 2027.)

Categorizing Shapiro’s work is no easy feat. Watercolor and gouache paintings with an energetic, illustrative quality that plumb the esoteric, autobiographical, cosmic cartographies of the body. The body is ever-present in her work. Bodies that serve as landscapes. Bodies that swim in celestial storms and electric seas. Bodies as fine as stardust. Bodies that turn into trees that turn into something much deeper and primal. Detail so minute it seems physically impossible. Humor that is by turns brash, vulnerable, and grotesque mingles with sacred rage throughout earlier work; later imagery unfolds labyrinthine (self)portraiture that could keep a psychoanalyst busy for years.

It’s the kind of work the world is hungry for now. But it wasn’t always like this.

Shapiro grew up a “red diaper baby,” the daughter of card-carrying, working-class Communist parents who lived in a housing project in Queens. They were “neglectful, but had fabulous values,” she notes. Shapiro’s mother encouraged her artistic tendencies (which included being allowed to paint on the walls). On Saturdays, they took the train into the city so Shapiro could take classes at the MoMA’s art school, where she learned to “paint with sponges and throw paint at paper.” When the family eventually relocated to Manhattan, they moved into an apartment directly across from the American Museum of Natural History—a proximity that contributed to the development of Shapiro’s approach to close observation of the natural world. There was never going to be any other way but art for Shapiro; in her free time after high school she haunted the museum across the street, filling sketchbooks with intricate drawings of its curiosities while inquisitive museum guards looked on.

After high school, Shapiro rented a walk-up on the Lower East Side—the kind with a bathtub in the kitchen and a toilet down the hall. She worked at a library, then an advertising agency (where, to assuage boredom, she typed out entire chapters of Moby Dick, one page at a time). She saved enough cash to catch a hippie bus to San Francisco, where she rented a room under a staircase and enrolled in the San Francisco Art Institute. She modeled and painted murals for money. She marched with Allen Ginsberg and made low-tech, psychedelic oil-and-paint visuals for the first Kool-Aid Acid Test concert (Shapiro was perhaps the only person present not tripping on drugs).

She attended the University of California, Davis, for grad school, where the critiques were performed exclusively by mustached men. When they brought her to tears during her first review (her paintings were too “primitive,” they berated), Shapiro resolved to never let such a thing happen again. At the next review, she arrived with a rubber penis strapped to her face. She nearly asphyxiated (she forgot to poke holes in the tip), but the stunt was so off-putting it worked; from that day on, the mustaches kept mum and she earned an MFA without further incident.

After graduating, Shapiro traded oil paints for watercolors, scaling to a more intimate style that reflected the inspirations of her youth: Little Lulu comics and the delicate nature drawings of her museum sketchbooks. When a curator from the Whitney Museum of American Art paid Shapiro a studio visit, they offered her a solo show of works on paper—an honor for any artist, let alone a recent graduate. But when the exhibit opened in the fall of 1973, Shapiro was appalled to find they had pulled three of her best paintings at the last minute. “I was shocked,” she says. “I had no idea I was doing anything that was controversial.”

The censored works in question—three watercolors completed in 1971—seem disparate at first glance, but each is threaded with the same provocative humor as Shapiro’s rubber dick that doubled as a mask. One of the paintings, Two Sides of Self, depicts a pair of hermaphroditic mermaids whose bodies appear to conjoin at the breasts, lips, and (male) genitalia. The central figure in Woman Landing on Man in the Moon is a female astronaut in a NASA spacesuit; three American flag patches placed across the uniform reveal slits through which breasts and a penis protrude. Across the inky void in the background, a fleet of tiny airplanes skywrites: one needs a cock to get by.

“I was just asking questions innocently, like, what is male and what is female?” says Shapiro. “There was no multiplicity of pronouns then, or anything like that. I was asking, do you have to be male—or act like a male—to be able to move ahead in the world, to be visible?”

The Whitney wasn’t having it.

Happily, Two Sides of Self and Woman Landing on Man in the Moon were both eventually acquired by the Seattle Art Museum in 2015—part of the Deed of Gift spearheaded by artist Matthew Offenbacher and his partner Jennifer Nemhauser after he won the Neddy Artist Award. Offenbacher used around $20,000 of the award funds to purchase works by women and queer artists, which were then gifted to SAM as a gesture of solidarity to the community and an attempt to help rectify the dearth of work by minorities in the museum’s collection.

That would be far in the future, however.

Following the ’73 exhibit, Shapiro withdrew from the art world. She would continue to paint, but she would not be censored, nor self-censor. Going forward, she exhibited only in underground spaces and spent the next two decades as a self-described “academic vagabond woman.” She taught criticism and art at universities across the country. She spent a semester in a boat sailing the world. In her six years of undergrad and graduate school, Shapiro had never had a woman teacher, not once; while teaching, she found herself the sole woman in every department. The token female academic, with a strap-on cock for a nose.

Or a gorilla mask. It was around this time that Shapiro found herself amid a group of like-minded artists who were pissed. It was also around this time that a close friend was diagnosed with AIDS, an event that would indirectly shift the trajectory of her life. Shapiro took up volunteering at a clinic in Austin that treated people with the disease. The clinic happened to specialize in acupuncture.

“When I started reading about the theory and history and philosophy of Chinese medicine, it was like falling in love,” she says. The definition of qi is not merely energy, Shapiro explains: “It is matter on the verge of becoming. It’s that moment when you’re living and dying simultaneously. And that’s what I’m trying to paint about, the dichotomies—that things aren’t in opposition, but they’re in interconnectivity.”

Shapiro left her university job to study acupuncture in Seattle. Just for a year (she thought). She fell for the practice as much as the theory—and she was really good at it.

To say Shapiro’s work/life amounts to something approximating Gesamtkunstwerk—a total work of art, in which everything merges into a cohesive whole—is far from a stretch, as art and acupuncture melded on the island she made home. During this time she published multiple books, including a picture book about Vashon, My Island, and a graphic novel, Art Notes of an Acupuncturist. In the latter, she outlines a pictorial history of the synaesthetic cosmologies contained within the human body. With bursts of grotesque humor and poetic wit, Shapiro illustrates the interconnections at play in orifices and organs, tracing the invisible threads between elements and colors, emotions and smells. It reads like a legend to unlock the symbolism of her later work.

Because the demand for Shapiro’s art has increased, there’s less time for acupuncture lately; almost all her hours are committed to the studio, where she’s currently working on six pieces for her upcoming exhibit at SAM. As she leads the way into her workspace—a standalone building behind her house, where soft island light pours through skylights—she explains a piece she is working on, about the ginkgo trees she recently encountered in Japan. “They’re the oldest trees in existence, living fossils,” Shapiro muses. “They survived the Hiroshima atomic bomb.”

But, of course, it’s about more than just that. If you look closely, you can trace the nervous system of the universe in the wood and roots of those trees.

Tuesday, 10 February

22:35

ICE Says They Will Play “Key Part of Overall Security Apparatus” of World Cup [The Stranger]

Hey, we’re hosting the World Cup, and not far from the immigrant rich Chinatown-International District. And since this is the “World” Cup, tens of thousands of people from around the world will be here. That's a problem! by Vivian McCall

While defending Trump’s mass deportation program before Congress today, ICE’s acting director Todd Lyons told Rep. Nellie Pou of New Jersey that the agency would be a “key part of the overall security apparatus” of the FIFA World Cup this year.

Hey, we’re hosting the World Cup, and not far from the immigrant rich Chinatown-International District. And since this is the “World” Cup, the world will be here.

That’s a problem. Not only for us, but for Los Angeles, San Francisco, Boston, Philadelphia, Pou’s East Rutherford, New Jersey, and all the other host cities that’ve promised to protect their immigrants from this violent, unpopular agency.

I asked Mayor Katie Wilson’s office if A) this is the first they’ve heard of this B) whether the Department of Homeland Security, ICE, Customs and Border Protection, or the Trump Administration informed the city of its “security apparatus” C) if they suspected this would happen, given ICE’s vague security role at the Winter Olympics and D) what it can do to protect Seattle if ICE does come here for the World Cup.

The office did not return my request for comment.

Lyons didn’t pull this plan out of thin air. Last summer, Border Patrol posted and then deleted a statement on Facebook saying that they would be “suited and booted ready to provide security for the first round of games.” And yesterday, radio station KTTH wrote that Seattle will “be protected by a unified, multi-agency security operation” as it prepares to host the matches.

“What you have when you have U.S. government agencies thinking about the defense and the security of U.S. national security and citizens is pulling together our top resources and the most experienced folks from the U.S. government who have worked on these major events,” Mignon Houston, the deputy spokesperson for the U.S. Department of State, told conservative radio host Jason Rantz.

22:21

Patch Tuesday, February 2026 Edition [Krebs on Security]

Microsoft today released updates to fix more than 50 security holes in its Windows operating systems and other software, including patches for a whopping six “zero-day” vulnerabilities that attackers are already exploiting in the wild.

Zero-day #1 this month is CVE-2026-21510, a security feature bypass vulnerability in Windows Shell wherein a single click on a malicious link can quietly bypass Windows protections and run attacker-controlled content without warning or consent dialogs. CVE-2026-21510 affects all currently supported versions of Windows.

The zero-day flaw CVE-2026-21513 is a security bypass bug targeting MSHTML, the proprietary engine of the default Web browser in Windows. CVE-2026-21514 is a related security feature bypass in Microsoft Word.

The zero-day CVE-2026-21533 allows local attackers to elevate their user privileges to “SYSTEM” level access in Windows Remote Desktop Services. CVE-2026-21519 is a zero-day elevation of privilege flaw in the Desktop Window Manager (DWM), a key component of Windows that organizes windows on a user’s screen. Microsoft fixed a different zero-day in DWM just last month.

The sixth zero-day is CVE-2026-21525, a potentially disruptive denial-of-service vulnerability in the Windows Remote Access Connection Manager, the service responsible for maintaining VPN connections to corporate networks.

Chris Goettl at Ivanti reminds us Microsoft has issued several out-of-band security updates since January’s Patch Tuesday. On January 17, Microsoft pushed a fix that resolved a credential prompt failure when attempting remote desktop or remote application connections. On January 26, Microsoft patched a zero-day security feature bypass vulnerability (CVE-2026-21509) in Microsoft Office.

Kev Breen at Immersive notes that this month’s Patch Tuesday includes several fixes for remote code execution vulnerabilities affecting GitHub Copilot and multiple integrated development environments (IDEs), including VS Code, Visual Studio, and JetBrains products. The relevant CVEs are CVE-2026-21516, CVE-2026-21523, and CVE-2026-21256.

Breen said the AI vulnerabilities Microsoft patched this month stem from a command injection flaw that can be triggered through prompt injection, or tricking the AI agent into doing something it shouldn’t — like executing malicious code or commands.

“Developers are high-value targets for threat actors, as they often have access to sensitive data such as API keys and secrets that function as keys to critical infrastructure, including privileged AWS or Azure API keys,” Breen said. “When organizations enable developers and automation pipelines to use LLMs and agentic AI, a malicious prompt can have significant impact. This does not mean organizations should stop using AI. It does mean developers should understand the risks, teams should clearly identify which systems and workflows have access to AI agents, and least-privilege principles should be applied to limit the blast radius if developer secrets are compromised.”

The SANS Internet Storm Center has a clickable breakdown of each individual fix this month from Microsoft, indexed by severity and CVSS score. Enterprise Windows admins involved in testing patches before rolling them out should keep an eye on askwoody.com, which often has the skinny on wonky updates. Please don’t neglect to back up your data if it has been a while since you’ve done that, and feel free to sound off in the comments if you experience problems installing any of these fixes.

21:49

19:49

The Big Idea: Kristina W. Kelly [Whatever]

Nothing beats away a dreary February day like curling up with a cozy fantasy novel. Even better when that novel is a sapphic love story with iguana, cat, and mushroom people! Grab a seat by the fire and a cup of hot chocolate (or tea) and listen to author Kristina W. Kelly’s Big Idea as she shows you the magical world of Tea Tale.

KRISTINA W. KELLY:

What happens when you second guess who you are? When you begin to rethink what really defines you? What happens when your faith betrays you, lies, and hides truths? 

Everything begins to crumble. Like a sea cliff battered by eons of waves. 

And if you’re Divine, your magic goes haywire and you start to wonder if you can hear animals talk. You change. You become. Maybe not something new, but someone different. 

The idea for Tea Tale started simple: I wanted to feature my favorite beverage—tea—, pay homage to my favorite video games (as I did with the first book in the series, Tavern Tale), and set it all in winter. Of course, I needed to carry through the subplots and address some of the unanswered questions from that first book. What emerged was a quest to sprinkle religious betrayal over a sapphic pairing within the framework of Role Playing Games (RPGs).

Divine is a healer. Or was a healer. Her path used to be clear: serve the Goddess of Souls by caring for the living. She’d influence emotions, heal wounds, shield others from harm. The teachings of her temple always seemed contradictory to the way she lived, though. 

Her temple, like all the temples in Trelvania, said that non-humans—races like the Iguions (iguana-like bipeds), the Kellas (feline humanoids), and Thospori (think mushroom warriors)—couldn’t receive the blessings from the deities. Simply because they were non-human. Oh, the temples said something about how non-humans don’t have magical power, of course, so that’s why they couldn’t be on the receiving end of magic. But Divine had healed a Kellas child. She had healed an Iguion adult. She had done what was supposed to be impossible. Forbidden. 

When I was growing up, I was taught that I was born evil. A child tainted and only by a blood sacrifice could I be saved from these sins I hadn’t even committed. These same people told me that because I was a woman, despite my music education degree, I couldn’t lead the church orchestra. I could help in the nursery with the babies, though. All the other jobs were for men. I was led to believe that god thought I wasn’t equal or as capable because of my gender. Those same people decreed “love your neighbor”, but showed that only counted for some of the population. Even though the greatest command was love, people couldn’t love whomever they wanted. 

Whether sudden or gradual, I eventually found myself changed. I had sought experts who studied the historical context and the translations that made sense in that period, not a modern view. I discovered that sentences I had etched into my brain weren’t even in the texts we had been reading and that books were left or added depending on the particular flavor of faith. I learned about the practices of different cultures and religions and the history of the one I’d known. I found people who were exploring their spiritually like I was and discussed their journeys. And I began to explore who I was without all of the baggage, shame, and fear I’d been taught. 

When the community you trusted had it wrong, how do you replace that feeling of community? These questions I’ve been asking you, reader, is what I attempted to capture in Tea Tale. Yes, Tea Tale is cozy fantasy, but with a sip of religious oppression. 

The faire in Tea Tale is inspired by holiday events in MMORPGs and one of my favorite RPGs ever, Chrono Cross. There’s special games, unique items, decorations, and event food like the Millennial Fair in Chrono Cross. Divine’s tasting tea by the fire and listening to musicians. When she helps prepare the Sultry Sapphire tavern for the Midwinter Nights Faire, the notes of RPG influences really come through. I love a good quest chain in video games, where my character runs around the city helping ten people just to get five mushrooms back to the first quest-giver. Divine’s tasks become more tasks—side quests—as she also tries to find a gift for her romantic interest.

But while Divine does all of that, she’s also struggling to understand her magic when it seems to be acting contrary to what her temple taught her.

Just like I sought experts, Divine seeks experts to understand how magic really works in her world and how she connects to it. She talks to the non-humans who are, quite frankly, oppressed by the temples of Trelvania and uncovers that the truths her temples spout might not be the whole story. She grapples with what it means to have lived so many years within an organization that didn’t respect her enough to tell her the truth. And if she’s not that person, she wants to discover who she is.  

Divine tackles replacing her religious community with those around her who support her without expecting something in return. Like me, she befriends those who are questioning the same ideas she is, or find friends who have never followed the temples. Ordinary people who come together to make a difference. A community and a found family. 

Tea Tale focuses on people coming together during their Midwinter Nights Faire to enjoy each other, get creative through poetry and music, and spread joy through gift giving, food, and hot drinks. From Divine’s love interest, Saph, donating food to those in need, to Divine advocating for change in the way non-humans are treated, the characters find small ways to collectively be impactful. “If no one is being a voice,” Divine thinks, “then I should. Someone must do something.” 

At its heart, Tea Tale is full of magic, tea, and cozy moments. One of the things I love about modern RPGs is that the games give your character the option to pick any love interest they want. The world of Tea Tale is just like that—it’s a queer normative. But just like life, there are lies and injustices to chip away at to free who we want to be. 

I’m still learning every day who I am. It’s ok to change. To become different as I grow. If we can surround ourselves with love, empathy, and patience we can find our true power. We can crack the deceit wide open and find warmth and friendship. Together, we lay those broken pieces, starting a foundation where others can feel safe to be who they want to be while sipping hot tea that smells of lavender and vanilla. When faced with lies and disparity…become someone different.


Tea Tale: Amazon|Barnes & Noble|Bookshop|Space Wizards

Author socials: Website|Instagram|Bluesky|Facebook

18:42

The Unraveling [The Stranger]

Record your question for the Savage Lovecast at savage.love/askdan! by Dan Savage I had a great time at Mr. Mid-Atlantic Leather last month in Washington D.C. For those who don’t know, MAL is an annual fetish event for gay men. There is a lot of socializing in the lobby of the host hotel and a lot of kinky play in the rooms. One of the highlights for me was a mummification party. However, things got awkward when I had to explain to my friends that my husband thought I was on a business trip. We’ve been together for 25 years, living a happy life in a very blue college town in a very red state. Early in the relationship, he discovered that I am into BDSM when he found some Polaroids and some bondage gear in a duffel bag in the back of the closet. I had planned to tell him, just not at the very beginning of our relationship. Instead of…

[ Read more ]

17:56

Slog AM: Millionaire Tax Advances, Trump’s Consumer Protection Bureau Lost Us $19 Billion, EPA to Revoke Legal Basis of Clean Air Act Protections [The Stranger]

The Stranger's Morning News Roundup by Vivian McCall

Senate Committee Passes Millionaire’s Tax: The 9.9 percent income tax on people making more than $1 million a year is moving forward with a tax break for small businesses. Businesses making $300,000 or less won’t have to pay a dime of the state’s business and occupation (B&O) tax, while those making below $600,000 will see limited relief. The state Senate could vote on the bill as early as next week.

Party Fouls: Police arrested several people after the Seahawks won the Superbowl Sunday night. For having a good time? No, for DUI, assault, and weapons violations.

Not the Olympic Marmot! Our local whistling rodent isn’t on the endangered species list yet, but the US Fish and Wildlife Service has determined a petition to list them warrants further review. As temperatures warm, trees are advancing up the mountain, destroying the alpine meadows they call home. There’s no place else for them to go.

Fortunately, climate change is not real. Trump’s Environmental Protection Agency will revoke the “endangerment finding” this week, an Obama-era policy that determined that greenhouse gases like carbon dioxide threaten public health. The finding is the legal basis for nearly all regulations under the Clean Air Act.

At least we have our health? Roughly 19,000 fewer Washingtonians signed up for health insurance through the state’s online marketplace this year. The drop isn’t as bad as the state predicted (80,000), but decidedly not good either. The state’s Cascade Care Savings plan for people who make up to 250 percent of the federal poverty line helped mitigate the loss of federal subsidies this year, but it won’t last.

At least we have … capitalism? Trump’s Consumer Financial Protection Bureau has largely stopped protecting us, a decision that has cost Americans about $19 billion in the last year. The report says in the last year the CFPB has abandoned major consumer protections, stalled investigations, and dismissed lawsuits. Last year, Trump announced that he wanted to essentially pull the plug on the agency, reducing staff from 1,689 to 207, a move mercifully blocked in the courts.

Um, chat? Next month, default gamer messaging app Discord will automatically set user accounts to “teen-appropriate” experience, unless they can verify their age with a government ID or an AI face scan. This is the same company that exposed the government IDs of 70,000 users when a third party service it used for age verification was hacked.

Hostage Situation: Trump posted that he won’t open the Gordie Howe International Bridge between Detroit and Winsor, Canada until Canada has “fully compensated” the US for “everything we have given them.” “With all we have given them, we should own, perhaps, at least half of this asset.” Trump also said that if Canada made a trade deal with China, “the first thing China will do is terminate ALL Ice Hockey being played in Canada, and permanently eliminate The Stanley Cup.” What?

Rare W: The Republican Governor of New Hampshire vetoed her party’s anti-trans bathroom bill for a third time. Here’s the state’s motto: Live Free or Die. 

ICYMI: If you miss rooting for the home team, you could watch Seattle drag queen Jane Don’t compete on Drag Race. Stranger contributor Mike Kohfeld has another RuPaul recap.

Phone … wallet … keys, and OH NO! A Louisiana National Guard soldier left his AR-15 in a hotel bathroom on Bourbon Street while on patrol in the French Quarter. “I kind of feel bad for him because that's one of the main rules of being in the Army I would think is you're always supposed to have your weapon in your hands and not in somebody else’s,” said French Quarter performer Nervous Dwayne.

I know nothing gets past you. But the less observant people in your life will appreciate this explainer of the political and cultural references in Bad Bunny’s Superbowl performance.

I believe many, many things get past this guy:

 

It literally had a heterosexual wedding, dude

[image or embed]

— Justin Baragona (@justinbaragona.bsky.social) February 10, 2026 at 5:21 AM

 

Liar: Trump has maintained he knew nothing of Jeffrey Epstein’s sex crimes. But in 2006, he told the then-chief of the Palm Beach police department Micahel Reiter that Epstein’s “activities” with teenage girls were well known in New York and Palm Beach. “Thank goodness you’re stopping him, everyone has known he’s been doing this,” Reiter recalled Trump saying in a 2019 FBI interview released in the Epstein case files.

A song for Trump:

17:14

The film Melania [Richard Stallman's Political Notes]

The film, Melania, paid for by Amazon, was an opportunity for Bezos to pay a bribe to the extortionist and his wife. However, he doesn't mind spending millions on a bribe, if it gets him billions of dollars of our money.

Urgent: Block US military intervention against Iran [Richard Stallman's Political Notes]

US citizens: call on Congress to block US military intervention against Iran.

I can imagine a specific manner of military intervention against Iran's murderous repression. This intervention would target the bases of repression forces, such as Basij, and the court buildings used to try protesters (but not when protesters or their families and lawyers would be present).

But I don't think the bully would choose to do that. He doesn't care about Iranian protesters, or any Iranians except perhaps oil billionaires seeking to give him fealty. Practically speaking, if he orders an attack it will be designed to achieve his selfish and imperialistic aims.

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: CEOs end collaboration with deportation thugs [Richard Stallman's Political Notes]

US citizens: call on certain CEOs to end their collaboration with the US deportation thugs.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Restrict deportation thugs jailing children [Richard Stallman's Political Notes]

US citizens: call on Congress to restrict deportation thugs from jailing children or doing anything in or near public schools.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

In my letter I said this should apply to private schools too.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Pass Billionaires' Income Tax [Richard Stallman's Political Notes]

US citizens: call on your congresscritter and senators to pass the Billionaires' Income Tax.

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: Take back money granted to deportation thugs [Richard Stallman's Political Notes]

US citizens: call on your congresscritter and senators to insist on taking back the extra money granted to deportation thugs by the Big Bad Bill, and explicitly prohibit various unjust and cruel practices.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Investigate attempt to undermine elections [Richard Stallman's Political Notes]

US citizens: ask your congresscritter and senators to investigate the attempt to undermine our elections by giving private Social Security data to election deniers.

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: Plain and accurate reporting on Republican plans and promises [Richard Stallman's Political Notes]

US citizens: call on mainstream press outlets to report accurately and plainly on Republican plans and promises — quoting them directly, explaining their real-world impacts, and not softening extremist agendas in the name of "balance".

Urgent: Adobe Acrobat Pretend Intelligence [Richard Stallman's Political Notes]

I have seen a report that Adobe Acrobat is pressuring users to upload their own documents to Adobe's Pretend Intelligence summarization tool. But I don't have a source to cite. Can anyone send a report I can refer to?

Urgent: Support Illinois Human Rights Advocacy Protection Act [Richard Stallman's Political Notes]

US citizens: support passage of the Illinois Human Rights Advocacy Protection Act, which would repeal the specific prohibition on boycotting business with Israel.

Americans should be free to boycott any country.

Urgent: Investigate corruptor's own corruption [Richard Stallman's Political Notes]

US citizens: call on Congress to investigate the corruptor's own corruption.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Crack down on white-collar financial crime [Richard Stallman's Political Notes]

US citizens: call on the SEC and other federal regulators to crack down on white-collar financial crime and enforce the law without fear or favor.

That will take courage — the corrupter wants laws enforced with thorough personal favor.

Naive to think Mr. Grabby's retreats are real [Richard Stallman's Political Notes]

*It is beyond naive for Democrats – and Europe – to think [Mr Grabby's] retreats are real. He never backs down for long.*

I've stated a similar point by saying that he never really commits to a deal with anyone.

London thugs arrested campaigner for carrying sign at protest [Richard Stallman's Political Notes]

London thugs arrested campaigner Peter Tatchell for carrying a sign at a protest. The sign said, "globalise the intifada", followed by "Non-violent resistance. End Israel’s occupation of Gaza & West Bank."

I've explained how "globalize the intifada", by itself, is used as a dog whistle for violence including suicide bombing. However, the full text of Tatchell's sign clearly rejects that implication, so it isn't a dog whistle at all.

People should not be arrested for dog whistles anyway, because that practice amounts to massive repression.

I don't have memories associated with the name Tatchell, but his statements reported here show an admirable clarity of thinking.

New York State team to monitor actions of deportation thugs [Richard Stallman's Political Notes]

New York State will form an official team to monitor the actions of deportation thugs, checking for violations of applicable laws.

17:07

How did Windows 95 get permission to put the Weezer video Buddy Holly on the CD? [The Old New Thing]

Some time ago, I noted that the Windows 95 CD contained a variety of multimedia extras, partly because they were fun, and partly to show off Windows 95’s multimedia capabilities.

One of those multimedia extras was the music video for the song Buddy Holly by the band Weezer. Acquiring permission to redistribute the video took multiple steps.

First, Microsoft had to secure the rights to the song itself, which was negotiated directly with Weezer’s publisher Geffen Records, and apparently without the knowledge of the band members themselves. They were reportedly upset that they weren’t consulted but later realized that it was “one of the greatest things that could have happened to us. Can you imagine that happening today? It’s like, there’s one video on YouTube, and it’s your video.”

But that only secured the rights to the music. What about the video?

The video takes place in a reconstruction of a location from the Happy Days television program, and clips from that show were spliced into the music video to create the illusion that many of the characters from the show were part of the video. The lawyer responsible for securing the rights to the video had to contact all of the actors from Happy Days to get their permission. That lawyer thoroughly enjoyed the assignment. I don’t know whether he got to talk to the actors directly, or only to their agents, but I can imagine it being an interesting experience trying to find Henry Winkler’s telephone number (or his agent’s telephone number) with a chance of talking to The Fonz himself.

The post How did Windows 95 get permission to put the Weezer video <I>Buddy Holly</I> on the CD? appeared first on The Old New Thing.

Dave Farber RIP [LWN.net]

From the NANOG list comes the sad news of the passing of Dave Farber.

His professional accomplishments and impact are almost endless, but often captured by one moniker: "grandfather of the Internet," acknowledging the foundational contributions made by his many students at the University of California, Irvine; the University of Delaware; the University of Pennsylvania; and Carnegie Mellon University.

See also: this announcement by Manny Farber on Farber's "Interesting People" list.

GTK hackfest, 2026 edition (GTK Development Blog) [LWN.net]

Matthias Clasen has published a short summary of the GTK hackfest held prior to FOSDEM 2026. Topics include discussions on unstable APIs, a decision to bump the C runtime requirement to C11 in the next development cycle, limiting changes in GTK3 to crash and build fixes, as well as the state of accessibility:

On the accessibility side, we are somewhat worried about the state of AccessKit. The code upstream is maintained, but we haven't seen movement in the GTK implementation. We still default to the AT-SPI backend on Linux, but AccessKit is used on Windows and macOS (and possibly Android in the future); it would be nice to have consumers of the accessibility stack looking at the code and issues.

On the AT-SPI side we are still missing proper feature negotiation in the protocol; interfaces are now versioned on D-Bus, but there's no mechanism to negotiate the supported set of roles or events between toolkits, compositors, and assistive technologies, which makes running newer applications on older OS versions harder.

16:21

Link [Scripting News]

Podcast: It occurred to me yesterday that there are a lot of parallels with Frontier on the Mac in the early 90s and WordLand and WordPress in the 2020s. So I told the story in a podcast and I think it came out really well. I did some editing at the beginning and end, and as usual my audio editing is pretty crude, but otherwise the story is exactly as I told it. I also asked Claude.ai to do a third-person summary of the podcast, as I did with the previous three shows, and it's getting better. I encourage anyone who's involved in the WordPress community to listen. I think WP has a bigger role to play in the web than it currently has, which imho is saying a lot. 15 minutes.

AI in China and the United States [Radar]

At a private dinner a few months ago, Jensen Huang apparently said what I’ve been thinking for some time. The US is significantly behind China in AI development. Here are some of the reasons.

Huang starts with the ratio of AI developers in China (he estimates 1 million) to AI developers in the US (20,000). That’s a 50:1 ratio. While I think he’s overstating China and understating the US, I use a different metric that gives the same general result. When you’re reading academic papers about the latest developments in AI, count the authors with Asian names1; count the number with European names. For the moment, forget where the authors live or work: could be MIT, could be Alibaba. The Asian names (including South Asia) will be a significant majority.

Now remember where the authors might live, and consider the fact that the US has hung out a big “not welcome” sign for immigrants. Forget about “we only want the good immigrants”; that’s incredibly condescending, and no one of any nationality will believe it, or believe that they’ll be treated fairly once they arrive. Every immigrant worker in the US—or considering coming to the US—has to consider the possibility that he will be in the wrong place at the wrong time with the wrong skin color, and end up on a flight to a death camp. Are we surprised that international workers are leaving? Are we surprised that immigrants are arriving in smaller numbers? A $100,000 price tag on H1B visa applications says “We’ll only let you in if you make it worth our while.” That’s gangster talk, not responsible government. The US’s ability to train high-quality engineers and programmers and provide them with a high standard of living after graduation has historically been one of its greatest strengths. But given the current policies, are we surprised that fewer international students are coming to the US? China has built an impressive network of colleges and universities, particularly for engineering and the sciences. Students can get a first-rate education without the risks of coming to the US, risks that include having said the wrong things on social media and being sent back at the border.

Want Radar delivered straight to your inbox? Join us on Substack. Sign up here.

I read somewhere (might have been Kissinger) that no empire has survived without importing intellectual capital. That’s true of the Romans and the Greeks. That’s true of the British. And it’s true of the US and its massive immigrant workforce. (Unfortunately, providing essential skills and expertise has never protected immigrants from racism.) Joy’s law is about companies rather than nations, but it still applies: “No matter who you are, most of the smartest people work for someone else” is almost a restatement of the same idea. If you want to work with the smartest people, you have to bring as many as you can in from the outside—and even as you’re bringing outside workers in, the supply of good talent that doesn’t work for you will always exceed the talent you’ve managed to acquire. But now, think about what education means for this talent flow: China no longer needs to export students to the US and hope that some of them will return. And they’re in a position to attract talent from elsewhere.

Huang is also right that restrictions on semiconductor exports have not only failed, they are leading China to develop their own technology. China’s homegrown GPU industry has almost reached the level of the US’s and will no doubt surpass it. Restrictions on semiconductor sales have had another effect that Huang doesn’t mention. What do you do when you don’t have the fastest hardware? You make your software more efficient. You optimize it so it runs faster and draws less energy. You build it to run efficiently on older hardware using techniques like quantization. That’s evident in all of the recent models coming from China, from DeepSeek to the newly released Qwen-3-Max-Thinking or Kimi K2.5. The US is trapped in the notion that bigger is better2; China is playing the “better is small, more efficient, and open” card. Guess which one wins?

Electrical power tells a similar story. The top domestic AI companies are talking about building data centers that will require many more gigawatts of electrical capacity. The plan seems to be building that generation capacity with coal, gas, and nuclear—good luck. Those are the most expensive and inflexible ways to build capacity. The current administration has hobbled the development of solar power, wind power, and battery backup. China, while it’s also building out coal, is leading the world in building out solar capacity. It also leads the world in the development of solar and wind technology, only partly because of its rare-earth resources. It’s possible that the cost of coal generation might drop—after all, coal is a commodity that few nations want any more, and lack of demand might lead to a price collapse. But cheap coal and free solar are far from equivalent. If the AI powers-that-be in the US plan to build data centers at scale, they will need to come up with better, less expensive sources of power. That’s another area in which China is way ahead.

After reports of Huang’s dinner talk leaked, he walked back the remarks in some posts on X. But that begs the question: Which version do you believe? I know which version I believe; the evidence—personnel, chips, efficiency, power—all points in the same direction.


Footnotes

  1. I include names that appear Indian and Arabic; India and the Arab nations are often not taken into consideration. A surprising number of the names in my count are Spanish: undoubtedly European, but also a focal point for anti-immigrant sentiment in the US.
  2. I see that as cultural baggage, but that’s another argument.

One Version of Events [The Daily WTF]

Jon supports some software that's been around long enough that the first versions of the software ran on, and I quote, "homegrown OS". They've long since migrated to Linux, and in the process much of their software remained the same. Many of the libraries that make up their application haven't been touched in decades. Because of this, they don't really think too much about how they version libraries; when they deploy they always deploy the file as mylib.so.1.0. Their RPM post-install scriptlet does an ldconfig after each deployment to get the symlinks updated.

For those not deep into Linux library management, a brief translation: shared libraries in Linux are .so files. ldconfig is a library manager, which finds the "correct" versions of the libraries you have installed and creates symbolic links to standard locations, so that applications which depend on those libraries can load them.

In any case, Jon's team's solution worked until it didn't. They deployed a new version of the software, yum reported success, but the associated services refused to start. This was bad, because this happened in production. It didn't happen in test. They couldn't replicate it anywhere else, actually. So they built a new version of one of the impacted libraries, one with debug symbols enabled, and copied that over. They manually updated the symlinks, instead of using ldconfig, and launched the service.

The good news: it worked.

The bad news: it worked, but the only difference was that the library was built with debug symbols. The functionality was exactly the same.

Well, that was the only difference other than the symlink.

Fortunately, a "before" listing of the library files was captured before the debug version was installed, a standard practice by their site-reliability-engineers. They do this any time they try and debug in production, so that they can quickly revert to the previous state. And in this previous version, someone noticed that mylib.so was a symlink pointing to mylib.so.1.0.bkup_20190221.

Once again, creating a backup file is a standard practice for their SREs. Apparently, way back in 2019 someone was doing some debugging. They backed up the original library file, but never deleted the backup. And for some reason, ldconfig had been choosing the backup file when scanning for the "correct" version of libraries. Why?

Here, Jon does a lot of research for us. It turns out, if you start with the man pages, you don't get a answer- but you do get a warning:

ldconfig will look only at files that are named lib*.so* (for regular shared objects) or ld-.so (for the dynamic loader itself). Other files will be ignored. Also, ldconfig expects a certain pat‐
tern to how the symbolic links are set up, like this example, where the middle file (libfoo.so.1 here) is the SONAME for the library:

libfoo.so -> libfoo.so.1 -> libfoo.so.1.12

Failure to follow this pattern may result in compatibility issues after an upgrade.

Well, they followed the pattern, and they found compatibility issues. But what exactly is going on here? Jon did the work of digging straight into the ldconfig source to find out the root cause.

The version detecting algorithm starts by looking directly at filenames. While the man page warns about a convention, ldconfig doesn't validate names against this convention (which is probably the correct decision). Insetad, to find which filename has the highest version number, it scans through two filenames until finds numeric values in both of them, then does some pretty manual numeric parsing:

int _dl_cache_libcmp(const char *p1, const char *p2) {
  while (*p1 != '\0') {
    if (*p1 >= '0' && *p1 <= '9') {
      if (*p2 >= '0' && *p2 <= '9') {
        /* Must compare this numerically.  */
        int val1;
        int val2;

        val1 = *p1++ - '0';
        val2 = *p2++ - '0';
        while (*p1 >= '0' && *p1 <= '9')
          val1 = val1 * 10 + *p1++ - '0';
        while (*p2 >= '0' && *p2 <= '9')
          val2 = val2 * 10 + *p2++ - '0';
        if (val1 != val2)
          return val1 - val2;
      } else
        return 1;
    } else if (*p2 >= '0' && *p2 <= '9')
      return -1;
    else if (*p1 != *p2)
      return *p1 - *p2;
    else {
      ++p1;
      ++p2;
    }
  }
  return *p1 - *p2;
}

NB: this is the version of ldconfig at the time Jon submitted this, and the version that they're using. I haven't dug through to check if this is still true in the latest version. That's an exercise for the reader.

While we have not hit the end of the first string, check if the character in that string is numeric. If it is, check if the character in the second string is numeric. If it is, keep scanning through characters, and for as long as they're numeric, keep parsing them into numbers. If the numbers aren't the same, we return the difference between them.

If the first string contains numbers at this point, but the second string doesn't, return 1. If the second string contains numbers but not the first, return -1. Otherwise, increment our pointers and go to the next character. If we reach the end of the string without finding numeric characters, return the difference between these two characters.

Also, correct me if I'm wrong, but it seems like a malicious set of filenames could cause buffer overruns here.

Now, I'll be honest, I don't have the fortitude to suggest that ldconfig is TRWTF here. It's a venerable piece of software that's solving an extremely hard problem. But boy, DLL Hell is an unending struggle and this particular solution certainly isn't helping. I'm honestly not entirely certain I'd say that there was a true WTF here, just an unfortunate confluence of people doing their best and ending up laying landmines for others.

But here's the fun conclusion: the 2019 version of the library actually had been updated. They'd deployed several new versions between 2019 and 2024, when things finally blew up. The actual deployed software kept using the backup file from 2019, and while it may have caused hard-to-notice and harder-to-diagnose bugs, it didn't cause any crashes until 2024.

[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

[$] FOSS in times of war, scarcity, and AI [LWN.net]

Michiel Leenaars, director of strategy at the NLnet Foundation, used his keynote at FOSDEM to sound warnings for the community for free and open-source (FOSS) software; in particular, he talked about the threats posed by geopolitical politics, dangerous allies, and large language models (LLMs). His talk was a mix of observations and suggestions that pertain to FOSS in general and to Europe in particular as geopolitical tensions have mounted in recent months.

Security updates for Tuesday [LWN.net]

Security updates have been issued by AlmaLinux (fence-agents, firefox, fontforge, freerdp, kernel-rt, keylime, libsoup, libsoup3, nodejs22, nodejs24, opentelemetry-collector, osbuild-composer, python3.12-wheel, qemu-kvm, resource-agents, thunderbird, and util-linux), Debian (kernel, rlottie, shaarli, and usbmuxd), Fedora (asciinema, atuin, bustle, cef, envision, glycin, greetd, helix, java-21-openjdk, java-25-openjdk, java-latest-openjdk, keylime-agent-rust, maturin, mirrorlist-server, ntpd-rs, python3.6, rust-add-determinism, rust-afterburn, rust-ambient-id, rust-app-store-connect, rust-bat, rust-below, rust-btrd, rust-busd, rust-bytes, rust-cargo-c, rust-cargo-deny, rust-coreos-installer, rust-crypto-auditing-agent, rust-crypto-auditing-client, rust-crypto-auditing-event-broker, rust-crypto-auditing-log-parser, rust-dua-cli, rust-eif_build, rust-git-delta, rust-git-interactive-rebase-tool, rust-git2, rust-gst-plugin-dav1d, rust-gst-plugin-reqwest, rust-heatseeker, rust-ingredients, rust-jsonwebtoken, rust-lsd, rust-monitord, rust-monitord-exporter, rust-muvm, rust-nu, rust-num-conv, rust-onefetch, rust-oo7-cli, rust-pleaser, rust-pore, rust-pretty-git-prompt, rust-procs, rust-rbspy, rust-rbw, rust-rd-agent, rust-rd-hashd, rust-redlib, rust-resctl-bench, rust-resctl-demo, rust-routinator, rust-sccache, rust-scx_layered, rust-scx_rustland, rust-scx_rusty, rust-sequoia-chameleon-gnupg, rust-sequoia-keystore-server, rust-sequoia-octopus-librnp, rust-sequoia-sq, rust-sevctl, rust-shadow-rs, rust-sigul-pesign-bridge, rust-snpguest, rust-speakersafetyd, rust-tealdeer, rust-time, rust-time-core, rust-time-macros, rust-tokei, rust-weezl, rust-wiremix, rust-ybaas, rustup, sad, tbtools, tuigreet, and uv), Mageia (fontforge and nginx), Oracle (firefox, fontforge, freerdp, kernel, keylime, libsoup, python, thunderbird, and uek-kernel), SUSE (abseil-cpp and kernel), and Ubuntu (freerdp2 and libsoup3).

Freexian Collaborators: Writing a new worker task for Debusine (by Carles Pina i Estany) [Planet Debian]

Debusine is a tool designed for Debian developers and Operating System developers in general. You can try out Debusine on debusine.debian.net, and follow its development on salsa.debian.org.

This post describes how to write a new worker task for Debusine. It can be used to add tasks to a self-hosted Debusine instance, or to submit to the Debusine project new tasks to add new capabilities to Debusine.

Tasks are the lower-level pieces of Debusine workflows. Examples of tasks are Sbuild, Lintian, Debdiff (see the available tasks).

This post will document the steps to write a new basic worker task. The example will add a worker task that runs reprotest and creates an artifact of the new type ReprotestArtifact with the reprotest log.

Tasks are usually used by workflows. Workflows solve high-level goals by creating and orchestrating different tasks (e.g. a Sbuild workflow would create different Sbuild tasks, one for each architecture).

Overview of tasks

A task usually does the following:

  • It receives structured data defining its input artifacts and configuration
  • Input artifacts are downloaded
  • A process is run by the worker (e.g. lintian, debdiff, etc.). In this blog post, it will run reprotest
  • The output (files, logs, exit code, etc.) is analyzed, artifacts and relations might be generated, and the work request is marked as completed, either with Success or Failure

If you want to follow the tutorial and add the Reprotest task, your Debusine development instance should have at least one worker, one user, a debusine client set up, and permissions for the client to create tasks. All of this can be setup following the steps in the Contribute section of the documentation.

This blog post shows a functional Reprotest task. This task is not currently part of Debusine. The Reprotest task implementation is simplified (no error handling, unit tests, specific view, docs, some shortcuts in the environment preparation, etc.). At some point, in Debusine, we might add a debrebuild task which is based on buildinfo files and uses snapshot.debian.org to recreate the binary packages.

Defining the inputs of the task

The input of the reprotest task will be a source artifact (a Debian source package). We model the input with pydantic in debusine/tasks/models.py:

class ReprotestData(BaseTaskDataWithExecutor):
   """Data for Reprotest task."""

   source_artifact: LookupSingle

class ReprotestDynamicData(BaseDynamicTaskDataWithExecutor):
   """Reprotest dynamic data."""

   source_artifact_id: int | None = None

The ReprotestData is what the user will input. A LookupSingle is a lookup that resolves to a single artifact.

We would also have configuration for the desired variations to test, but we have left that out of this example for simplicity. Configuring variations is left as an exercise for the reader.

Since ReprotestData is a subclass of BaseTaskDataWithExecutor it also contains environment where the user can specify in which environment the task will run. The environment is an artifact with a Debian image.

The ReprotestDynamicData holds the resolution of all lookups. These can be seen in the “Internals” tab of the work request view.

Add the new Reprotest artifact data class

In order for the reprotest task to create a new Artifact of the type DebianReprotest with the log and output metadata: add the new category to ArtifactCategory in debusine/artifacts/models.py:

    REPROTEST = "debian:reprotest"

In the same file add the DebianReprotest class:

class DebianReprotest(ArtifactData):
   """Data for debian:reprotest artifacts."""

   reproducible: bool | None = None

   def get_label(self) -> str:
       """Return a short human-readable label for the artifact."""
       return "reprotest analysis"

It could also include the package name or version.

In order to have the category listed in the work request output artifacts table, edit the file debusine/db/models/artifacts.py: In ARTIFACT_CATEGORY_ICON_NAMES add ArtifactCategory.REPROTEST: "folder", and in ARTIFACT_CATEGORY_SHORT_NAMES add ArtifactCategory.REPROTEST: "reprotest",.

Create the new Task class

In debusine/tasks/ create a new file reprotest.py.

reprotest.py
# Copyright © The Debusine Developers
# See the AUTHORS file at the top-level directory of this distribution
#
# This file is part of Debusine. It is subject to the license terms
# in the LICENSE file found in the top-level directory of this
# distribution. No part of Debusine, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the LICENSE file.

"""Task to use reprotest in debusine."""

from pathlib import Path
from typing import Any

from debusine import utils
from debusine.artifacts.local_artifact import ReprotestArtifact
from debusine.artifacts.models import (
    ArtifactCategory,
    CollectionCategory,
    DebianSourcePackage,
    DebianUpload,
    WorkRequestResults,
    get_source_package_name,
    get_source_package_version,
)
from debusine.client.models import RelationType
from debusine.tasks import BaseTaskWithExecutor, RunCommandTask
from debusine.tasks.models import ReprotestData, ReprotestDynamicData
from debusine.tasks.server import TaskDatabaseInterface


class Reprotest(
    RunCommandTask[ReprotestData, ReprotestDynamicData],
    BaseTaskWithExecutor[ReprotestData, ReprotestDynamicData],
):
    """Task to use reprotest in debusine."""

    TASK_VERSION = 1

    CAPTURE_OUTPUT_FILENAME = "reprotest.log"

    def __init__(
        self,
        task_data: dict[str, Any],
        dynamic_task_data: dict[str, Any] | None = None,
    ) -> None:
        """Initialize object."""
        super().__init__(task_data, dynamic_task_data)

        self._reprotest_target: Path | None = None

    def build_dynamic_data(
        self, task_database: TaskDatabaseInterface
    ) -> ReprotestDynamicData:
        """Compute and return ReprotestDynamicData."""
        input_source_artifact = task_database.lookup_single_artifact(
            self.data.source_artifact
        )

        assert input_source_artifact is not None
        self.ensure_artifact_categories(
            configuration_key="input.source_artifact",
            category=input_source_artifact.category,
            expected=(
                ArtifactCategory.SOURCE_PACKAGE,
                ArtifactCategory.UPLOAD,
            ),
        )
        assert isinstance(
            input_source_artifact.data, (DebianSourcePackage, DebianUpload)
        )
        subject = get_source_package_name(input_source_artifact.data)
        version = get_source_package_version(input_source_artifact.data)

        assert self.data.environment is not None

        environment = self.get_environment(
            task_database,
            self.data.environment,
            default_category=CollectionCategory.ENVIRONMENTS,
        )

        return ReprotestDynamicData(
            source_artifact_id=input_source_artifact.id,
            subject=subject,
            parameter_summary=f"{subject}_{version}",
            environment_id=environment.id,
        )

    def get_input_artifacts_ids(self) -> list[int]:
        """Return the list of input artifact IDs used by this task."""
        if not self.dynamic_data:
            return []

        return [
            self.dynamic_data.source_artifact_id,
            self.dynamic_data.environment_id,
        ]

    def fetch_input(self, destination: Path) -> bool:
        """Download the required artifacts."""
        assert self.dynamic_data

        artifact_id = self.dynamic_data.source_artifact_id
        assert artifact_id is not None
        self.fetch_artifact(artifact_id, destination)

        return True

    def configure_for_execution(self, download_directory: Path) -> bool:
        """
        Find a .dsc in download_directory.

        Install reprotest and other utilities used in _cmdline.
        Set self._reprotest_target to it.

        :param download_directory: where to search the files
        :return: True if valid files were found
        """
        self._prepare_executor_instance()

        if self.executor_instance is None:
            raise AssertionError("self.executor_instance cannot be None")

        self.run_executor_command(
            ["apt-get", "update"],
            log_filename="install.log",
            run_as_root=True,
            check=True,
        )
        self.run_executor_command(
            [
                "apt-get",
                "--yes",
                "--no-install-recommends",
                "install",
                "reprotest",
                "dpkg-dev",
                "devscripts",
                "equivs",
                "sudo",
            ],
            log_filename="install.log",
            run_as_root=True,
        )

        self._reprotest_target = utils.find_file_suffixes(
            download_directory, [".dsc"]
        )
        return True

    def _cmdline(self) -> list[str]:
        """
        Build the reprotest command line.

        Use configuration of self.data and self._reprotest_target.
        """
        target = self._reprotest_target
        assert target is not None

        cmd = [
            "bash",
            "-c",
            f"TMPDIR=/tmp ; cd /tmp ; dpkg-source -x {target} package/; "
            "cd package/ ; mk-build-deps ; apt-get install --yes ./*.deb ; "
            "rm *.deb ; "
            "reprotest --vary=-time,-user_group,-fileordering,-domain_host .",
        ]

        return cmd

    @staticmethod
    def _cmdline_as_root() -> bool:
        r"""apt-get install --yes ./\*.deb must be run as root."""
        return True

    def task_result(
        self,
        returncode: int | None,
        execute_directory: Path,  # noqa: U100
    ) -> WorkRequestResults:
        """
        Evaluate task output and return success.

        For a successful run of reprotest:
        -must have the output file
        -exit code is 0

        :return: WorkRequestResults.SUCCESS or WorkRequestResults.FAILURE.
        """
        reprotest_file = execute_directory / self.CAPTURE_OUTPUT_FILENAME

        if reprotest_file.exists() and returncode == 0:
            return WorkRequestResults.SUCCESS

        return WorkRequestResults.FAILURE

    def upload_artifacts(
        self, exec_directory: Path, *, execution_result: WorkRequestResults
    ) -> None:
        """Upload the ReprotestArtifact with the files and relationships."""
        if not self.debusine:
            raise AssertionError("self.debusine not set")

        assert self.dynamic_data is not None
        assert self.dynamic_data.parameter_summary is not None

        reprotest_artifact = ReprotestArtifact.create(
            reprotest_output=exec_directory / self.CAPTURE_OUTPUT_FILENAME,
            reproducible=execution_result == WorkRequestResults.SUCCESS,
            package=self.dynamic_data.parameter_summary,
        )

        uploaded = self.debusine.upload_artifact(
            reprotest_artifact,
            workspace=self.workspace_name,
            work_request=self.work_request_id,
        )

        assert self.dynamic_data is not None
        assert self.dynamic_data.source_artifact_id is not None
        self.debusine.relation_create(
            uploaded.id,
            self.dynamic_data.source_artifact_id,
            RelationType.RELATES_TO,
        )

Below are the main methods with some basic explanation.

In order for Debusine to discover the task, add "Reprotest" in the file debusine/tasks/__init__.py in the __all__ list.

Let’s explain the different methods of the Reprotest class:

build_dynamic_data method

The worker has no access to Debusine’s database. Lookups are all resolved before the task gets dispatched to a worker, so all it has to do is download the specified input artifacts.

build_dynamic_data method lookup the artifact, assert that is a valid category, extract the package name and version, and get the environment in which it will be executed.

The environment is needed to run the task (reprotest will run in a container using unshare, incus…).

    def build_dynamic_data(
        self, task_database: TaskDatabaseInterface
    ) -> ReprotestDynamicData:
        """Compute and return ReprotestDynamicData."""
        input_source_artifact = task_database.lookup_single_artifact(
            self.data.source_artifact
        )

        assert input_source_artifact is not None
        self.ensure_artifact_categories(
            configuration_key="input.source_artifact",
            category=input_source_artifact.category,
            expected=(
                ArtifactCategory.SOURCE_PACKAGE,
                ArtifactCategory.UPLOAD,
            ),
        )
        assert isinstance(
            input_source_artifact.data, (DebianSourcePackage, DebianUpload)
        )
        subject = get_source_package_name(input_source_artifact.data)
        version = get_source_package_version(input_source_artifact.data)

        assert self.data.environment is not None

        environment = self.get_environment(
            task_database,
            self.data.environment,
            default_category=CollectionCategory.ENVIRONMENTS,
        )

        return ReprotestDynamicData(
            source_artifact_id=input_source_artifact.id,
            subject=subject,
            parameter_summary=f"{subject}_{version}",
            environment_id=environment.id,
        )

get_input_artifacts_ids method

Used to list the task’s input artifacts in the web UI.

   def get_input_artifacts_ids(self) -> list[int]:
       """Return the list of input artifact IDs used by this task."""
       if not self.dynamic_data:
           return []

       assert self.dynamic_data.source_artifact_id is not None
       return [self.dynamic_data.source_artifact_id]

fetch_input method

Download the required artifacts on the worker.

    def fetch_input(self, destination: Path) -> bool:
        """Download the required artifacts."""
        assert self.dynamic_data

        artifact_id = self.dynamic_data.source_artifact_id
        assert artifact_id is not None
        self.fetch_artifact(artifact_id, destination)

        return True

configure_for_execution method

Install the packages needed by the task and set _reprotest_target, which is used to build the task’s command line.

   def configure_for_execution(self, download_directory: Path) -> bool:
       """
       Find a .dsc in download_directory.

       Install reprotest and other utilities used in _cmdline.
       Set self._reprotest_target to it.

       :param download_directory: where to search the files
       :return: True if valid files were found
       """
       self._prepare_executor_instance()

       if self.executor_instance is None:
           raise AssertionError("self.executor_instance cannot be None")

       self.run_executor_command(
           ["apt-get", "update"],
           log_filename="install.log",
           run_as_root=True,
           check=True,
       )
       self.run_executor_command(
           [
               "apt-get",
               "--yes",
               "--no-install-recommends",
               "install",
               "reprotest",
               "dpkg-dev",
               "devscripts",
               "equivs",
               "sudo",
           ],
           log_filename="install.log",
           run_as_root=True,
       )

       self._reprotest_target = utils.find_file_suffixes(
           download_directory, [".dsc"]
       )
       return True

_cmdline method

Return the command line to run the task.

In this case, and to keep the example simple, we will run reprotest directly in the worker’s executor VM/container, without giving it an isolated virtual server.

So, this command installs the build dependencies required by the package (so reprotest can build it) and runs reprotest itself.

   def _cmdline(self) -> list[str]:
       """
       Build the reprotest command line.

       Use configuration of self.data and self._reprotest_target.
       """
       target = self._reprotest_target
       assert target is not None

       cmd = [
           "bash",
           "-c",
           f"TMPDIR=/tmp ; cd /tmp ; dpkg-source -x {target} package/; "
           "cd package/ ; mk-build-deps ; apt-get install --yes ./*.deb ; "
           "rm *.deb ; "
           "reprotest --vary=-time,-user_group,-fileordering,-domain_host .",
       ]

       return cmd

Some reprotest variations are disabled. This is to keep the example simple with the set of packages to install and reprotest features.

_cmdline_as_root method

Since during the execution it’s needed to install packages, run it as root (in the container):

   @staticmethod
   def _cmdline_as_root() -> bool:
       r"""apt-get install --yes ./\*.deb must be run as root."""
       return True

task_result method

Task succeeded if a log is generated and the return code is 0.

    def task_result(
        self,
        returncode: int | None,
        execute_directory: Path,  # noqa: U100
    ) -> WorkRequestResults:
        """
        Evaluate task output and return success.

        For a successful run of reprotest:
        -must have the output file
        -exit code is 0

        :return: WorkRequestResults.SUCCESS or WorkRequestResults.FAILURE.
        """
        reprotest_file = execute_directory / self.CAPTURE_OUTPUT_FILENAME

        if reprotest_file.exists() and returncode == 0:
            return WorkRequestResults.SUCCESS

        return WorkRequestResults.FAILURE

upload_artifacts method

Create the ReprotestArtifact with the log and the reproducible boolean, upload it, and then add a relation between the ReprotestArtifact and the source package:

    def upload_artifacts(
        self, exec_directory: Path, *, execution_result: WorkRequestResults
    ) -> None:
        """Upload the ReprotestArtifact with the files and relationships."""
        if not self.debusine:
            raise AssertionError("self.debusine not set")

        assert self.dynamic_data is not None
        assert self.dynamic_data.parameter_summary is not None

        reprotest_artifact = ReprotestArtifact.create(
            reprotest_output=exec_directory / self.CAPTURE_OUTPUT_FILENAME,
            reproducible=execution_result == WorkRequestResults.SUCCESS,
            package=self.dynamic_data.parameter_summary,
        )

        uploaded = self.debusine.upload_artifact(
            reprotest_artifact,
            workspace=self.workspace_name,
            work_request=self.work_request_id,
        )

        assert self.dynamic_data is not None
        assert self.dynamic_data.source_artifact_id is not None
        self.debusine.relation_create(
            uploaded.id,
            self.dynamic_data.source_artifact_id,
            RelationType.RELATES_TO,
        )

Execution example

To run this task in a local Debusine (see steps to have it ready with an environment, permissions and users created) you can do:

$ python3 -m debusine.client artifact import-debian -w System http://deb.debian.org/debian/pool/main/h/hello/hello_2.10-5.dsc

(get the artifact ID from the output of that command)

The artifact can be seen in http://$DEBUSINE/debusine/System/artifact/$ARTIFACTID/.

Then create a reprotest.yaml:

$ cat <<EOF > reprotest.yaml
source_artifact: $ARTIFACT_ID
environment: "debian/match:codename=bookworm"
EOF

Instead of debian/match:codename=bookworm it could use the artifact ID.

Finally, create the work request to run the task:

$ python3 -m debusine.client create-work-request -w System reprotest --data reprotest.yaml

Using Debusine web you can see the work request, which should go to Running status, then Completed with Success or Failure (depending if reprotest could reproduce it or not). Clicking on the Output tab would have an artifact of type debian:reprotest with one file: the log. In the Metadata tab of the artifact it has Data: the package name and reproducible (true or false).

What is left to do?

This was a simple example of creating a task. Other things that could be done:

  • unit tests
  • documentation
  • configurable variations
  • running reprotest directly on the worker host, using the executor environment as a reprotest “virtual server”
  • in this specific example, the command line might be doing too many things that could maybe be done by other parts of the task, such as prepare_environment.
  • integrate it in a workflow so it’s easier to use (e.g. part of QaWorkflow)
  • extract more from the log than just pass/fail
  • display the output in a more useful way (implement an artifact specialized view)

Pluralistic: The Nuremberg Caucus (10 Feb 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



A famous 1961 photo of Adolf Eichmann on trial in Jerusalem; Eichmann's face has been replaced with the face of Stephen Miller.

The Nuremberg Caucus (permalink)

America's descent into authoritarian fascism is made all the more alarming and demoralizing by the Democrats' total failure to rise to the moment:

https://www.youtube.com/watch?v=KADW3ZRZLVI

But what would "rising to the moment" look like? What can the opposition party do without majorities in either house? Well, they could start by refusing to continue to fund ICE, a masked thug snatch/murder squad that roams our streets, killing with impunity:

https://www.nbcnews.com/politics/congress/house-passes-sprawling-spending-package-democrats-split-ice-funding-rcna255273

That's table stakes. What would a real political response to fascism look like? Again, it wouldn't stop with banning masks for ICE goons, or even requiring them to wear QR codes:

https://gizmodo.com/dem-congressman-wants-to-make-ice-agents-wear-qr-codes-2000710345

Though it should be noted that ICE hates this idea, and that ICE agents wear masks because they fear consequences for their sadistic criminality:

https://archive.is/0LNh8

This despite the fact that the (criminally culpable) Vice President has assured them that they have absolute impunity, no matter who they kill:

https://edition.cnn.com/2026/01/08/politics/ice-immunity-jd-vance-minneapolis

The fact that ICE agents worry about consequences despite Vance's assurances suggests ways that Dems could "meet the moment."

I think Dems should start a Nuremberg Caucus, named for the Nazi war-crimes trials that followed from the defeat of German fascists and the death of their leader:

https://en.wikipedia.org/wiki/Nuremberg_trials

What would this caucus do? Well, it could have a public website where it assembled and organized the evidence for the trials that the Democrats could promise to bring after the Trump regime falls. Each fresh outrage, each statement, each video-clip – whether of Trump officials or of his shock-troops – could be neatly slotted in, given an exhibit number, and annotated with the criminal and civil violations captured in the evidence.

The caucus could publish dates these trials will be held on – following from Jan 20, 2029 – and even which courtrooms each official, high and low, will be tried in. These dates could be changed as new crimes emerge, making sure the most egregious offenses are always at the top of the agenda. Each trial would have a witness list.

The Nuremberg Caucus could vow to repurpose ICE's $75b budget to pursue Trump's crimes, from corruption to civil rights violations to labor violations to environmental violations. It could announce its intent to fully fund the FTC and DoJ Antitrust Division to undertake scrutiny of all mergers approved under Trump, and put corporations on notice that they should expect lengthy, probing inquiries into any mergers they undertake between now and the fall of Trumpism. Who knows, perhaps some shareholders will demand that management hold off on mergers in anticipation of this lookback scrutiny, and if not, perhaps they will sue executives after the FTC and DoJ go to work.

While they're at it, the Nuremberg Caucus could publish a plan to hire thousands of IRS agents (paid for by taxing billionaires and zeroing out ICE's budget) who will focus exclusively on the ultra-wealthy and especially any supernormal wealth gains coinciding with the second Trump presidency.

Money talks. ICE agents are signing up with the promise of $50k hiring bonuses and $60k in student debt cancellation. That's peanuts. The Nuremberg Caucus could announce a Crimestoppers-style program with $1m bounties for any ICE officer who a) is themselves innocent of any human rights violations, and; b) provides evidence leading to the conviction of another ICE officer for committing human rights violations. That would certainly improve morale for (some) ICE officers.

Critics of this plan will say that this will force Trump officials to try to steal the next election in order to avoid consequences for their actions. This is certainly true: confidence in a "peaceful transfer of power" is the bedrock of any kind of fair election.

But this bunch have already repeatedly signaled that they intend to steal the midterms and the next general election:

https://www.nj.com/politics/2026/02/top-senate-republican-rejects-trumps-shocking-election-plan-i-think-thats-a-constitutional-issue.html

ICE agents are straight up telling people that ICE is on the streets to arrest people in Democratic-leaning states ("The more people that you lose in Minnesota, you then lose a voting right to stay blue"):

https://unicornriot.ninja/2026/federal-agent-in-coon-rapids-the-more-people-that-you-lose-in-minnesota-you-then-lose-a-voting-right-to-stay-blue/

The only path to fair elections – and saving America – lies through mobilizing and energizing hundreds of millions of Americans. They are ready. They are begging for leadership. They want an electoral choice, something better than a return to the pre-Trump status quo. If you want giant crowds at every polling place, rising up against ICE and DHS voter-suppression, then you have to promise people that their vote will mean something.

Dems have to pick a side. That means being against anyone who is for fascism – including other Dems. The Nuremberg Caucus should denounce the disgusting child abuse perpetrated by the Trump regime:

https://www.propublica.org/article/life-inside-ice-dilley-children

But they should also denounce Democrats who vote to fund that abuse:

https://www.independent.co.uk/news/world/americas/us-politics/fetterman-shutdown-dhs-ice-senate-b2916350.html

The people of Minneapolis (and elsewhere) have repeatedly proven that we outnumber fascists by a huge margin. Dems need to stop demoralizing their base by doing nothing and start demonstrating that they understand the urgency of this crisis.


Hey look at this (permalink)



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

Object permanence (permalink)

#20yrsago Ray Bradbury: LA needs monorails! https://www.latimes.com/archives/la-xpm-2006-feb-05-op-bradbury5-story.html

#20yrsago How statistics caught Indonesia’s war-criminals https://web.archive.org/web/20060423232814/https://www.wired.com/news/technology/1,70196-0.html

#20yrsago Canadian Red Cross vows to sue first aid kits, too https://memex.craphound.com/2006/02/10/canadian-red-cross-vows-to-sue-first-aid-kits-too/

#20yrsago Sports announcer traded for Walt Disney’s first character https://web.archive.org/web/20060312134156/http://sports.yahoo.com/nfl/news?slug=ap-nbc-michaels&amp;prov=ap&amp;type=lgns

#15yrago Government transparency doesn’t matter without accountability https://www.theguardian.com/technology/blog/2011/feb/10/government-data-crime-maps

#10yrsago Hackers stole 101,000 taxpayers’ logins/passwords from the IRS https://arstechnica.com/tech-policy/2016/02/irs-website-attack-nets-e-filing-credentials-for-101000-taxpayers/

#10yrsago CIA boss flips out when Ron Wyden reminds him that CIA spied on the Senate https://www.techdirt.com/2016/02/10/cia-director-freaks-out-after-senator-wyden-points-out-how-cia-spied-senate/

#10yrsago Ta-Nehisi Coates will vote for Bernie Sanders, reparations or no reparations https://www.youtube.com/watch?v=mSJmxN-L300

#10yrsago Gmail will warn you when your correspondents use unencrypted mail transport https://blog.google/products-and-platforms/products/gmail/making-email-safer-for-you-posted-by/

#10yrsago Detoxing is (worse than) bullshit: high lead levels in “detox clay” https://www.statnews.com/2016/02/02/detox-clay-fda-lead/

#10yrsago Nerdy Valentines to print and love https://www.evilmadscientist.com/2016/valentines-4/

#5yrsago A criminal enterprise with a country attachedhttps://pluralistic.net/2021/02/10/duke-sucks/#openlux

#5yrsago Tory donors reap 100X return on campaign contributions https://pluralistic.net/2021/02/10/duke-sucks/#chumocracy

#5yrsago Duke is academia's meanest trademark bully https://pluralistic.net/2021/02/10/duke-sucks/#devils

#5yrsago Crooked cops play music to kill livestreams https://pluralistic.net/2021/02/10/duke-sucks/#bhpd

#1yrago Hugh D'Andrade's "The Murder Next Door" https://pluralistic.net/2025/02/10/pivot-point/#eff


Upcoming appearances (permalink)

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



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

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026
  • "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, 2027

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



Colophon (permalink)

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 (1007 words today, 25708 total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

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

Pluralistic.net

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

https://pluralistic.net/plura-list

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

https://mamot.fr/@pluralistic

Medium (no ads, paywalled):

https://doctorow.medium.com/

Twitter (mass-scale, unrestricted, third-party surveillance and advertising):

https://twitter.com/doctorow

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

A starting point for the blog [Seth's Blog]

The challenge of the library is the card catalog. If you don’t know what you’re looking for, it’s hard to find much of anything.

The challenge of the web is the search box, for the same reason. It’s efficient once you’re on a mission, but it requires you to go first.

And the chat interface of Claude and ChatGPT is more of the same. Faced with infinite choice, what we really need is a guide.

By request then, ten places to start on this blog:

“Notes to myself” — 65 principles distilled from 10,000+ posts.

“The smallest viable audience” — This will reframe how you think about mass, about scale and about marketing.

“Seeking yoyu 余裕” — Perhaps we need more humanity and less more.

“Energy and systems complexity” — Systems thinking that connects beans to bureaucracies to solar panels.

“Failing in the trough” — A practical, visual framework anyone with customers can use immediately.

“The AI effort gap” — Six sentences that reframe the entire AI conversation.

“Enrollment” — The deep dive into how change actually happens — not through authority or money, but through people choosing the journey.

“Better than the cheap alternative” — What sort of work is worth doing? Particularly by you?

“The Strategy Questions” — 53 questions from “This Is Strategy.”

“This is number 10,000” — The meta-post.

It would be great if there were a similar service for your project, your work and your interactions with empty search boxes.

One approach: ask the AI what you should be asking about. A good librarian is priceless.

When the Moon Hits Your Eye Out in Trade Paperback Today [Whatever]

Yes, that’s right, the USA Today and Indie Bestseller that was also one of Amazon’s 100 Best Books of 2025, is now out in convenient trade paperback form, with a new bonus chapter: An alternate Day One which I wrote but (previously) did not use. It’s good! And a bit different. And has a cat! Because cats are cool.

Anyway, get it four yourself and buy six more for your friends and family. Saja thanks you in advance for your contribution to his Kibble Fund. It’s available wherever you choose to buy your books, and is of course also still available in ebook and audio.

— JS

Selling Sexy Comics, An Hourly Comic by Jey Pawlik [Oh Joy Sex Toy]

Selling Sexy Comics, An Hourly Comic by Jey Pawlik

Ever wonder what goes on behind the booth at a comic convention? How much work actually goes in to making sexy books? Look no further, because I’m giving you a peek behind the curtain on how selling sexy comics in person looks!Max and I handmake all our own zines, sell them, package them and ship […]

AI-Generated Text and the Detection Arms Race [Schneier on Security]

In 2023, the science fiction literary magazine Clarkesworld stopped accepting new submissions because so many were generated by artificial intelligence. Near as the editors could tell, many submitters pasted the magazine’s detailed story guidelines into an AI and sent in the results. And they weren’t alone. Other fiction magazines have also reported a high number of AI-generated submissions.

This is only one example of a ubiquitous trend. A legacy system relied on the difficulty of writing and cognition to limit volume. Generative AI overwhelms the system because the humans on the receiving end can’t keep up.

This is happening everywhere. Newspapers are being inundated by AI-generated letters to the editor, as are academic journals. Lawmakers are inundated with AI-generated constituent comments. Courts around the world are flooded with AI-generated filings, particularly by people representing themselves. AI conferences are flooded with AI-generated research papers. Social media is flooded with AI posts. In music, open source software, education, investigative journalism and hiring, it’s the same story.

Like Clarkesworld’s initial response, some of these institutions shut down their submissions processes. Others have met the offensive of AI inputs with some defensive response, often involving a counteracting use of AI. Academic peer reviewers increasingly use AI to evaluate papers that may have been generated by AI. Social media platforms turn to AI moderators. Court systems use AI to triage and process litigation volumes supercharged by AI. Employers turn to AI tools to review candidate applications. Educators use AI not just to grade papers and administer exams, but as a feedback tool for students.

These are all arms races: rapid, adversarial iteration to apply a common technology to opposing purposes. Many of these arms races have clearly deleterious effects. Society suffers if the courts are clogged with frivolous, AI-manufactured cases. There is also harm if the established measures of academic performance – publications and citations – accrue to those researchers most willing to fraudulently submit AI-written letters and papers rather than to those whose ideas have the most impact. The fear is that, in the end, fraudulent behavior enabled by AI will undermine systems and institutions that society relies on.

Upsides of AI

Yet some of these AI arms races have surprising hidden upsides, and the hope is that at least some institutions will be able to change in ways that make them stronger.

Science seems likely to become stronger thanks to AI, yet it faces a problem when the AI makes mistakes. Consider the example of nonsensical, AI-generated phrasing filtering into scientific papers.

A scientist using an AI to assist in writing an academic paper can be a good thing, if used carefully and with disclosure. AI is increasingly a primary tool in scientific research: for reviewing literature, programming and for coding and analyzing data. And for many, it has become a crucial support for expression and scientific communication. Pre-AI, better-funded researchers could hire humans to help them write their academic papers. For many authors whose primary language is not English, hiring this kind of assistance has been an expensive necessity. AI provides it to everyone.

In fiction, fraudulently submitted AI-generated works cause harm, both to the human authors now subject to increased competition and to those readers who may feel defrauded after unknowingly reading the work of a machine. But some outlets may welcome AI-assisted submissions with appropriate disclosure and under particular guidelines, and leverage AI to evaluate them against criteria like originality, fit and quality.

Others may refuse AI-generated work, but this will come at a cost. It’s unlikely that any human editor or technology can sustain an ability to differentiate human from machine writing. Instead, outlets that wish to exclusively publish humans will need to limit submissions to a set of authors they trust to not use AI. If these policies are transparent, readers can pick the format they prefer and read happily from either or both types of outlets.

We also don’t see any problem if a job seeker uses AI to polish their resumes or write better cover letters: The wealthy and privileged have long had access to human assistance for those things. But it crosses the line when AIs are used to lie about identity and experience, or to cheat on job interviews.

Similarly, a democracy requires that its citizens be able to express their opinions to their representatives, or to each other through a medium like the newspaper. The rich and powerful have long been able to hire writers to turn their ideas into persuasive prose, and AIs providing that assistance to more people is a good thing, in our view. Here, AI mistakes and bias can be harmful. Citizens may be using AI for more than just a time-saving shortcut; it may be augmenting their knowledge and capabilities, generating statements about historical, legal or policy factors they can’t reasonably be expected to independently check.

Fraud booster

What we don’t want is for lobbyists to use AIs in astroturf campaigns, writing multiple letters and passing them off as individual opinions. This, too, is an older problem that AIs are making worse.

What differentiates the positive from the negative here is not any inherent aspect of the technology, it’s the power dynamic. The same technology that reduces the effort required for a citizen to share their lived experience with their legislator also enables corporate interests to misrepresent the public at scale. The former is a power-equalizing application of AI that enhances participatory democracy; the latter is a power-concentrating application that threatens it.

In general, we believe writing and cognitive assistance, long available to the rich and powerful, should be available to everyone. The problem comes when AIs make fraud easier. Any response needs to balance embracing that newfound democratization of access with preventing fraud.

There’s no way to turn this technology off. Highly capable AIs are widely available and can run on a laptop. Ethical guidelines and clear professional boundaries can help – for those acting in good faith. But there won’t ever be a way to totally stop academic writers, job seekers or citizens from using these tools, either as legitimate assistance or to commit fraud. This means more comments, more letters, more applications, more submissions.

The problem is that whoever is on the receiving end of this AI-fueled deluge can’t deal with the increased volume. What can help is developing assistive AI tools that benefit institutions and society, while also limiting fraud. And that may mean embracing the use of AI assistance in these adversarial systems, even though the defensive AI will never achieve supremacy.

Balancing harms with benefits

The science fiction community has been wrestling with AI since 2023. Clarkesworld eventually reopened submissions, claiming that it has an adequate way of separating human- and AI-written stories. No one knows how long, or how well, that will continue to work.

The arms race continues. There is no simple way to tell whether the potential benefits of AI will outweigh the harms, now or in the future. But as a society, we can influence the balance of harms it wreaks and opportunities it presents as we muddle our way through the changing technological landscape.

This essay was written with Nathan E. Sanders, and originally appeared in The Conversation.

EDITED TO ADD: This essay has been translated into Spanish.

03:28

Housekeeping Note, re: Emails and Big Ideas, 2/9/26 [Whatever]

Hey, I neglected email for a bit in order to finish my book(s), including Big Idea queries, but now that they’re both in, I’m going to going to catch up with everything in the next couple of days. If you have a Big Idea query into me and haven’t heard back from me by this Friday, go ahead and resend it. Thanks.

— JS

02:56

Home Azone [Penny Arcade]

In the Time Before - no relation to The Land Before Time - it was very important to have a "Halo Killer." There were many attempts, wrought at a profundity of expense and labor. They would have been very surprised to learn, years after this conflict had passed into history, that the storied franchise and its laconic green action figure would die to suicide.

02:28

Drag Race Episode Six: It’s the State of Florida vs. Jane Don’t [The Stranger]

Drag Race Episode Six, the end of Rate-a-Queen. by Mike Kohfeld

This week, we wrapped up Season 18’s Rate-A-Queen talent show. Some queens showed that savvy strategy can outweigh a mid performance, but others *cough* Jane Don’t *cough* proved that reality TV shenanigans will never eclipse star quality. Let’s get into it.

The End of Glam

Ciara Myst, the lovable oddball from Indy, took center stage after being rated in the lowest position by her fellow queens last week. Her fate depended on the second round of Rate-A-Queen, as she would have to lip-sync against the lowest rated queen this week to save herself from elimination.

In the werkroom, Ciara, Vita, Darlene, Juicy, Nini, and Mia put their heads together to strategize for Rate-A-Queen before the second round of talent performances. Ciara thought she’d be able to out-perform Discord in a lip-sync battle, so she quietly asked her Team Glam sisters to rate Discord in the bottom regardless of how well Discord did in the talent show.

It didn’t take Juicy and Vita long to spill this tea to their buddy Discord, who wasn’t shaken by the challenge (though, we got a great cutaway of her pretending to be a Britney Spears superfan to out-psych Ciara). Ultimately, Discord’s punk rock performance was solid enough to keep her safe this week. Her glittering, bloody CEO runway look didn’t impress the judges, but its anticapitalist edge struck the right chord for me. Discord Mangione, anyone?

During a walkthrough, Michelle Visage called out Kenya for fumbling her lyrics during her lip-sync against Briar in Episode Four. “Drag queens’ number one job is to lip-sync, and to know their words,” Visage warned as she pointed a long red nail at Kenya. “Learn your lyrics.”

Kenya was shook, and sure enough, she missed several many more words while lip-syncing to her own song during her talent performance. However, Kenya’s alliance with the Miami girls paid off, and she was rated safe.

Myki Meeks of Orlando (aka Arya Stark who grows up to be BenDeLaCreme) learned that being everyone’s friend but nobody’s best friend is the silent killer during Rate-A-Queen. Her Bride of Frankenstein striptease number was a hit. We’ve seen burlesque many times on Drag Race, but bejeweled entrails? Gore-geous.

 

          View this post on Instagram                      

A post shared by RuPaul's Drag Race (@rupaulsdragrace)

 

Unfortunately, this is Rate-A-Queen, and Myki’s relationships were not strong enough to support her talent. She was rated last, falling into the bottom two alongside Ciara. RIP Glam Alliance, you really had no chance.

The Dion Dynasty

Athena “The Godmother” Dion protested against strategy-based play this week, claiming the rating should be based purely on performance. Either this was a ploy or she needs her memory checked, because she spent most of last week making arrangements for her drag family Juicy and Mia to receive top placements in Rate-A-Queen.

For her runway and performance, Athena leaned heavily into her Greek heritage. Her surreal evil-eye (mati) themed dress was a perfect blend of camp, glamour, and culture. As for the talent show, her Greek-themed variety act was solid but not show-stopping. The word “quaint” came to mind.

 

          View this post on Instagram                      

A post shared by A T H E N A • D I O N (@athenadion)

 

But Rate-A-Queen is not about who has the best talent performance: it’s about leveraging relationships. Athena’s strategy of stacking votes in her favor by putting her Miami sisters on the judging panel during her performance was a brilliant move, and she was rated in the top two for Episode Six.

Jane Don’t vs. the (Allegedly) Illiterate Floridians

Jane Don’t may not have had a drag family to back her up in voting this week, but she didn’t need it.

The most effective drag artists are master historians, remixing references that transport the audience out of reality. On Drag Race, RuPaul has often said that drag queens need to be pop culture experts and rewards queens who know their shit, even when the references are relatively obscure. Seattle’s Jinkx Monsoon was a great example of this, introducing an entire generation to Edith “Little Edie” Bouvier Beale during Season 5’s Snatch Game.

By Episode Six, Jane has proven she has a Ph.D. in Gay Culture. She described her exquisitely feathered chartreuse runway piece as “Galliano for Dior, refracted into this very musketeer 17th-century French moment,” which is queer word salad for “a really fucking cool look.” Even Michelle Visage, who famously hates the color green, had nothing negative to say about Jane’s runway.

Jane knew that her cabaret act inspired by Bette Midler would immediately read for the judges, because this bitch does her homework. She was less confident that the other queens would understand the reference, especially since half of them are allegedly illiterate Floridians.

If the other queens didn’t pick up the Bette Midler, it didn’t matter. Jane’s act was a winning blend of risqué humor, saloon girl style, and loads of confidence. She was voted into the top alongside Athena during the Rate-A-Queen deliberations. On Drag Race, it really doesn’t get much better than lyrics like “No train of thought, but a nice caboose.”

“We’re lip-syncing a punk song and she’s dressed as Donald Duck”

At the end of Episode Six, Jane and Athena, our top two, faced off for the win to “Jerkin” by Australian punk band Amyl and the Sniffers (vocalist Amy Taylor was the guest judge). Jane figured she’d have an easy win. “We’re lip-syncing a punk song and she’s dressed as Donald Duck,” referring to Athena’s glitzy Greek granny-core talent look. However, Athena turned it out, cementing Dion supremacy for a second week in a row. Her win was well-deserved given how well she played the social game of Rate-A-Queen. (And still, Jane’s been in the top for every episode so far. The only thing keeping Jane from winning Season 18 at this point is a Rate-A-Queen finale.) The real winner of this lip-sync, though, was Nini Coco’s neon-Teletubbie-meets-infinity-labia runway look. Seeing her bobbing back and forth beyond Jane and Athena was sending me.

The aforementioned labia. MTV

As much as we love Discord and Kenya, they were saved by the Rate-A-Queen rules this week. A shocked Myki Meeks was declared the bottom queen, and she lip-synced against Ciara to Britney Spears’ “Toxic.”.

The lip-sync concluded, but before RuPaul could pass judgement, she turned to Michelle Visage and said quietly, “This song was Season 4. Jiggly did it.”

“Bless her,” Michelle replied.

(Quick herstory lesson: After competing on Drag Race and Drag Race All Stars, fan favorite Jiggly Caliente became a judge on Drag Race Philippines and also had featured roles on Broad City and Pose. She tragically passed away in 2025 due to complications from sepsis after an emergency surgery. I couldn’t help but think of Briar Blush, who had just been hospitalized for sepsis after filming Season 18.)

My reverie was broken by RuPaul announcing Myki as the winner of the lip-sync.This came as no surprise—the only reason why Myki was in the bottom this week was because of Rate-A-Queen shenanigans. Ciara Myst was asked to sashay away.

Next week, the queens are tasked with creating political ads (!) plus, the cast get the Rate-A-Queen receipts. It’ll be like the producers throwing a ham hock to a pack of starving wolves. Let the drama roll!

Monday, 09 February

23:21

The X Factor [The Stranger]

“Seattle has better Chinese food than New York." by Meg van Huygen

“Seattle has better Chinese food than New York, anyway,” Xian Zhang quips from the couch in her new office, overlooking Second Avenue. “Well, in New York, it’s mainly Cantonese food. But I find Chinese food from the north actually better here. I’m from the north, so I like the handmade dumplings and hand-pulled noodles, that kind of thing. Seattle does it better.”

Before she even landed, word was already on the street that the Seattle Symphony’s new music director is a massive foodie. Sure enough, it’s only a few minutes before she’s comparing our restaurants to those in her home of the last decade.

Zhang is still pulling double duty between Seattle and the New Jersey Symphony, where she’s been the resident music director since 2016. “My son, it’s his junior year,” she explains, “and it’s too late for him to change schools, so he’s finishing high school there. I don’t wanna mess up his life!” But since accepting a five-year contract in Seattle last year, she admits, she’s been feeling a little more at ease out here.

“I grew up in a climate just like this—cold, a little humid and windy,” Zhang says, motioning toward the window. “And we had lots of shellfish,” she grins, bringing it back to food. “That’s my thing—my favorite! So Seattle is perfect for me, actually.”

It’s mutual, babe. Scoring Zhang is a monumental win for Seattle, and not only for her enormous talent and fiery vivacity. Alongside having no music director at all following Thomas Dausgaard’s sudden email ragequit in 2020, the Seattle Symphony’s had 17 conductors in its 123 years, and they all looked more or less the same—white and presumed male—until Zhang. It brings a li’l tear to the eye of this former Cornish piano major, who could only find one female American conductor to look up to in the late ’90s (the legendary Marin Alsop). Down around Benaroya Hall, when you see all the colorful media paraphernalia heralding Zhang’s arrival—there are vinyl stickers glued to the actual sidewalk, reading XIAN!—it seems like overkill at first. But then you’re like: You know what? Let them cook. This is the Seattle Symphony’s Cinderella moment.

Even today, the game’s still heavily dominated by men in the United States, with women and nonbinary people making up just 29.4 percent of American symphony conductors. It’s much worse outside the US, with a 2023 study reporting that just 11.2 percent of conductors are women worldwide. As well, 66.9 percent of American symphony conductors are white. No figures are currently available on how many of the remaining 33.1 percent are female or non-male, but one can imagine it’s a slender slice. There’s Zhang and there’s Alsop, who’s the laureate director of the Baltimore Symphony, and the Atlanta Symphony has Nathalie Stutzmann at the wheel. But when it comes to symphonies in major American cities, these three women pretty much make up the whole scene.

“There also just aren’t that many of us conductors,” Zhang points out, “women or men. It’s a numbers problem. Because it’s a hard job! Not so many people can do it.”

She said a mouthful there, because to watch this woman conduct an orchestra is electric. Armed with her baton, this mini maestra seems 10 feet tall, commanding her musical battalion with real joy and absolute authority. Even from the nosebleed seats, you can feel the crackle in the air. Few people can do that job, indeed.

Xian Zhang (“sh-yen jahng”) was born in 1973 in Dandong, near the North Korean border, to a music teacher mom and a luthier dad. When Western instruments were scarce in Cultural Revolution-era China, her father built a piano for her from scratch. She began piano lessons at age 3 and was practicing eight hours a day by elementary school. At 11, she was sent to the Central Conservatory of Music in Beijing to study piano performance under Lingfen Wu, herself a pioneering female conductor.

Zhang was dropped into conducting somewhat against her will when, one day, Wu sent her 20-year-old student to sub at a rehearsal at the China National Opera. “I’d just finished learning The Marriage of Figaro from her—but I’d never conducted anything in my life! It was a four-and-a-half-hour production, with professional musicians. My teacher called in the day before and said, ‘Um, I don’t feel well, but I’m gonna send my student to conduct tomorrow. If she does a bad job at rehearsal, I will try to come in at intermission and take over.’

“The director of the opera was very mad at my teacher that morning,” Zhang laughs. “‘How can you do this to us? And send a little girl?’ I was very short, very tiny. I remember sitting on the bus with the other musicians going to the opera house, thinking, I’m gonna DIE today. I’m gonna mess this up and be so embarrassed, and I will die.” But she did it anyway, and when her teacher called at intermission to check in, she was told, “Well, she actually seems to be doing okay? She’s almost done with the second act.”

“And my teacher was like ‘Uh, okay, I still don’t feel good! Let her finish the show.’ The next day, she kept saying she was sick. So yeah, she gave me two shows with the China National Opera when I was 20. That was my first public conducting job.”

Zhang didn’t forget it, and today, she goes out of her way to pay it forward and support female orchestral musicians, along with those from other underrepresented groups. She points to a recent Benaroya performance of composer Michael Abels’s Delights and Dances performed by laureate winners of the Sphinx Competition, which is open to young Black and Latino string players in Detroit and endeavors to address systemic obstacles within their communities. “The quartet was all students who’d won a competition for young, less-privileged players. I really, really feel strongly about supporting this kind of program.”

Since leaving China in 1998 to pursue her doctorate in Cincinnati, Zhang’s led orchestras in Milan, Montréal, Amsterdam, Melbourne, Cardiff, Singapore, London, and dozens of US cities. As well as back home in Beijing—in addition to her current roles in Seattle and New Jersey, she’s also the principal guest conductor at the China National Opera this season. True to brand, only a month after her introductory gala at Benaroya Hall in September, she jetted off to Helsinki for the rest of 2025, where she’d already signed up to conduct Tosca before saying yes to Seattle.

Now that she’s picked the reins back up in Seattle, Zhang is super pumped for the production of Iris Unveiled (originally Iris dévoilée), playing February 12, 14, and 15. In a Peking opera-style concert suite that Zhang says is very special to her personally, Chinese-born French composer Qigang Chen mashes up Chinese stringed instruments like the pipa and erhu with a Western-style orchestra, as solo vocalists sing in both Western and Chinese operatic styles. The suite describes the story of Iris, the Greek goddess of the rainbow, employing texture and color to describe various facets of divine femininity: coyness, jealousy, voluptuousness, lust. As the central figure, soprano Meng Meng wears traditional Chinese makeup and a kuitou (头), an elaborate headdress loaded with pearls and tassels and pompoms.

The production’s timing is pinned to the Lunar New Year and the Seattle Symphony’s second annual Lunar New Year Gala. Benaroya Hall’s lobby will be decked out for the holiday, tickets include a multi-course authentic Chinese dinner, and there’ll be performances by select artists from Iris Unveiled’s cast. “I’m so excited, yes!” Zhang says. “The story is based on old Chinese poems, and there’s some really authentic Chinese art involved in the program. And I find the music just strikingly beautiful.” The show, she adds, will be a great way for her to begin engaging with the Asian community here in Seattle, as a fresh start for the new year.

Zhang isn’t new to Seattle, for what it’s worth, having first guest-conducted the Seattle Symphony in 2008. “I’ve always liked Seattle! To me, Seattle has come up as one of the most vibrant cities in America nowadays. I like the people. They’re different from the East Coast—slightly laid-back, and they’re not as edgy. And also, I like the diversity of the community. I feel comfortable here, you know, as an Asian person.

“And I like the food here too!” she says, splitting off to enthusiastically recommend a hot pot restaurant off Aurora. “It’s like a shabu-shabu place. I know the name in Chinese but not in English!” She goes on to rave about the meat combo, as passionately as she spoke about Iris Unveiled. After playing 20 Questions, we realize it’s No.9 Alley Hot Pot in Bitter Lake.

Despite our rep as one of the nation’s most progressive cities, Seattle’s classical music scene has been kind of a musty old ghost ship over the last few years, with nobody at the helm. So it’s sincerely thrilling to see the fiery, sizzling energy that Zhang brings on board. Right out of the gate, she’s going out of her way to platform women, POC, and other underrepresented musicians, along with youth orchestras, local composers, and hell, the restaurant scene, too. Seattle’s classical community has needed this delicious zap in the butt since 1903. No amount of vinyl sidewalk stickers with her name on them is enough. 

Get a Friday the 13th Tattoo at One of These Seattle Shops [The Stranger]

Special Flash Deals for February 13, 2026
by Shannon Lubetich

Friday the 13th occurs three times in 2026—the most it’s possible to have in a calendar year—which means more flash tattoos and more fun. This month, the inky tradition coincides with Valentine’s Day weekend, prompting fun designs that are both creepy and cute. Whether you’re looking to get your first tatt or you’re running out of skin space, we’ve compiled a list where you can get inked as part of the occasion. Don't forget your photo ID!

Blood Orange Tattoo
It’s citrus season, and this shop has the juice. With dozens of adorable designs, Blood Orange Tattoo will run a flash event on Sunday and donate part of the proceeds to Northwest Immigrant Rights Project. Get some ink and spread the love, y’all. 
Fremont

Green Tulip Tattoo
Grab an appointment at this tattoo collective on Valentine’s Day to select from one of their four talented artists’ flash sheets, which include a number of stick and poke designs. They’ll be taking clients from 11 am to “whenever,” and offering up treats, merch, and “LOVEly vibes.”
Uptown

Stranger Suggests: Wikipedia Rabbit Holes, a Masked Chillwave Band, and a Retelling of Cupid and Psyche [The Stranger]

One Really Great Thing to Do Every Day of the Week
by Julianne Bell MONDAY 2/9  

Asher Perlman & Tom Toro

(LITERATURE) If you’ve ever found yourself shedding a tear at a comic strip or recoiling with existential dread from a political cartoon, this one’s for you. New Yorker contributors Asher Perlman and Tom Toro are coming to Elliott Bay Book Company to discuss their new cartoon collections, Hi, It’s Me Again and And to Think We Started As a Book Club…. The former from Perlman (also a writer for The Late Show with Stephen Colbert) pairs sharp, surreal humor with relatable existential spirals, while Toro’s new release skews wry and whimsical. With both artists exploring everything from anxiety to mortality to modern bureaucracy, expect a dynamic conversation about why life’s strangest moments often make the best punchlines. (Elliott Bay Book Company, 7 pm, free with RSVP, all ages) LANGSTON THOMAS

TUESDAY 2/10  

Olivia Barton: For Myself and For You Tour

Cry along to Olivia Barton's cathartic music at Barboza on Tuesday, February 10. BLAIRE BEAMER

(MUSIC) It's hard to ignore the similarities between Orlando-born indie folk artist Olivia Barton and folk-rock darling Phoebe Bridgers. Barton's recent track "Dad Song" brings to mind Bridgers' "Kyoto"—both songs allude to complicated relationships with their fathers as Barton laments "God, I'm such a hypocrite, writing this instead of picking up the phone" and Bridgers sings "You called me from a payphone / They still got payphones / It cost a dollar a minute / To tell me you're getting sober." Barton also explores queer love, heartbreak, and anxiety on her third full-length For Myself and For You, which was co-produced by Pinegrove’s Sam Skinner and highlights her songwriting talent and ability to balance delicacy with an emotional punch. Don't miss this show from the singer-songwriter who's toured with Lizzy McAlpine and Madi Diaz; this time, she's headlining with support from confessional Utah artist Rachael Jenkins. (Barboza, 7 pm, all ages) SHANNON LUBETICH

WEDNESDAY 2/11  

Blood Cultures

(MUSIC) They’re an anonymous, experimental indie-pop band who rock out on chillwave in hoods. What more do you need? I’m all about bands wearing disguises, and with the Residents out of commission for the moment (sigh), a quartet that tinks and reverbs and chirps along to videos of themselves (or somebody in hoods) lifting weights, shooting guns, making a mess with Chinese takeout, and turning themselves into scarecrows, just might fill dat gap. That was the gist of their video for the “Set It on Fire” single from their 2021 album LUNO, at least. What they’ll do in concert, I have no idea whatsoever, but it’s got to be conceptual. (Neumos, 7 pm, 21+) ANDREW HAMLIN

THURSDAY 2/12  

Depths of Wikipedia

Dive deep into the weirdest corners of Wikipedia with comedian and journalist Annie Rauwerda at the Neptune on Thursday, February 12. IAN SHIFF

(COMEDY) Launched in 2001 as an end-all, be-all online encyclopedia, Wikipedia has fully reached cultural icon status in today’s world—not necessarily for its reliability (s/o misinformation and donation pop-ups), but for the absolutely ridiculous humans who write, edit, and speedrun it ad nauseam. Wildly popular (1.6 million followers and counting) account Depths of Wikipedia bears witness to this chaos, spotlighting the site’s strangest corners. Comedian and journalist Annie Rauwerda, who helms the site, has turned the most absurd Wikipedia gems into a live show that’s part comedy, part podcast, part beautifully deranged PowerPoint presentation, and she’ll kick off the latest tour in Seattle! I have no idea what to expect, but that’s kind of the point. (Neptune Theatre, 7 pm, all ages) LANGSTON THOMAS

FRIDAY 2/13  

Till We Have Faces

See Taproot Theatre's production of C.S. Lewis's Greek mythology retelling Till We Have Faces, running Tuesday through Saturday until February 21. GIAO NGUYEN

(THEATRE) In one of his letters, C.S. Lewis wrote that he believed that his final novel, Till We Have Faces, was “far and away” his best, “but it has, with critics and the public, been my greatest failure.” So when I saw that Taproot Theatre was premiering an adaptation of the book, I figured it was time to read it. I’m happy to report the critics were wrong. The book is a reinterpretation of the myth of Cupid and Psyche, written from the perspective of Psyche’s older sister. She’s filing a complaint to the gods (relatable). Taproot’s staged production is the first of its kind—a passion project of the theater’s producing artistic director Karen Lund—and it’s only running through this month. (Taproot Theatre, 7:30–10 pm, 16+) HANNAH MURPHY WINTER

SATURDAY 2/14  

Valentine's Day Show: Glenn Hendrick with John Bellows, babyboy, and Plastic Wildflowers

          View this post on Instagram                      

A post shared by Glenn Hendrick (@glennhendrickmusic)

(MUSIC) Disclaimer: My best friend Kirsten is helping organize this event and will be performing, but even if they weren't, I'd still recommend it—it's a night of excellent artists at a cozy, intimate venue, all in support of some truly essential causes. The lineup includes the lush, groovy quintet babyboy, the nostalgic yet lyrically frank Cleveland group Plastic Wildflowers, and the San Juan Island artist and musician Glenn Hendrick, who weaves "heartbreaking lyrics with stripped down hooks to reel you into the apocalypse" and will perform alongside singer-songwriter John Bellows. Merch sales and a raffle will raise funds for Gaza and for supporting Seattle families with legal fees for immigration court. What better way to spend your Valentine's Day than honoring art, love, and community in all of its myriad forms? (The Rabbit Box Theatre, 8 pm, all ages) JULIANNE BELL

SUNDAY 2/15  

Cécile McLorin Salvant

(MUSIC) Cécile McLorin Salvant has the most exciting voice in contemporary jazz. It’s not just her pitch-perfect voice, which reaches the heights of Edith Piaf, Ella Fitzgerald, Eartha Kitt, and Kate Bush, but the inventiveness with which she flexes her vocals. On her most recent album, Oh Snap, the three-time Grammy Award winner and MacArthur Fellow croons through a dozen short, intimate original songs (plus an a cappella cover of the Commodores’ “Brick House”) that she never intended to see the light of day. Setting out on a personal creative quest to place spontaneity and joy at the heart of her writing process, Salvant tinkered with home recording programs to craft personal songs inspired by the music that soundtracked her childhood in 1990s Miami, from grunge and pop boy bands to classical and folk music. The result of the album is a delightfully chaotic audio journal that will please fans of traditional jazz as well as genre rule-breakers like Erykah Badu and Solange. (Jazz Alley, 7:30 pm, all ages) AUDREY VANN

:zap: Prizefight! :zap:

Win tickets to rad upcoming events!*

Charley Crockett
February 19 or February 20
5th Avenue Theatre

ENTER NOW

Contest ends February 16 at 10am

*Entering PRIZE FIGHT contests by submitting your email address signs you up to receive the Stranger Suggests newsletter. You can unsubscribe at any time.

22:35

Hello, There. Again. [Looking For Group]

Don’t mind me, totally not up to something big that I’ll be sharing here shortly.  For right now, I did want to mention a few things we’re working on for the website, as we work to get it back into
Read More

The post Hello, There. Again. appeared first on Looking For Group.

21:00

Did You Get a Stranger Valentine? [The Stranger]

All is full of love. by Megan Seling

Illustrations by April Finfrock

If you need proof that there is still love in the world, look no further than our February issue. It's packed with hundreds and hundreds of reader-submitted love notes, all gushing with sweet sentiments and declarations of admiration. 

There's a Valentine for Pookie Mamacita, Kitty, and Goose. There are people celebrating love landmarks like anniversaries, moving in together, and having a baby. I think there's even a marriage proposal? 

Read through hundreds of reader-submitted Valentines here. Or, grab an issue at one of our hundreds of distro locations to find it in print! 

♥ COSMO’S MOON

Aimee, When I met you everything started to make sense. Let’s continue doing crosswords at the bar, kiss in photobooths, and have fun together. Rheese

♥ CUTEST GOOSE

Steve with the long hair. Cutest skateboarder out there. Sweet goose. I found you.

♥ YOU ARE MY SUNSHINE!

I love you, Daniel! I’ll wash your back and you wash mine... Let’s keep taking care of each other. Life is hard but loving you is easy.

♥ CW LOVES CW

This year will be 20yrs we’ve spent together. I cannot wait for a tree filled, moss in our toes, playing in our forest in Forks for 20 or 40 more. <3

♥ WEENER STUFF

Oh handsome ween, I love you to bikini bottom and back. Love Jean <3

♥ FOR MY SUNFLOWER

L, During this season you’re sole reason I don’t mind the gray so I wanted to say: Happy Valentines, Love the sun is waiting above. -B

♥ IT’S OFFICIALLY LOVE

We officially did it!!! We are each others till the cold hand of death decides to take us. I will always LOVE YOU. -To the most caring woman I know

♥ MY LOVING EVIL EX

Dear Grady, Roses are red, we swore we were done, then New Year’s Eve slid into my DMs. Maybe 2026 is the sequel we didn’t plan but kinda want?

♥ TWO FROGS IN LOVE

Here’s to another frog filled year of love and joy. I’m looking forward to our new froggy abode <3 please let me paint the walls yellow

20:49

Get the MH Stories 3 Demo! [Penny Arcade]

Capcom just released a demo for Monster Hunter Stories 3: Twisted Reflection and I love it. The demo seems to have come out for pretty much everything but I grabbed it for the PS5 Pro and it’s gorgeous. Plenty of people love the Monster Hunter series but I feel like the “Stories” side games get overlooked. That sort of makes sense as the Stories games are very different. These are turn-based RPG’s with an anime art style and a focus on younger characters with monster collecting/ battling. Think of them like Pokemon + Monster Hunter and it’s just as cool as it sounds. 

 

20:14

How to Date Like an Asian [The Stranger]

Let me show you how to go on a date like an Asian person. by Michael Wong

After a decade of media dominance, the world finally must admit: Asians got swag. And somehow we are still facing an Asian birth-rate crisis (to the specific chagrin of my mother). So given the circumstances, and with Valentine’s Day on the way, let me show you how to go on a date like an Asian person, in Seattle. Let me know how it goes!

Pregame at Costco
Getting your date kicked off by flexing membership at an exclusive club is never a bad idea. And if you don’t know, Asian people feel the same way about Costco that white people feel about Trader Joe’s and Hispanic moms feel about Ross. It’s our mini Disneyland. It delights us.

Take a stroll and reacclimate to being around people after a long week working from home. Costco also gives you a chance to flex your financial prowess early by starting things off with a $1.50 hotdog combo, aka the Kirkland Signature aphrodisiac. This move will also save you both money on future eating opportunities—big-brain moment.

Find Gems at Uwajimaya and Kinokuniya Bookstore
Imagine if Barnes and Noble were an otaku, in a good way. That’s Kinokuniya, the bookstore at Uwajimaya in the CID. You’ll have a blast walking between the shelves, pointing at things you both like. This is also a great way to determine if your date can read.

The major play alert is the magazine section. The racks are teeming with more special interests than a community college catalog, like: POPEYE (for Japanese “city boy” fashion), Brutus (for culture and home inspo), or the Japan Railfan Magazine (for train lovers, plainly). Japanese magazines are a different breed, and while you probably can’t read them, you’ll still find a lot of inspiration and delight inside the pages. Browsing here is a concise way to learn more about your date’s interests, and for them to learn more about you, too. Look behind the counter for magazines that come with cool niche-interest gifts, like Sanrio or even Bape accessories.

Before heading out, pick out a couple snacks with your date at Uwajimaya, perhaps from the deli. Try a Mogu Mogu bottled drink if you haven’t yet—nata jellies (those translucent, chewy cubes made from fermented coconut water) are like a fidget spinner for your mouth.

Picnic in the CID Hing Hay Park
The next move is to head up the block to Hing Hay Park. It’s a tucked-away pocket of the CID with lots of seating, ornate pagodas, and plenty of characters. It’s the ideal home base to spread out your treasures, share some snacks and stories, and appreciate the energy of the neighborhood together.

Plus, if you’re feeling recently inspired by Marty Supreme, you could play each other at one of the public ping-pong tables, or embarrass yourself by playing against one of the Chinese grinders ready for a new victim.

Browse the CID Shops
Let the CID trinket observation commence. Check out Trichome, a longtime alt hot spot and gift shop for the indie streetwear kids and the psychedelic-interested among us, and not totally in the Spencer’s Gifts sort of way. Ask about the Lexco cases and the refrigerator behind the counter.

Other nearby stores you won’t want to miss include Shishido Zakka-Ya, a shop full of kawaii wares made by local Seattle AANHPI artists, Mam’s Books for the best selection of Asian authors and warm vibes, and Pink Gorilla, where your childhood video game nostalgia comes to life in vibrant tactile glory.

Walk the Jose Rizal Bridge
One of Seattle’s best viewpoints is the bridge that carries 12th Avenue South over the freeway. When it’s time to wrap up in the CID, take a short drive up to Jose Rizal Bridge. Park on the Beacon Hill side, near the Tower of Terror–looking building, then walk the bridge back towards the CID, enjoying the view together.

Not only is it a great place to snap pics of one another, catch a sunset, and appreciate the city, it’s also a great opportunity to flex your knowledge about Filipino explorer Jose Rizal, which I expect you to brush up on before this leg.

Try on Fits at Break Away Vintage on Pike
In the big 2026, we are saving money on clothes by shopping secondhand. No better place in Seattle to take in-store fit pics than at Break Away Vintage Market in Capitol Hill (formerly Late Night Vintage Market).

This spot, IMHO, is holding down the neighborhood, run by a group of fellas who in kind remind me that Seattle still has flavor. It’s laid out similar to the Winchester Mystery House, with hallways and stairs that lead you to unexpected places. Pick through racks and find items your date would find amusing, plus trying on the wildest things for a mini fashion show is never a miss.

Small Bites at Tamari Bar
By now it’s time for a proper meal. In this area—right down the street from Break Away—you have to go to Tamari Bar.

This spot feels casual by design, but the necessity of reservations signals the quality of the meal you’re about to enjoy. I also highly rate their inventiveness, and I’m sure your date will, too. Throw a dart at the menu and you will be thrilled, but don’t miss the famous “206 curry” in any iteration, the mazemen with Parmigiano Reggiano, or the bara-chirashi bowl.

Sip Highballs at Shibuya HiFi
To cap off this date, I suggest one of the coolest places in the city. Shibuya HiFi in Ballard is a vinyl bar and lounge inspired by Tokyo’s legendary jazz kissa (listening cafes). You initially enter through the “Living Room”—a swank, intimate space covered floor-to-ceiling with cedar planks and cozy furniture. Enjoy a highball at the bar, or perhaps a Pink Rabbits (made with Japanese Haku vodka and lychee).

When you’re reset, head back to the reservations-only HiFi Room, which feels like the living room of the world’s biggest audiophile. You’ll have to remove your shoes and leave your drink behind before entering and settling into the plush sofas or vintage Benaroya Hall seats.

Get enveloped in the album (that you’ll listen to start to finish), and if you get carried away by the ambience and realization that life doesn’t get better than this, my suggestion is to look over at your date, smile, and just let it happen. 

19:28

18:35

Oh, And [Whatever]

Would you believe that I also completed another book since yesterday? This one is Couch Cinema: Comfort Watches from The Godfather to K-Pop Demon Hunters, a non-fiction collection of essays. No, I didn’t use “AI” or anything, I would never do that, you deserve better as readers. It’s a collection of my December Comfort Watches essays from December of 2023 and 2025, collected up in a nice single volume. I put them all together, did a light edit, added an intro, and sent it off to my agent.

As it happens, this is the first book I’ve done in years that isn’t already spoken for contractually, so we’ll see if we get any nibbles for it. If not, hey, Scalzi Enterprises was designed for just this sort of project in mind, and I wouldn’t have a problem using it as a test case to see if boutique publishing is something we have the bandwidth for. I would have to come up with a name for the imprint. We’ll find out!

Anyway. Two books in, and it’s only February. I can take the rest of the year off, right? Right?!?

— JS

18:07

[$] Development statistics for 6.19 [LWN.net]

Linus Torvalds released the 6.19 kernel on February 8, as expected. This development cycle brought 14,344 non-merge changesets into the mainline, making it the busiest release since 6.16 in July 2025. As usual, we have put together a set of statistics on where these changes come from, along with a quick look at how long new kernel developers stay around.

17:56

What should I do if a wait call reports WAIT_ABANDONED? [The Old New Thing]

If you call a wait function like Wait­For­Single­Object and receive the code WAIT_ABANDONED, what does it mean and what should you do?

The documentation says that WAIT_ABANDONED means that you successfully claimed a mutex, but the thread that previously owned the mutex failed to release the mutex before it exited. This could be an oversight because the code encountered a code path that forgot to release the mutex. Or it could be because the thread crashed before it could release the mutex.

The documentation also suggests that “If the mutex was protecting persistent state information, you should check it for consistency.” This is to handle the second case: The thread crashes before it can release the mutex. If the purpose of the mutex was to prevent other threads from accessing the data while it is in an inconsistent state, then the fact that the thread crashed while holding the mutex means that the data might still be in that inconsistent state.

Now, maybe you have no way to check whether the data is in an inconsistent state or have no way to repair it if such an inconsistent state is discovered. (Most people don’t bother to design their data structures with rollback or transactions, because the point of the mutex was to avoid having to write that fancy code in the first place!) In that case, you really have only two choices.

One option is to just cover your ears and pretend you didn’t hear anything. Just continue operating normally and hope that any latent corruption is not going to cause major problems.

Another option is to give up and abandon the operation. However, if that’s your choice, you have to give up properly.

The abandoned state is not sticky; is reported only to the first person to wait for the mutex after it was abandoned. Subsequent waits succeed normally. Therefore, if you decide, “Oh it’s corrupted, I’m not touching it,” and release the mutex and walk away, then the next person to wait for the mutex will receive a normal successful wait, and they will dive in, unaware that the data structures are corrupted!

One solution is to add a flag inside your data that says “Possibly corrupted.” The code that detects the WAIT_ABANDONED can set that flag, and everybody who acquires the mutex can check the flag to decide if they want to take a chance by operating on corrupted data.

I’m not saying that you have to do it that way, but it’s a choice you’re making. In for a penny, in for a pound.

In summary, here are some options when you encounter an abandoned mutex:

  • Try to fix the problem.
  • Ignore the problem.
  • Give up and create a warning to others.
  • Give up and make everybody else think that everything is fine.

The final choice doesn’t make sense, because if you’re going to make everybody else think that everything is fine, then that’s the same as having everybody else simply ignore the problem. In which case, you may as well ignore the problem too!

Related reading: Understanding the consequences of WAIT_ABANDONED.

Bonus chatter: Don’t forget that if you get WAIT_ABANDONED, the mutex is owned by you, so make sure to release it.

The post What should I do if a wait call reports <CODE>WAIT_<WBR>ABANDONED</CODE>? appeared first on The Old New Thing.

Slog AM: The Seahawks Won, Bad Bunny Won More, and Trump Had a Terrible, No Good Sunday [The Stranger]

The Stranger's morning news roundup. by Hannah Murphy Winter

The Seahawks Won Benito Bowl LX: They did it. On Sunday, for the second time in the franchise’s 50-year history, Seattle won the Super Bowl. They beat the New England Patriots 29-13 and got to have their redemption arc after losing to the Pats in 2015. Get ready for the parade downtown on Wednesday! Not a football fan? Hometown pride not enough for you? Let me offer you this: Thanks to the Seahawks, Trump had a bad day on Sunday. He wanted the Pats to win so badly

Benito Also Won the Benito Bowl: Thanks to Trump’s hissy fit about having a Spanish-language performer for the halftime show, Bad Bunny’s performance was always going to be political, and holy shit did he kill it. The entire performance was a love letter to Puerto Rico. The only English he spoke in the whole show was to say “God Bless America,” before listing all of the countries on the American continent. And when he appeared on stage with the Puerto Rican flag, it was the one with the light blue triangle—the independence flag. And on top of that, it was an impeccable performance. The set was a series of vignettes—including Benito giving a 5-year-old Latino boy his Grammy and an actual fucking wedding—and it was without a doubt the most lush, joyful performance I’ve seen on the Super Bowl stage. Watch it in full here.

Meanwhile, at the “All-American Halftime Show”: Because watching a Puerto Rican perform might make conservatives’ dicks fall off, TurningPointUSA hosted an “alternative” to the Super Bowl halftime show on YouTube. Apparently, about 2 million people streamed the pre-taped TPUSA fundraiser on YouTube, filling the live chat with American Flag emojis while Kid Rock, Brantley Gilbert, Lee Brice, and Gabby Barrett performed. Pete Hegseth threw a football. And that’s about all that happened

Ring Tries to Pup-Wash Surveillance: In their 30-second Super Bowl ad, Ring cameras highlighted “Search Party,” a way to trigger all of your neighbors’ cameras to look for a dog if it’s gone missing. Sweet, right? But the system could have just as easily been called “Manhunt.” As USA Today put it, it’s The Dark Night brought to life. “Indeed, the Ring camera technology that uses AI to track multiple cameras in a vicinity to locate a lost dog is basically the same function that Wayne used to hack people's cell phones to create a high-frequency generator receiver to pin down the location for Gotham City's Clown Prince of Crime.” 

Weather: Looks like the weather gods are smiling upon the Super Bowl parade. We’ll likely have some rain today, but Tuesday through Thursday should be sunny and in the 50s. 

Got a spare $5 mil? Bill Gates isn’t selling Xanadu 2.0 (his megamansion) in Medina, but he is shedding one of his bonus houses around it. For a man worth more than $100 billion, selling a multi-million-dollar house is sort of like selling books to a used book store for the rest of us. For the low, low price of $4.8 million, you can be Bill Gates’s neighbor. But considering how many times his name has shown up in the Epstein files (namely for trying to sneak STI medication to his wife after he caught something from “Russian girls”), that might be bringing the price down a couple mil. 

Speaking of Epstein and Microsoft Execs: It looks like Nathan Myhrvold, the chief tech officer for Microsoft from 1986 to 2000, did some time on Jeffrey’s island. He also emailed Epstein about how hard it is to “FedEx pussy,” and Epstein offered to “leave” a girl for Myhrvold at his lab. 

The DOJ’s Hiring: But no one wants the job. Chad Mizelle, a former chief of staff to US Attorney General Pam Bondi, posted on the porn site formerly known as Twitter that “if you are a lawyer, are interested in being an AUSA, and support President Trump and anti-crime agenda,” you should slide into his DMs. Once a coveted position for lawyers around the country, the application questionnaires now include questions like: “How would you help advance the president’s executive orders and policy priorities in this role?” And prioritizing loyalists has meant that they’re hiring shittier lawyers. I’m sure Nick Brown doesn’t mind.  

Here's that Ring #SuperBowl commercial: pic.twitter.com/1gAxIJATdz

— philip lewis (@Phil_Lewis_) February 9, 2026

Two Million Souls: According to a recent study, after almost four years of fighting, the death toll in the Ukraine War is nearing 2 million. Two-thirds of those deaths are Russian, who lost about 35,000 troops a month in 2025. 

Here’s a Dystopian Headline for You:Chatbots Make Terrible Doctors, Study Finds.” Apparently, ChatGPT and other LLMs could theoretically get into medical school, but diagnosing real humans is a whole other matter. Sometimes the chatbots generated information that was just wrong—fixating on elements of the patient’s descriptions that were irrelevant, providing a partial US phone number, or telling them to call the Australian emergency number. “In an extreme case, two users sent very similar messages describing symptoms of a subarachnoid hemorrhage but were given opposite advice,” the study’s authors wrote. “One user was told to lie down in a dark room, and the other user was given the correct recommendation to seek emergency care.” I know insurance is hell, but go to the doctor. 

Biiiiig Hug: It’s been an unusually warm winter, even in Spokane, so when a deer was spotted stranded on the ice on top of Loon Lake, it was never going to be an easy rescue. Firefighter Gavin Gallagher scooched out to the center of the ice, lassoed her neck, and bearhugged her to keep her secure while the folks on land reeled them in. Rudely, she didn’t say thank you. “She ran off as, as expected,” one of the rescuers said, “to do deer things.”

          View this post on Instagram                      

A post shared by ABC7 Eyewitness News (@abc7la)

News We Didn’t Know We Needed: 404 Media published a roundup of studies about sex in space. Key lesson: Don’t make babies in space. 

Because there’s no such thing as too much Bad Bunny today: 

17:07

15:28

Link [Scripting News]

Problem in Drummer blogs. oldschool.scripting.com is now served on https and the code in the template doesn't take that into account. For example, if you try to load the home page of my blog, you won't get through because it can't open the http files in the head of the template. This is something users can fix because you get to change your template. So I'm going to stay focused on my current work.

15:07

Offpunk 3.0 released [LWN.net]

Version 3.0 of the Offpunk offline-first, command-line web, Gemini, and Gopher browser has been released. Notable changes in this release include integration of the unmerdify library to "remove cruft" from web sites, the xkcdpunk standalone tool for viewing xkcd comics in the terminal, and a cookies command to enable browsing web sites (such as LWN.net) while being logged in.

Something wonderful happened on the road leading to 3.0: Offpunk became a true cooperative effort. Offpunk 3.0 is probably the first release that contains code I didn't review line-by-line. Unmerdify (by Vincent Jousse), all the translation infrastructure (by the always-present JMCS), and the community packaging effort are areas for which I barely touched the code.

So, before anything else, I want to thank all the people involved for sharing their energy and motivation. I'm very grateful for every contribution the project received. I'm also really happy to see "old names" replying from time to time on the mailing list. It makes me feel like there's an emerging Offpunk community where everybody can contribute at their own pace.

There were a lot of changes between 2.8 and 3.0, which probably means some new bugs and some regressions. We count on you, yes, you!, to report them and make 3.1 a lot more stable. It's as easy at typing "bugreport" in offpunk!

See the "Installing Offpunk" page to get started.

Debian's tag2upload considered stable [LWN.net]

Sean Whitton has announced that Debian's tag2upload service is now out of beta and ready for use by Debian developers and maintainers.

During the beta we encountered only a few significant bugs. Now that we've fixed those, our rate of successful uploads is hovering around 95%. Failures are almost always due to packaging inconsistencies that older workflows don't detect, and therefore only need fixing once per package.

We don't think you need explicit approval from your co-maintainers anymore. Your upload workflows can be different to your teammates. They can be using dput, dgit or tag2upload.

LWN covered tag2upload in July 2024.

14:49

The official unplanned emergency OSNews fundraiser! [OSnews]

Update: we’ve already hit the €5000 goal, in a little over 24 hours. Considering I thought this would take weeks – assuming we’d hit the goal at all – I’m a bit overwhelmed with all the love and support. Thank you so, so much. Since people are still donating, I upped the goal to €7500 to give people something to donate to.

You people are wild. Amazing.

It’s time for an OSNews fundrasier! This time, it’s unplanned due to a financial emergency after our car unexpectedly had to be scrapped (you can find more details below). If you want to support one of the few independent technology news websites left, this is your chance. OSNews is entirely supported by you, our readers, so go to our Ko-Fi and donate to our emergency fundraiser today!

Why support OSNews?

  • We do not run any ads, so we don’t have to be friendly to advertisers (i.e. the technology companies we’re supposed to report on).
  • We are not owned and controlled by a large media company dictating our tone and content. You’d be surprised how many other sites are.
  • We do not use any “AI”; not during research, not during writing, not for images, nothing.
  • We rely entirely on your support to keep going.

In short, we are truly independent. After turning off our ads, our Patreons and donors are our sole source of income, and since I know many of you prefer the occasional individual donation over recurring Patreon ones, I run a fundraiser a few times a year to rally the troops, so to speak. This particular fundraiser wasn’t planned, however, given the circumstances described below, several readers have urged me to run a fundraiser now.

We’re incredibly grateful for even having the opportunity to do something like this, and as always, I’d like to stress that OSNews will never be paywalled, and that access to our website will never be predicated on your financial support. You can ignore all of this and continue on reading the site as usual.

What’s going on?

Sadly, and unexpectedly, we’ve had to scrap our car. Our 2007 Hyundai Santa Fe did not survive this Arctic Winter, as the two decades in the biting cold has taken a toll on a long list of components and parts – it would no longer start. After consulting an expert, we determined that repairs would’ve been too expensive to make financial sense for such an old vehicle. Sometimes, you have to take the loss lest you throw money down a pit. An unreliable car in an Arctic climate is a really bad idea, since getting stranded on a back road somewhere when it’s -30°C (or colder) with two toddlers is not going to be a fun time.

On top of that, my wife uses our car to commute to work, and while using the bus is going to be fine for a little while, her job in home care for the very elderly and recovering alcoholics is incredibly stressful and intensive. Dealing with bus schedules and wait times at such low temperatures is not exactly compatible with her job. Since she’s just recovering from a doctor-mandated rest period – very common in her line of work – her income has taken a hit. Taking professional care of people with severe dementia or other old-age related conditions is a thankless and underpaid job, and it’s no surprise those working in this profession often require mandated rest (and thus a temporary pay cut).

And so, urged on by readers on Mastodon, I’m doing an OSNews fundraiser to help us pay for the “new” car. Of course, we’re looking for a used car, not a new one, and based on our needs we’ve set a budget of around €10,000. This should allow us to buy something like a used Mazda 6 or Volvo V60 from around 2014-2015, or something similar in size and age, with a reasonable petrol engine (an EV is well out of our price range). We consider this the sweet spot for safety features, size, age, longevity, and reliability. We’ve got some savings, but most of the purchase price will have to come in the form of a car loan. We’ve already made some changes to our monthly expenses to cover for part of the monthly repayments, including a lucky break where our daycare expenses will be going down considerably next month.

Based on this, I’ve set the fundraising goal at €5000. If we manage to hit that – and the last few times we hit our goals quite fast – it won’t cover the entire purchase price, but it will cut down on the amount we need to loan considerably.

I’m feeling a little apprehensive about all of this, since this isn’t really an OSNews-related expense I can easily get some content out of. However, I’m entirely open to suggestions about how I could get some OSNews content out of this – perhaps buying and installing one of those Android headunits with a large display? They make them tailored for almost every vehicle at low prices on AliExpress, and the installation process and user experience might be something interesting to write about, as it’s potentially a great way to add some modern features to an older car. Feel free to make any suggestions.

I’m also open to other crazy ideas. If you happen to work at an automaker, and need some testing done in an Arctic environment – including ice roads – I’m open to ideas.

A few random notes

Since about half of our audience hails from the United States, I figured I’d make a few notes about car pricing in Europe, and in Arctic Sweden in particular. Cars are definitely more expensive here in Europe, doubly so in the sparsely populated area where we live (low supply leads to higher prices). Buying a brand new car is entirely out of the question due to pricing, and leasing is also far too expensive (well over €500/month for even a basic, small car). Used electric cars are still well out of our budget as well, and since we don’t have our own driveway, we wouldn’t be able to charge at home anyway.

Opting to forego a car entirely is sadly not an option either. With two small children, the Arctic climate, the remoteness, my wife’s stressful job and commute, and long distances to basic amenities, we can’t “go Dutch” and live off public transport and bicycles, no matter how much we’d want to. We have considered it, but it’s just not a realistic long-term solution. Had we lived in The Netherlands or in a big city, going carless would’ve possibly been a more realistic option.

We intended to drive the Santa Fe until it fell apart, but we did not expect this to happen so soon. Feel free to sound off if you have any other questions regarding car buying and ownership where we live, and I’ll try my best to answer your questions.

As always, thank you for your support, thank you for reading OSNews, and thank you for being here.

The Dillo appreciation post [OSnews]

About a year ago I mentioned that I had rediscovered the Dillo Web Browser. Unlike some of my other hobbies, endeavours, and interests, my appreciation for Dillo has not wavered.

I only have a moment to gush today, so I’ll cut right to it. Dillo has been plugging along nicely (see the Git forge.) and adding little features. Features that even I, a guy with a blog, can put to use. Here are a few of my favourites.

↫ Bobby Hiltz

If you’re looking for a more minimalist, less distracting browser experience that gives you a ton of interesting UNIXy control, you should really consider giving Dillo a try.

KDE Linux improves by leaps and bounds [OSnews]

KDE’s Nate Graham has published a status update about KDE Linux, the KDE project’s new immutable Linux distribution, intended to be the “KDE OS” showcasing the best of the KDE community. While the project is approaching the beta stage, it’s currently still in alpha, but from what I gather from friends who are using it, the alpha label might actually be like how Haiku is supposedly still alpha: intended more to scare people away for now than ana ctual descriptor of the state of the software.

Recently, KDE Linux enabled delta updates, possibly dramatically reducing the size of updates. Before delta updates were enabled, a system update would come in at 7GB, while with delta updates enabled, it’s gone down to 1-2GB. In addition, plasma-setup and plasma-login-manager have been added to KDE Linux, which are, respectively, a first-run setup assistant and KDE’s new login manager. This new login manager was forked from SDDM, and specifically targets Wayland, and comes with much deeper Plasma integration than SDDM. Note that SDDM will remain available for platforms that don’t use Wayland.

KDE Linux has also massively improved its hardware support, and the list is long; from scanners to fancy multi-button mice, from Android devices to professional audio devices, and much more. Performance has been improved as well, the boot manager menu will no longer be shown at every boot but only when needed, the wireless regulatory domain is now properly set and managed, and much, much more.

I’m keeping an eye on KDE Linux as a possible replacement for my Fedora KDE installations if Fedora ever loses the plot, even if it’s an immutable distribution relying on Flatpak. I’m a KDE user, and I want the latest and greatest the KDE community has to offer without going through an distributor.

14:42

Designing Effective Multi-Agent Architectures [Radar]

Papers on agentic and multi-agent systems (MAS) skyrocketed from 820 in 2024 to over 2,500 in 2025. This surge suggests that MAS are now a primary focus for the world’s top research labs and universities. Yet there is a disconnect: While research is booming, these systems still frequently fail when they hit production. Most teams instinctively try to fix these failures with better prompts. I use the term prompting fallacy to describe the belief that model and prompt tweaks alone can fix systemic coordination failures. You can’t prompt your way out of a system-level failure. If your agents are consistently underperforming, the issue likely isn’t the wording of the instruction; it’s the architecture of the collaboration.

Beyond the Prompting Fallacy: Common Collaboration Patterns

Some coordination patterns stabilize systems. Others amplify failure. There is no universal best pattern, only patterns that fit the task and the way information needs to flow. The following provides a quick orientation to common collaboration patterns and when they tend to work well.

Supervisor-based architecture

A linear, supervisor-based architecture is the most common starting point. One central agent plans, delegates work, and decides when the task is done. This setup can be effective for tightly scoped, sequential reasoning problems, such as financial analysis, compliance checks, or step-by-step decision pipelines. The strength of this pattern is control. The weakness is that every decision becomes a bottleneck. As soon as tasks become exploratory or creative, that same supervisor often becomes the point of failure. Latency increases. Context windows fill up. The system starts to overthink simple decisions because everything must pass through a single cognitive bottleneck.

Blackboard-style architecture

In creative settings, a blackboard-style architecture with shared memory often works better. Instead of routing every thought through a manager, multiple specialists contribute partial solutions into a shared workspace. Other agents critique, refine, or build on those contributions. The system improves through accumulation rather than command. This mirrors how real creative teams work: Ideas are externalized, challenged, and iterated on collectively.

Peer-to-peer collaboration

In peer-to-peer collaboration, agents exchange information directly without a central controller. This can work well for dynamic tasks like web navigation, exploration, or multistep discovery, where the goal is to cover ground rather than converge quickly. The risk is drift. Without some form of aggregation or validation, the system can fragment or loop. In practice, this peer-to-peer style often shows up as swarms.

Swarms architecture

Swarms work well in tasks like web research because the goal is coverage, not immediate convergence. Multiple agents explore sources in parallel, follow different leads, and surface findings independently. Redundancy is not a bug here; it’s a feature. Overlap helps validate signals, while divergence helps avoid blind spots. In creative writing, swarms are also effective. One agent proposes narrative directions, another experiments with tone, a third rewrites structure, and a fourth critiques clarity. Ideas collide, merge, and evolve. The system behaves less like a pipeline and more like a writers’ room.

The key risk with swarms is that they generate volume faster than they generate decisions, which can also lead to token burn in production. Consider strict exit conditions to prevent exploding costs. Also, without a later aggregation step, swarms can drift, loop, or overwhelm downstream components. That’s why they work best when paired with a concrete consolidation phase, not as a standalone pattern.

Considering all of this, many production systems benefit from hybrid patterns. A small number of fast specialists operate in parallel, while a slower, more deliberate agent periodically aggregates results, checks assumptions, and decides whether the system should continue or stop. This balances throughput with stability and keeps errors from compounding unchecked. This is why I teach this agents-as-teams mindset throughout AI Agents: The Definitive Guide, because most production failures are coordination problems long before they are model problems.

If you think more deeply about this team analogy, you quickly realize that creative teams don’t run like research labs. They don’t route every thought through a single manager. They iterate, discuss, critique, and converge. Research labs, on the other hand, don’t operate like creative studios. They prioritize reproducibility, controlled assumptions, and tightly scoped analysis. They benefit from structure, not freeform brainstorming loops. This is why it’s not a surprise if your systems fail; if you apply one default agent topology to every problem, the system can’t perform at its full potential. Most failures attributed to “bad prompts” are actually mismatches between task, coordination pattern, information flow, and model architecture.

Want Radar delivered straight to your inbox? Join us on Substack. Sign up here.

Breaking the Loop: “Hiring” Your Agents the Right Way

I design AI agents the same way I think about building a team. Each agent has a skill profile, strengths, blind spots, and an appropriate role. The system only works when these skills compound rather than interfere. A strong model placed in the wrong role behaves like a highly skilled hire assigned to the wrong job. It doesn’t merely underperform, it actively introduces friction. In my mental model, I categorize models by their architectural personality. The following is a high-level overview.

Decoder-only (the generators and planners): These are your standard LLMs like GPT or Claude. They are your talkers and coders, strong at drafting and step-by-step planning. Use them for execution: writing, coding, and producing candidate solutions.

Encoder-only (the analysts and investigators): Models like BERT and its modern representations such as ModernBERT and NeoBERT do not talk; they understand. They build contextual embeddings and are excellent at semantic search, filtering, and relevance scoring. Use them to rank, verify, and narrow the search space before your expensive generator even wakes up.

Mixture of experts (the specialists): MoE models behave like a set of internal specialist departments, where a router activates only a subset of experts per token. Use them when you need high capability but want to spend compute selectively.

Reasoning models (the thinkers): These are models optimized to spend more compute at test time. They pause, reflect, and check their own reasoning. They’re slower, but they often prevent expensive downstream mistakes.

So if you find yourself writing a 2,000-word prompt to make a fast generator act like a thinker, you’ve made a bad hire. You don’t need a better prompt; you need a different architecture and better system-level scaling.

Designing Digital Organizations: The Science of Scaling Agentic Systems

Neural scaling1 is continuous and works well for models. As shown by classic scaling laws, increasing parameter count, data, and compute tends to result in predictable improvements in capability. This logic holds for single models. Collaborative scaling,2 as you need in agentic systems, is different. It’s conditional. It grows, plateaus, and sometimes collapses depending on communication costs, memory constraints, and how much context each agent actually sees. Adding agents doesn’t behave like adding parameters.

This is why topology matters. Chains, trees, and other coordination structures behave very differently under load. Some topologies stabilize reasoning as systems grow. Others amplify noise, latency, and error. These observations align with early work on collaborative scaling in multi-agent systems, which shows that performance does not increase monotonically with agent count.

Recent work from Google Research and Google DeepMind3 makes this distinction explicit. The difference between a system that improves with every loop and one that falls apart is not the number of agents or the size of the model. It’s how the system is wired. As the number of agents increases, so does the coordination tax: Communication overhead grows, latency spikes, and context windows blow up. In addition, when too many entities attempt to solve the same problem without clear structure, the system begins to interfere with itself. The coordination structure, the flow of information, and the topology of decision-making determine whether a system amplifies capability or amplifies error.

The System-Level Takeaway

If your multi-agent system is failing, thinking like a model practitioner is no longer enough. Stop reaching for the prompt. The surge in agentic research has made one truth undeniable: The field is moving from prompt engineering to organizational systems. The next time you design your agentic system, ask yourself:

  • How do I organize the team? (patterns) 
  • Who do I put in those slots? (hiring/architecture) 
  • Why could this fail at scale? (scaling laws)

That said, the winners in the agentic era won’t be those with the smartest instructions but the ones who build the most resilient collaboration structures. Agentic performance is an architectural outcome, not a prompting problem.


References

  1. Jared Kaplan et al., “Scaling Laws for Neural Language Models,” (2020): https://arxiv.org/abs/2001.08361.
  2. Chen Qian et al., “Scaling Large Language Model-based Multi-Agent Collaboration,” (2025): https://arxiv.org/abs/2406.07155.
  3. Yubin Kim et al., “Towards a Science of Scaling Agent Systems,” (2025): https://arxiv.org/abs/2512.08296.

14:21

Security updates for Monday [LWN.net]

Security updates have been issued by AlmaLinux (fontforge, kernel, and osbuild-composer), Debian (debian-security-support, sudo, wireshark, xrdp, and zabbix), Fedora (bind, bind-dyndb-ldap, chromium, k9s, libgit2, mingw-glib2, node-exporter, open-vm-tools, plantuml, xorgxrdp, and xrdp), Oracle (fence-agents, image-builder, kernel, libsoup3, and osbuild-composer), Red Hat (image-builder and osbuild-composer), Slackware (openssl and p11), SUSE (chromium, cockpit-354, cockpit-machines, cockpit-machines-346, cockpit-packages, cockpit-podman, cockpit-subscriptions, govulncheck-vulndb, kubernetes-old, libsnmp45-32bit, libxml2, localsearch, micropython, opencloud-server, python-django, python-djangorestframework, python-maturin, python311-Django, python311-wheel, python315, sqlite3, and xrdp), and Ubuntu (linux-fips, linux-aws-fips, linux-gcp-fips and python-pip).

14:00

The Scriptovision Super Micro Script video titler is almost a home computer [OSnews]

Cameron Kaiser comes in with another amazing article, this time diving into a unique video titler from Canada, released in 1985.

The Super Micro Script was one of several such machines this company made over its lifetime, a stylish self-contained box capable of emitting a 32×16 small or 10×4 large character layer with 64×32 block graphics in eight colours. It could even directly overlay its output over a composite video signal using a built-in genlock, one of the earliest such consumer units to do so. Crack this unit open, however, and you’ll find the show controlled by an off-the-shelf Motorola 6800-family microcontroller and a Motorola 6847 VDG video chip, making it a relative of contemporary 1980s home computers that sometimes used nearly exactly the same architecture.

More important than that, though, it has socketed EPROMs we can theoretically pull and substitute with our own — though we’ll have to figure out why the ROMs look like nonsense, and there’s also the small matter of this unit failing to generate a picture. Nevertheless, when we’re done, another homegrown Canadian computer will rise and shine. We’ll even add a bitbanged serial port and write a MAME emulation driver for it so we can develop software quickly … after we fix it first.

↫ Cameron Kaiser

I know I keep repeating myself, but Kaiser’s work on so many of these rare and unique systems is not only worthwhile and amazing to read, they’re also incredibly valuable from a historical and preservation perspective. This article in hand, anyone who stumbles upon one of these machines can get the most out of it, possibly fix one, and use it for fun projects. I’m incredibly grateful for this sort of work.

Video titles are such an interesting relic of the past. These days, adding titles to a video is child’s play, but back when computing power came at a massive premium and digital video was but a distant dream, using analog video to overlay text onto was the best way to go about it. Video titler makers did try to move the technology from professional settings to home settings, but from what I can gather, this move never really paid off.

Still, I’d love to buy one of these at some point and mess around with it. There’s some real cool retro effects you can create with these.

13:35

CodeSOD: Invalid Passport [The Daily WTF]

Gretchen wanted to, in development, disable password authentication. Just for a minute, while she was testing things. That's when she found this approach to handling authentication.

passport.authenticate('local', { session: true }, async (err, user) => {
  if (err) {
    res.send({ success: false, message: 'Error authenticating user.' })
  } else if (!user) {
    User.query()
      .where({ username: req.body.username })
      .first()
      .then(targetUser => {
        if (targetUser) {
          const hash = User.hashPassword(
            targetUser.password_salt,
            req.body.password
          )
          if (hash === targetUser.password_hash) {
            res.send({
              success: false,
              message: 'Incorrect username or password.',
            })
          } else {
            res.send({
              success: false,
              message: 'Incorrect username or password.',
            })
          }
        } else {
          res.send({
            success: false,
            message: 'Incorrect username or password.',
          })
        }
      })
      .catch(err => {
        res.send({ success: false, message: 'Internal server error' })
      })
  } else if (user.firstLogin) {
//......
  }
})(req, res, next);

passport.authenticate invokes its callback after attempting to authenticate. Now, normally, this is called as middleware on a route defined on the webserver- that is to say, you don't call it from within your application code, but as part of your routing configuration. That's not the case here, where this blob is inside of a controller.

That's weird, but let's just trace through this code. We attempt to authenticate. When the process completes, our callback function executes. If authentication failed, there's an error, so we'll send an error message. Then, if the user object isn't populated, we attempt to look up the user. If we find a user with that user name, we then hash their password and check if the hash matches. If it does, we send an error message. If it doesn't, we send an error message. If we didn't find the user, we send an error message. If anything goes wrong, we send an error message.

Wait a second, back up: if the user exists and their password matches, we send an error message?

I'll let Gretchen explain a bit more:

passport.authenticate returns an error if the authentication failed and a user object, if it succeeded. We check this immediately: if error is set, return an error message. But then, we check if the user does not exist (aka: the authentication failed).

Yes, the reason user would be null is because the authentication failed. So the error would be set. So that entire branch about validating the user won't happen: either the authentication worked and we know who the user is, or it failed, in which case we'd have an error. There's no reasonable world where there's no error but also no user object.

So yes, if authentication failed, but you manually re-run the authentication and it succeeds for some reason, yeah, you probably should still return an error. But I don't know if it's "Incorrect username or password". It probably should be "Invalid reality, please restart the universe and see if the problem persists."

[Advertisement] Plan Your .NET 9 Migration with Confidence
Your journey to .NET 9 is more than just one decision.Avoid migration migraines with the advice in this free guide. Download Free Guide Now!

12:07

LLMs are Getting a Lot Better and Faster at Finding and Exploiting Zero-Days [Schneier on Security]

This is amazing:

Opus 4.6 is notably better at finding high-severity vulnerabilities than previous models and a sign of how quickly things are moving. Security teams have been automating vulnerability discovery for years, investing heavily in fuzzing infrastructure and custom harnesses to find bugs at scale. But what stood out in early testing is how quickly Opus 4.6 found vulnerabilities out of the box without task-specific tooling, custom scaffolding, or specialized prompting. Even more interesting is how it found them. Fuzzers work by throwing massive amounts of random inputs at code to see what breaks. Opus 4.6 reads and reasons about code the way a human researcher would­—looking at past fixes to find similar bugs that weren’t addressed, spotting patterns that tend to cause problems, or understanding a piece of logic well enough to know exactly what input would break it. When we pointed Opus 4.6 at some of the most well-tested codebases (projects that have had fuzzers running against them for years, accumulating millions of hours of CPU time), Opus 4.6 found high-severity vulnerabilities, some that had gone undetected for decades.

The details of how Claude Opus 4.6 found these zero-days is the interesting part—read the whole blog post.

News article.

11:35

Grrl Power #1433 – A handful of complaints [Grrl Power]

For this page, I did google “how long do boobs take” or… something along those lines. Obviously the answer varies from person to person, and in a the cruelest twist of the knife, the age that they actually start growing varies by years, a fact that is no doubt responsible for all sorts of insecurities. If you’re the first girl in your class, I assume all the other girls get envious while you turn into a bundle of self-consciousness, and if you’re the last girl, I can only imagine the derisive remarks from the popular enboobened mean girls and boys who are jerk-butts.

Sydney is clearly trying to convince herself that big boobs are dumb. She knows the holo-boobs are temporary, and while she also knows that Frix could probably medical her up a permanent enhancement, like I said, she doesn’t particularly suffer from A-cup angst. She might be able to talk herself around to a B-cup, but among all the other reasons not to do it, she’s a very public figure and she probably wouldn’t be excited to read all the comments online about it.

All that said, Sydney’s next question will be, “So do the showers have holo-projectors in them?” She already knows they have full-length steam-free mirrors, much to her horror. Fortunately they’re optional. They’re actually part of the holo system, which does, in fact, mean there are scanners of some sort in the showers. Because Cora and crew are perverts… by our Terran and especially American standards. No scanners in the toilets though. They’re space perverts, not German. But while Sydney’s not thrilled with watching herself in a full-length mirror while she’s sudsing her gunge, that doesn’t mean she doesn’t know how to have fun with holo-jumblies in the shower. Especially if holo-system can touch up any areas she’s not fully happy with.

Hey, quick question. Is the web page slow for you guys? I can’t figure it out, because on my work computer, and the laptop I used when I was visiting my parents’ house (which I now use in our game room when I’m posting the comic some nights) the web page is unbelievably slow. Like, 20-30 seconds to refresh the page. When I’m posting the comic, I keep getting messages from WordPress that I’ve lost connection to the server and saving is disabled, and that pops on and off and I have to wait to get the new post updated. My computer is connected to the router with ethernet, and the laptop is on wi-fi. But here’s the thing – If I check the page on my phone using the same wi-fi connection, the page comes right up. Same thing on my wife’s phone. And when I checked the page on my phone using some business’s wi-fi, it came right up. I’ve tried Firefox and chrome on my work machine and laptop, and I can’t figure out what the heck is going on. Maybe it’s some plugin I’m using since both machines are running basically the same configuration, but I couldn’t guess which one might be causing it, since I’m not running a “make your own personal website dog-ass slow” plugin, but I thought I’d see if the page was really slow for anyone else.


Here is Gaxgy’s painting Maxima promised him. Weird how he draws almost exactly like me.

I did try and do an oil painting version of this, by actually re-painting over the whole thing with brush-strokey brushes, but what I figured out is that most brushy oil paintings are kind of low detail. Sure, a skilled painter like Bob Ross or whoever can dab a brush down a canvas and make a great looking tree or a shed with shingles, but in trying to preserve the detail of my picture (eyelashes, reflections, etc) was that I had to keep making the brush smaller and smaller, and the end result was that honestly, it didn’t really look all that oil-painted. I’ll post that version over at Patreon, just for fun, but I kind of quit on it after getting mostly done with re-painting Max.

Patreon has a no-dragon-bikini version of of the picture as well, naturally.


Double res version will be posted over at Patreon. Feel free to contribute as much as you like.

10:35

Pluralistic: The Epstein class and collapse porn (09 Feb 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



A detail of a US $100 bill. Jeffrey Epstein's mugshot has been overlaid over Benjamin Franklin's portrait. Peter Thiel's portrait has been swapped for the US Dept of Treasury seal. Trump's signature has been swapped for the US Treasurer's signature. The line of zeroes after the 100, top and bottom, has been extended to the edge of the image. The image has been roughed up and recolored in a hellish mix of reds and yellows.

The Epstein class and collapse porn (permalink)

It's hard to talk about the Epstein class without thinking about "The Economy" – "The Economy" in the sense of a kind of mystical, free-floating entity whose health or sickness determines the outcomes for all the rest of us, whom we must make sacrifices to if we are to prosper.

As nebulous as "The Economy" is as an entity, there's an economic priesthood that claims it can measure and even alter the course of the economy using complex mathematics. We probably won't ever understand their methods, but we can at least follow an indicator or two, such as changes to GDP, an aggregated statistic that is deceptively precise, given that it subsumes any number of estimates, qualitative judgments and wild-ass guesses, which are all disguised behind an official statistic that is often published to three decimal places.

There's plenty to criticize about GDP: a healthy GDP doesn't necessarily mean that the average worker is better off. When your rent goes up, so does GDP. Same with your salary going down (provided this results in more spending by your boss). GDP isn't really a measure of the health of "The Economy" – it's a measure of the parts of "The Economy" that make rich people (that is, the Epstein class) better off.

But what if there was a way to make money from calamitous collapses in GDP? What if the wealthy didn't just win when "number go up," but also when "number eat shit?"

The latest batch of Epstein emails includes a particularly ghoulish exchange between Epstein and his business partner, the anti-democracy activist and billionaire Peter Thiel:

https://www.justice.gov/epstein/files/DataSet%209/EFTA00824843.pdf

The email is dated 26 Jun 2016, right after Brexit, and in it, Epstein writes:

return to tribalism . counter to globalization. amazing new alliances. you and I both agreed zero interest rates were too high, as i said in your office. finding things on their way to collapse , was much easier than finding the next bargain

This is a perfect example of what Naomi Klein calls "disaster capitalism." It's been the norm since the crash of 2008, when bankers were made whole through public bailouts and mortgage holders were evicted by the millions to "foam the runway" for the banks:

https://wallstreetonparade.com/2012/08/how-treasury-secretary-geithner-foamed-the-runways-with-childrens-shattered-lives/

The crash of 2008 turned a lot of people's homes – their only substantial possessions – into "distressed assets" that were purchased at fire-sale prices by Wall Street investors, who turned around and rented those homes out to people who were now priced out of the housing market at rents that kept them too poor to ever afford a home, under slum conditions that crawled with insects and black mold:

https://pluralistic.net/2024/10/01/housing-is-a-human-right/

Note here that economic collapse helps the Epstein class only if society has no social safety net. If Obama had supported homeowners instead of banks, there wouldn't have been a foreclosure crisis and thus there wouldn't have been any "distressed assets" flooding the market.

So it's no surprise that the Epstein class are also obsessed with austerity. Peter Mandelson (British Labour's "Prince of Darkness") is a close ally of Epstein's, and also a key figure in the crushing austerity agenda of Blair, Brown and Starmer. He's a machine for turning Parliamentary majorities into distressed assets at scale.

Same for Steve Bannon, another close Epstein ally, who boasts about his alliances with far-right figures who exalt the capital class and call for deregulation and the elimination of public services: Le Pen, Salvini, Farage. Combine that with Epstein and Thiel's gloating about "finding things on their way to collapse…much easier than finding the next bargain," and it starts to feel like these guys are even happier with "number eat shit" than they are with "number go up."

Trump is the undisputed king of the Epstein class, and he seems determined to drive "The Economy" over a cliff. Take his tariff program, modeled on the McKinley tariffs of 1890, which led to the Panic of 1893, a financial crisis that saw one in four American workers forced into unemployment and 15,000 businesses into bankruptcy (that's a lot of distressed assets!):

https://en.wikipedia.org/wiki/Panic_of_1893

Then there's Trump's mass deportation program, which will force lots of businesses (farms, restaurants, etc) into bankruptcy, creating another massive pool of distressed assets. Trump's given ICE $75b, while the DoJ Antitrust Division and FTC (which protect Americans from corporate scams) have seen their budgets take a real-terms cut. The majority of DoJ lawyers and FBI agents are working on immigration cases (against workers, not employers, mind!). The Antitrust Division has $275m to fight all of America's corporate crime:

https://www.organizedmoney.fm/p/white-collar-crime-enforcement-in

I'm not saying that Trump is trying to induce another massive economic crash. I'm saying, rather, that within his coalition there is a substantial bloc of powerful, wealthy people who are on the hunt for "things on their way to collapse," and who are doubtless maneuvering to frustrate other Trump coalition members who are solely committed to "number go up."

Even the collapse of crypto creates lots of opportunities to "buy the dip." Not the dip in crypto (crypto's going to zero), but the dip in all the real things people bought with real money they got by borrowing against their shitcoins.

The thousand-plus children that Epstein lured to his island rape-camp were often "distressed assets" in their own right: Julie K Brown's groundbreaking reporting on Epstein for the Miami Herald described how he sought out children whose parents were poor, or neglectful, or both, on the grounds that those children would be "on their way to collapse," too.

The Epstein class's commitment to destroying "The Economy" makes sense when you understand that trashing civilization is "much easier than finding the next bargain." They want to buy the dip, so they're creating the dip.

They don't need the whole number to go up, just theirs. They know that inclusive economies are more prosperous for society as a whole, but it makes criminals and predators worse off. The New Deal kicked off a period of American economic growth never seen before or since, but the rich despised it, because a prosperous economy is one in which it gets harder and harder to find "things on their way to collapse," and thus nearly impossible to "find[] the next bargain."

(Image: Gage Skidmore, CC BY-SA 3.0)


Hey look at this (permalink)



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

Object permanence (permalink)

#25yrsago Yours is a very bad hotel https://www.slideshare.net/slideshow/yours-is-a-very-bad-hotel/34583

#20yrsago Kids refuse to sell candy after completing health unit https://web.archive.org/web/20060223010123/http://www.guardian.co.uk/worldlatest/story/0,,-5600588,00.html

#20yrsago Disneyland model recreates Yippie invasion of 1970 https://web.archive.org/web/20051228122604/http://dannysland.blogspot.com/2005/12/great-moments-in-disneyland-history.html

#20yrsago Canadian Red Cross wastes its money harassing video game makers https://web.archive.org/web/20060221020835/https://www.igniq.com/2006/02/canadian-red-cross-wants-its-logo-out.html

#20yrsago How Yahoo/AOL’s email tax will hurt free speech https://web.archive.org/web/20060213175705/https://www.eff.org/deeplinks/archives/004398.php#004398

#20yrsago Adbusters and the Economist have the same covers https://pieratt.com/odds/adbusters_vs_theeconomist.jpg

#20yrsago Head of British Vid Assoc: Piracy doesn’t hurt DVD sales http://news.bbc.co.uk/1/hi/entertainment/4691228.stm#6

#20yrsago Countries around the world rebelling against extreme copyright https://web.archive.org/web/20060629232414/http://www.michaelgeist.ca/index.php?option=com_content&amp;task=view&amp;id=1095

#20yrsago Web 1.0 logo-mosaic https://web.archive.org/web/20060506074530/https://www.complexify.com/buttons/

#15yrsago Is it legal to print Settlers of Catan tiles on a 3D printer? https://web.archive.org/web/20110131102845/https://publicknowledge.org/blog/3d-printing-settlers-catan-probably-not-illeg

#15yrsago UK Tories get majority of funding from bankers https://www.theguardian.com/politics/2011/feb/08/tory-funds-half-city-banks-financial-sector

#15yrsago Colorado Springs school bans kid who takes THC lozenges for neuro condition from attending because of “internal possession” https://www.coloradoindependent.com/2011/02/07/teens-medical-marijuana-fight-escalates-as-school-says-he-cannot-come-back-to-class-after-going-home-for-medicine/

#15yrsago Hamster-powered strandbeest walker https://crabfuartworks.blogspot.com/2011/02/hamster-powered-walker.html

#15yrsago Daytripper: wrenching existential graphic novel https://memex.craphound.com/2011/02/08/daytripper-wrenching-existential-graphic-novel/

#15yrsago Pactuator: a mechanical, hand-cranked Pac-Man https://upnotnorth.net/projects/pac-machina/pactuator/

#15yrsago Floppy drive organ plays toccata www.youtube.com/watch?v=dmoDLyiQYKw

#15yrsago Mike Mignola talks setting and architecture https://www.bldgblog.com/2011/02/ruin-space-and-shadow-an-interview-with-mike-mignola/

#15yrsago BBC to delete 172 unarchived sites, geek saves them for $3.99 https://web.archive.org/web/20110210152012/https://bengoldacre.posterous.com/nerd-saves-entire-bbc-archive-for-399-you-can

#10yrsago Australia, the driest country on Earth, eliminates basic climate science research https://www.scientificamerican.com/article/australia-cuts-110-climate-scientist-jobs/

#10yrsago Copyright trolls who claimed to own “Happy Birthday” will pay $14M to their “customers” https://web.archive.org/web/20160210091717/http://consumerist.com/2016/02/09/happy-birthday-song-settlement-to-pay-out-14-million-to-people-who-paid-to-use-song/

#10yrsago Eviction epidemic: the racialized, weaponized homes of America’s cities https://www.newyorker.com/magazine/2016/02/08/forced-out

#10yrsago Association of German judges slams US-EU trade deal for its special corporate courts https://www.techdirt.com/2016/02/09/top-german-judges-tear-to-shreds-eus-proposed-tafta-ttip-investment-court-system/

#10yrsago A digital, 3D printed sundial whose precise holes cast a shadow displaying the current time https://www.mojoptix.com/fr/2015/10/12/ep-001-cadran-solaire-numerique/

#10yrsago Jughead is asexual https://www.themarysue.com/jughead-asexuality/

#10yrsago Vtech, having leaked 6.3m kids’ data, has a new EULA disclaiming responsibility for the next leak https://web.archive.org/web/20160210092704/https://motherboard.vice.com/read/hacked-toy-company-vtech-tos-now-says-its-not-liable-for-hacks

#10yrsago How America’s presidents started cashing out https://web.archive.org/web/20160208210036/https://theintercept.com/2016/02/08/taxpayers-give-big-pensions-to-ex-presidents-precisely-so-they-dont-have-to-sell-out/

#10yrsago Bill criminalizing anal and oral sex passes Michigan Senate https://www.thenewcivilrightsmovement.com/2016/02/michigan_senate_passes_bill_saying_sodomy_is_a_felony/

#10yrsago Hacker promises dump of data from 20K FBI and 9K DHS employees https://web.archive.org/web/20160208214013/https://motherboard.vice.com/read/hacker-plans-to-dump-alleged-details-of-20000-fbi-9000-dhs-employees

#10yrsago Blooks: functional objects disguised as books https://www.theguardian.com/books/2016/jan/30/blook-madness-inside-the-world-of-bogus-books

#10yrsago Indian regulator stands up for net neutrality, bans Facebook’s walled garden https://arstechnica.com/tech-policy/2016/02/facebooks-free-internet-app-banned-by-indias-new-net-neutrality-rule/

#10yrsago British spies want to be able to suck data out of US Internet giants https://www.washingtonpost.com/world/national-security/the-british-want-to-come-to-america–with-wiretap-orders-and-search-warrants/2016/02/04/b351ce9e-ca86-11e5-a7b2-5a2f824b02c9_story.html

#5yrsago Fleet Street calls out schtum Tories https://pluralistic.net/2021/02/09/permanent-record/#foia-uk

#5yrsago The ECB should forgive the debt it owes itself https://pluralistic.net/2021/02/09/permanent-record/#ecb

#5yrsago Favicons as undeletable tracking beacons https://pluralistic.net/2021/02/09/permanent-record/#supercookies

#5yrsago Snowden's young adult memoir https://pluralistic.net/2021/02/09/permanent-record/#ya-snowden


Upcoming appearances (permalink)

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



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

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026
  • "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, 2027

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



Colophon (permalink)

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 ( words today, total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

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

Pluralistic.net

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

https://pluralistic.net/plura-list

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

https://mamot.fr/@pluralistic

Medium (no ads, paywalled):

https://doctorow.medium.com/

Twitter (mass-scale, unrestricted, third-party surveillance and advertising):

https://twitter.com/doctorow

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

10:14

Process thinking [Seth's Blog]

Sure, you made it work this time, but will it work next time?

Can you teach the method to someone else?

Do you have a protocol for what to do when it doesn’t work?

How can someone else contribute to your process to make it better?

08:28

Home Azone [Penny Arcade]

New Comic: Home Azone

07:00

All laws are local [Cory Doctorow's craphound.com]

A pair of broken off statue legs, shod in Roman sandals, atop a cliff. Behind them, we see a futuristic city.

This week on my podcast, I read All laws are local a recent post from my Pluralistic.net blog, about the ephemerality of our seeming eternal verities.


In other words, things that seem eternal and innate to the human condition to you are apt to have been invented ten minutes before you started to notice the world around you and might seem utterly alien to your children. As Douglas Adams put it:

Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works. Anything that’s invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it. Anything invented after you’re thirty-five is against the natural order of things.

MP3

06:14

Girl Genius for Monday, February 09, 2026 [Girl Genius]

The Girl Genius comic for Monday, February 09, 2026 has been posted.

02:21

Patryk Cisek: Bitwarden Secrets Manager With Ansible [Planet Debian]

If you’d like to have a simple solution for managing all the secrets you’re using in your Ansible Playbooks, keep reading on. Bitwarden’s Secrets Manager provides an Ansible collection, which makes it very easy to use this particular Secrets Manager in Ansible Playbooks. I’ll show you how to set up a free Secrets Manager account in Bitwarden. Then I’ll walk you through the setup in an example Ansible Playbook.

YouTube Video version

I’ve also recorded a video version of this article. If you prefer a video, you can find it here.

01:56

Monsters of Ohio: Done! [Whatever]

And what is Monsters of Ohio? Why, it’s my 20th(!) novel.

What’s it about? Well, if the title is to be trusted, it’s about monsters! In Ohio!

How would I describe it? Two words: “Cozy Cronenberg.”

When can you have it? November this year.

I like it. I hope you’ll like it too.

More to come about this. Stay tuned.

— JS

01:42

00:00

Sunday, 08 February

22:28

Louis-Philippe Véronneau: Montreal Subway Foot Traffic Data, 2025 edition [Planet Debian]

Another year of data from Société de Transport de Montréal, Montreal's transit agency!

A few highlights this year:

  1. Although the Saint-Michel station closed for emergency repairs in November 2024, traffic never bounced back to its pre-closure levels and is still stuck somewhere around 2022 Q2 levels. I wonder if this could be caused by the roadwork on Jean-Talon for the new Blue Line stations making it harder for folks in Montreal-Nord to reach the station by bus.

  2. The effects of the opening of the Royalmount shopping center has had a durable impact on the traffic at the De la Savane station. I reported on this last year, but it seems this wasn't just a fad.

  3. With the completion of the Deux-Montagnes branch of the Réseau express métropolitain (REM, a light-rail, above the surface transit network still in construction), the transfer stations to the Montreal subway have seen major traffic increases. The Édouard-Montpetit station has nearly reached its previous all-time record of 2015 and the McGill station has recovered from the general slump all the other stations have had in 2025.

  4. The Assomption station, which used to have one of the lowest number of riders of the subway network, has had a tremendous growth in the past few years. This is mostly explained by the many high-rise projects that were built around the station since the end of the COVID-19 pandemic.

  5. Although still affected by a very high seasonality, the Jean-Drapeau station broke its previous record of 2019, a testament of the continued attraction power of the various summer festivals taking place on the Sainte-Hélène et Notre-Dame islands.

More generally, it seems the Montreal subway has had a pretty bad year. Traffic had been slowly climbing back since the COVID-19 pandemic, but this is the first year since 2020 such a sharp decline can be witnessed. Even major stations like Jean-Talon or Lionel-Groulx are on a downward trend and it is pretty worrisome.

As for causes, a few things come to mind. First of all, as the number of Montrealers commuting to work by bike continues to rise1, a modal shift from public transit to active mobility is to be expected. As local experts put it, this is not uncommon and has been seen in other cities before.

Another important factor that certainly turned people away from the subway this year has been the impacts of the continued housing crisis in Montreal. As more and more people get kicked out of their apartments, many have been seeking refuge in the subway stations to find shelter.

Sadly, this also brought a unprecedented wave of incivilities. As riders' sense of security sharply decreased, the STM eventually resorted to banning unhoused people from sheltering in the subway. This decision did bring back some peace to the network, but one can posit damage had already been done and many casual riders are still avoiding the subway for this reason.

Finally, the weekslong STM worker's strike in Q4 had an important impact on general traffic, as it severely reduced the opening hours of the subway. As for the previous item, once people find alternative ways to get around, it's always harder to bring them back.

Hopefully, my 2026 report will be a more cheerful one...

By clicking on a subway station, you'll be redirected to a graph of the station's foot traffic.

Licences


  1. Mostly thanks to major improvements to the cycling network and the BIXI bikesharing program. 

22:00

Link [Scripting News]

Heard an interview with Kamala Harris. She said they had 109 days to tell them who she is. Right there she highlighted the huge mistake the Dems make and continue to make. Ever since the advent of Twitter, campaigns have been every day of every year. The Dems have been AWOL. We never should have gotten to the summer of 2024 where people have no idea of who the freaking vice president is. When are they going to see how swept under the old ways of relating to voters are. The people are the government of the United States. Get behind us and let us work our magic.

21:49

The 6.19 kernel has been released [LWN.net]

Linus has released the 6.19 kernel. "No big surprises anywhere last week, so 6.19 is out as expected - just as the US prepares to come to a complete standstill later today watching the latest batch of televised commercials."

The most significant changes in 6.19 include initial support for Intel's linear address-space separation feature, support for Arm Memory system resource Partitioning And Monitoring, the listns() system call, a reworked restartable-sequences implementation, support for large block sizes in the ext4 filesystem, some networking changes for improved memory safety, the live update orchestrator, and much more. See the LWN merge-window summaries (part 1, part 2) and the KernelNewbies 6.19 page for details.

21:42

Why E cores make Apple silicon fast [OSnews]

If you use an Apple silicon Mac I’m sure you have been impressed by its performance. Whether you’re working with images, audio, video or building software, we’ve enjoyed a new turn of speed since the M1 on day 1. While most attribute this to their Performance cores, as it goes with the name, much is in truth the result of the unsung Efficiency cores, and how they keep background tasks where they should be.

↫ Howard Oakley

While both Intel and AMD are making gains on Apple, there’s simply no denying the reality that Apple’s M series of chips are leading the pack in mobile computing (the picture is different in desktops). There are probably hundreds of reasons why Apple has had this lead for so many years now, but the way macOS distributes background and foreground tasks across the two types of cores in M series chips is an important one.

Still, I wonder how the various other processors that use power and efficiency cores fare in this regard. You’d think they would provide a similar level of benefit, but I wouldn’t be surprised if the way Windows or Linux handles such cores and the distribution of tasks is simply not as optimised or strict as it is in macOS. Apple often vastly overstates the benefits of its “vertical integration”, but I think the tight coupling between macOS and Apple’s own processors is definitely a case where they’re being entirely truthful.

Adventures in Guix packaging [OSnews]

We talked about Nemin’s first impressions of the Guix System as someone coming from a Nix environment, but today they’ve got a follow-up article diving into the experience of creating new packages for Guix.

I spent about a week packaging WezTerm and learning the ropes of being a Guix contributor along the way.

During the packaging process I stumble many times, only to stand back up and figure out a solution. I also explain some of my complaints about the peculiarities of the process, but also provide plenty of praise about of how much the system tries to enable you to do your job. Finally, I also touch on how positive the experience of the code review was.

↫ Nemin’s blog

These are the kinds of content a rather niche system like Guix needs. Guix isn’t exactly one of the popular picks out there, so having level-headed, honest, but well-written introductions to its core concepts and user experience, written by a third party is going to do wonders for people interested in trying it out.

21:14

Link [Scripting News]

The tech press did their part in giving control of the public internet to the people who are selling us out.

If I ran Firefox [Scripting News]

if i ran firefox, this is what i would say wrt AI in firefox in 2026.

  • 1. ai is exciting!
  • 2. it's also in its infancy.
  • 3. we don't know yet how or if it connects to the web.
  • 4. the web is 100% our #1 priority.
  • 5. so we're going to wait.
  • 6. for now firefox is a no-ai browser.
  • 7. we won't include ai until we know why.
  • 8. and then it will be opt-in.
  • 9. and we will continue to make firefox the best web browser.

sincerely,

the developers of firefox

20:07

Colin Watson: Free software activity in January 2026 [Planet Debian]

About 80% of my Debian contributions this month were sponsored by Freexian, as well as one direct donation via GitHub Sponsors (thanks!). If you appreciate this sort of work and are at a company that uses Debian, have a look to see whether you can pay for any of Freexian‘s services; as well as the direct benefits, that revenue stream helps to keep Debian development sustainable for me and several other lovely people.

You can also support my work directly via Liberapay or GitHub Sponsors.

Python packaging

New upstream versions:

Fixes for Python 3.14:

Fixes for pytest 9:

Porting away from the deprecated pkg_resources:

Other build/test failures:

I investigated several more build failures and suggested removing the packages in question:

Other bugs:

Other bits and pieces

Alejandro Colomar reported that man(1) ignored the MANWIDTH environment variable in some circumstances. I investigated this and fixed it upstream.

I contributed an ubuntu-dev-tools patch to stop recommending sudo.

I added forky support to the images used in Salsa CI pipelines.

I began working on getting a release candidate of groff 1.24.0 into experimental, though haven’t finished that yet.

I worked on some lower-priority security updates for OpenSSH.

Code reviews

19:21

Dirk Eddelbuettel: chronometre: A new package (pair) demo for R and Python [Planet Debian]

Both R and Python make it reasonably easy to work with compiled extensions. But how to access objects in one environment from the other and share state or (non-trivial) objects remains trickier. Recently (and while r-forge was ‘resting’ so we opened GitHub Discussions) a question was asked concerning R and Python object pointer exchange.

This lead to a pretty decent discussion including arrow interchange demos (pretty ideal if dealing with data.frame-alike objects), but once the focus is on more ‘library-specific’ objects from a given (C or C++, say) library it is less clear what to do, or how involved it may get.

R has external pointers, and these make it feasible to instantiate the same object in Python. To demonstrate, I created a pair of (minimal) packages wrapping a lovely (small) class from the excellent spdlog library by Gabi Melman, and more specifically in an adapted-for-R version (to avoid some R CMD check nags) in my RcppSpdlog package. It is essentially a nicer/fancier C++ version of the tic() and tic() timing scheme. When an object is instantiated, it ‘starts the clock’ and when we accessing it later it prints the time elapsed in microsecond resolution. In Modern C++ this takes little more than keeping an internal chrono object.

Which makes for a nice, small, yet specific object to pass to Python. So the R side of the package pair instantiates such an object, and accesses its address. For different reasons, sending a ‘raw’ pointer across does not work so well, but a string with the address printed works fabulously (and is a paradigm used around other packages so we did not invent this). Over on the Python side of the package pair, we then take this string representation and pass it to a little bit of pybind11 code to instantiate a new object. This can of course also expose functionality such as the ‘show time elapsed’ feature, either formatted or just numerically, of interest here.

And that is all that there is! Now this can be done from R as well thanks to reticulate as the demo() (also shown on the package README.md) shows:

> library(chronometre)
> demo("chronometre", ask=FALSE)


        demo(chronometre)
        ---- ~~~~~~~~~~~

> #!/usr/bin/env r
> 
> stopifnot("Demo requires 'reticulate'" = requireNamespace("reticulate", quietly=TRUE))

> stopifnot("Demo requires 'RcppSpdlog'" = requireNamespace("RcppSpdlog", quietly=TRUE))

> stopifnot("Demo requires 'xptr'" = requireNamespace("xptr", quietly=TRUE))

> library(reticulate)

> ## reticulate and Python in general these days really want a venv so we will use one,
> ## the default value is a location used locally; if needed create one
> ## check for existing virtualenv to use, or else set one up
> venvdir <- Sys.getenv("CHRONOMETRE_VENV", "/opt/venv/chronometre")

> if (dir.exists(venvdir)) {
+ >     use_virtualenv(venvdir, required = TRUE)
+ > } else {
+ >     ## create a virtual environment, but make it temporary
+ >     Sys.setenv(RETICULATE_VIRTUALENV_ROOT=tempdir())
+ >     virtualenv_create("r-reticulate-env")
+ >     virtualenv_install("r-reticulate-env", packages = c("chronometre"))
+ >     use_virtualenv("r-reticulate-env", required = TRUE)
+ > }


> sw <- RcppSpdlog::get_stopwatch()                   # we use a C++ struct as example

> Sys.sleep(0.5)                                      # imagine doing some code here

> print(sw)                                           # stopwatch shows elapsed time
0.501220 

> xptr::is_xptr(sw)                                   # this is an external pointer in R
[1] TRUE

> xptr::xptr_address(sw)                              # get address, format is "0x...."
[1] "0x58adb5918510"

> sw2 <- xptr::new_xptr(xptr::xptr_address(sw))       # cloned (!!) but unclassed

> attr(sw2, "class") <- c("stopwatch", "externalptr") # class it .. and then use it!

> print(sw2)                                          # `xptr` allows us close and use
0.501597 

> sw3 <- ch$Stopwatch(  xptr::xptr_address(sw) )      # new Python object via string ctor

> print(sw3$elapsed())                                # shows output via Python I/O
datetime.timedelta(microseconds=502013)

> cat(sw3$count(), "\n")                              # shows double
0.502657 

> print(sw)                                           # object still works in R
0.502721 
> 

The same object, instantiated in R is used in Python and thereafter again in R. While this object here is minimal in features, the concept of passing a pointer is universal. We could use it for any interesting object that R can access and Python too can instantiate. Obviously, there be dragons as we pass pointers so one may want to ascertain that headers from corresponding compatible versions are used etc but principle is unaffected and should just work.

Both parts of this pair of packages are now at the corresponding repositories: PyPI and CRAN. As I commonly do here on package (change) announcements, I include the (minimal so far) set of high-level changes for the R package.

Changes in version 0.0.2 (2026-02-05)

  • Removed replaced unconditional virtualenv use in demo given preceding conditional block

  • Updated README.md with badges and an updated demo

Changes in version 0.0.1 (2026-01-25)

  • Initial version and CRAN upload

Questions, suggestions, bug reports, … are welcome at either the (now awoken from the R-Forge slumber) Rcpp mailing list or the newer Rcpp Discussions.

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.

18:35

Vincent Bernat: Fragments of an adolescent web [Planet Debian]

I have unearthed a few old articles typed during my adolescence, between 1996 and 1998. Unremarkable at the time, these pages now compose, three decades later, the chronicle of a vanished era.1

The word “blog” does not exist yet. Wikipedia remains to come. Google has not been born. AltaVista reigns over searches, while already struggling to embrace the nascent immensity of the web2. To meet someone, you had to agree in advance and prepare your route on paper maps. 🗺️

The web is taking off. The CSS specification has just emerged, HTML tables still serve for page layout. Cookies and advertising banners are making their appearance. Pages are adorned with music and videos, forcing browsers to arm themselves with plugins. Netscape Navigator sits on 86% of the territory, but Windows 95 now bundles Internet Explorer to quickly catch up. Facing this offensive, Netscape opensource its browser.

France falls behind. Outside universities, Internet access remains expensive and laborious. Minitel still reigns, offering phone directory, train tickets, remote shopping. This was not yet possible with the Internet: buying a CD online was a pipe dream. Encryption suffers from inappropriate regulation: the DES algorithm is capped at 40 bits and cracked in a few seconds.

These pages bear the trace of the web’s adolescence. Thirty years have passed. The same battles continue: data selling, advertising, monopolies.


  1. Most articles linked here are not translated from French to English. ↩︎

  2. I recently noticed that Google no longer fully indexes my blog. For example, it is no longer possible to find the article on lanĉo. I assume this is a consequence of the explosion of AI-generated content or a change in priorities for Google. ↩︎

15:56

Conspiracy theories [RevK®'s ramblings]

Someone just asked me...

"can anyone name a conspiracy theory that has not come true?"

Well...

Santa Claus.

I mean seriously, it is THE conspiracy theory - millions of people all working together to perpetrate it at every level - parents, relatives, companies, film makers, even US Defence Santa tracker. It is a massive, huge, co-ordinated, conspiracy way beyond what flat Earther’s could imagine. It really is...

It is almost as bad as most religions

Easter bunny and tooth fairy do not get close.

So... My kids, and even more so my grandkids... Santa has been sold as make believe, fun, let's play a game.

Never sold as reality, always a "pretend" and "fun".

I feel massively happier about that approach than selling as "real" until you get older.

It also causes issues with trust, I think.

If there can be a massive conspiracy, as there really is, of "Santa Claus", what, and whom, can you trust. 

And religion is another one - sell as "some people have these ideas and it reassures them, but think for yourself", and "there are some things nobody knows for sure, and you can consider". Religion can be a comfort for many. I am happy with that as a "comfort", sort of. 

We can always have "fun" and "fantasy". Indeed, it should be encouraged, but as such.

But, I really understand why some people come to religion.

I have really not.

I had a proper CoE background (school and parents), but quickly worked out Pascal's wager, and then realised that only worked with one specific "God or not" and so not a thing. No way to do with many Gods.

I understand people find comfort in such things, and why they want to feel comfort in such things.

I prefer to feel my own morality and my own judgement or my own actions, than something divine over me. I am responsible for what I do.

15:49

Link [Scripting News]

Most attempts of humor in replies to twitter-like posts are of the "you had to be there" variety, as in it might have made sense when you typed it, but I don't get it. And it's even worse, I am irony-deprived, I often don't get jokes, something about how my mind works. But today I actually got a reply on Bluesky that's worth passing on. I posted a picture of a dialog box with one of my snarky slogans. Dan Berlyoung thought the dialog was interesting. "I kinda love that this is in a dialog box. One has to wonder what action on a computer would elicit this response." Man that's a great question. And that btw is what art is about. You put something in a dialog because that's the way it was presented by the software. I could have selected the text and put that into the tweet. But nahh, this is more interesting. And to answer the question Dan asks, in this specific case, the action that elicited this response was that I chose a placeholder command from a context menu in a piece of software that's a construction site, in other words it could have been any of the dozens of snarky slogans. Kind of reminds me of a piece I wrote a long time ago where bees who were about to die reflect on the meaning of existence. Turns out it meant a lot less than one might think.

14:21

Link [Scripting News]

Highly recommend the HBO two-part interview with and profile of Mel Brooks who was 99 years old when the interviews were done. Includes quotes from lots of famous comedians. And the philosophy of comedy as art. So many things to say. Why is physical humor the funniest? And the funniest of all the excerpts was the farting scene in Blazing Saddles. Humans are so damned simple.

13:56

Thorsten Alteholz: My Debian Activities in January 2026 [Planet Debian]

Debian LTS/ELTS

This was my hundred-thirty-ninth month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian (as the LTS- and ELTS-teams have been merged now, there is only one paragraph left for both activities).

During my allocated time I uploaded or worked on:

  • [DLA 4449-1] zvbi security update to fix five CVEs related to uninitialized pointers and integer overflows.
  • [DLA 4450-1] taglib security update to fix one CVE related to a segmentation violation.
  • [DLA 4451-1] shapelib security update to fix one CVE related to a double free.
  • [DLA 4454-1] libuev security update to fix one CVE related to a buffer overrun.
  • [ELA-1620-1] zvbi security update to fix five CVEs in Buster and Stretch related to uninitialized pointers and integer overflows.
  • [ELA-1621-1] taglib security update to fix one CVE in Buster and Stretch related to a segmentation violation.
  • [#1126167] bookworm-pu bug for zvbi to fix five CVEs in Bookworm.
  • [#1126273] bookworm-pu bug for taglib to fix one CVE in Bookworm.
  • [#1126370] bookworm-pu bug for libuev to fix one CVE in Bookworm.

I also attended the monthly LTS/ELTS meeting. While working on updates, I stumbled upon packages, whose CVEs have been postponed for a long time and their CVSS score was rather high. I wonder whether one should pay more attention to postponed issues, otherwise one could have already marked them as ignored.

Debian Printing

Unfortunately I didn’t found any time to work on this topic.

Debian Lomiri

This month I worked on unifying packaging on Debian and Ubuntu. This makes it easier to work on those packages independent of the used platform.

This work is generously funded by Fre(i)e Software GmbH!

Debian Astro

This month I uploaded a new upstream version or a bugfix version of:

Debian IoT

Unfortunately I didn’t found any time to work on this topic.

Debian Mobcom

Unfortunately I didn’t found any time to work on this topic.

misc

This month I uploaded a new upstream version or a bugfix version of:

Unfortunately this month I was distracted from my normal Debian work by other unpleasant things, so that the paragraphs above are mostly empty. I now have to think about how many of my spare time I am able to dedicate to Debian in the future.

10:14

Free agency [Seth's Blog]

Unrestricted free choice is a myth.

There are always boundaries and trade-offs.

But being fully stuck is also a myth. We might not like the trade offs, but we also have a choice.

Since we always live in between, the work isn’t waiting until we have free agency. The work is deciding and acting when we think that we don’t.

03:00

Link [Scripting News]

BTW, this is what Scripting News in WordPress looks like. I really like it. Just writing. And a modern 2020s blogroll. Room to add more features without too much clutter. The beginning of an upgraded web?

Link [Scripting News]

My favorite recent snarky slogan. "Just because you're offended doesn't mean you're right." I know so many people who should take that to heart. Acting on being offended is no longer a luxury you can afford. Find ways to work with others, everything depends on it.

Saturday, 07 February

22:28

The reboot that news needs [Scripting News]

I want news to work.

I would love to see a standard model for community news orgs, starting with the city of Washington DC, with some of the reporters who were recently laid off.

But the community would be very much a part of this. No more news without community involvement. Let's make it community published. How does that sound?

And bloggers would be part of the story flow, we're amateurs so we work for free, and we take an oath. We bring other expertise. We can tell you when the tech companies are lying, for example. Professionals can still do both-sides news. Bloggers will follow all the integrity requirements of journalists, but then so will the journalists (let's not pretend all journalists even try to play by the rules, btw).

There will be no paywall, instead there's a toll system, like the EZ-Pass we have on roads in the US. How how we pay to ride the subway. We pay per article read. A user can buy a subscription, if they think it would be a better value than paying per article. No more paywalls that say "if you want to read this article you have to subscribe." That would be an essential part of the deal for readers.

No ads. Let's get rid of them. They suck. Now there's incentive to put the punchline near the end. Tell the story and sign off.

The readers can buy shares in the news org, with maybe very little hope of getting a return in dollars, rather in a more functional community.

The veterans from the Washington Post could have the most exciting job in news in generations -- finally making the news work for the people they serve. And no more oligarchs pulling the strings. As readers we know you're often full of it because of who owns you. We're not that stupid. ;-)

And I am sure the independent developers of the web would love to write editorial and publishing software for the new enterprise. We won't charge for it. And we won't lock you in and we will support standards everywhere so all software is replaceable. You can check my references on this, I think this ethos for technology is as central as the Hippocratic Oath in medicine.

I want news to work.

21:35

The chaos in the US is affecting open source software and its developers [OSnews]

It was only a matter of time before the illegal, erratic, inhumane, and cruel behaviours and policies of the second Trump regime were going to affect the open source world in a possibly very visible way. Christian Hergert, longtime GNOME and Linux contributor, employed by Red Hat, wanted to leave the US with his family and move to Europe, but requests to remain employed by Red Hat were denied. As such, he decided to end his employment at Red Hat and push on with the move. However, without employment, his work on open source software is going to suffer.

While at their in-person visa appointment in Seattle, US border patrol goons shot two people in their hometown of Portland, underlining the urgency with which people might want to consider getting out of the US, even if it means losing employment. Regardless, the end result is that quite a bit of user-facing software that millions of people use every day is going to be affected.

This move also means a professional shift. For many years, I’ve dedicated a substantial portion of my time to maintaining and developing key components across the GNOME platform and its surrounding ecosystem. These projects are widely used, including in major Linux distributions and enterprise environments, and they depend on steady, ongoing care.

For many years, I’ve been putting in more than forty hours each week maintaining and advancing this stack. That level of unpaid or ad-hoc effort isn’t something I can sustain, and my direct involvement going forward will be very limited. Given how widely this software is used in commercial and enterprise environments, long-term stewardship really needs to be backed by funded, dedicated work rather than spare-time contributions.

↫ Christian Hergert

The list of projects for which Hergert is effectively the sole maintainer is long, and if you’re a Linux user, odds are you’re using at least some of them: GNOME’s text editor, GNOME’s terminal, GNOME’s flagship IDE Builder, and tons of lower-level widely-used frameworks and libraries like GtkSourceView, libspelling, libpeas, and countless others. While new maintainers will definitely be found for at least some of these, the disruption will be real and will be felt beyond these projects alone. There’s also the possibility that Hergert won’t be the only prolific open source contributor seeking to leave the US and thus reducing their contributions, especially if a company like Red Hat makes it a policy not to help its employees trying to flee whatever mess the US is in.

Stories like these illustrate so well why the “no politics!” crowd is so utterly misguided. Politics governs every aspect of our lives, especially so if you’re part of a minority group currently being targeted by the largest and most powerful state apparatus in the world, and pretending to be all three wise monkeys at once is not going to make any of that go away. Even if you’re not directly targeted because you’re not transgender, you’re not brown, you’re not an immigrant, or not whatever else they fancy targeting today, the growing tendrils of even an incompetent totalitarian regime will eventually find you and harm you.

More so than any other type of software, open source software is made by real humans, and as these totalitarian tendrils keep growing, more and more of these real humans will be affected, no matter how incompetent these tendrils might be. You can’t run away and hide from that reality, even if it makes you uncomfortable.

18:14

Trying Out A New Recipe: Nadia’s Healthy Kitchen “Healthy Brownie Batter Bark” [Whatever]

Though I’ve followed Nadia’s Healthy Kitchen on Instagram for years, I’m not entirely certain I’ve ever actually made anything from her before. I am not vegan, gluten-free, or overly worried about sugar being in my baked goods, so I’m not entirely sure why I wanted to make these “healthy,” vegan, gluten-free, no-bake peanut butter and chocolate brownie batter bark bars, but I did! And now I’m here to tell you how difficult they were to make, and if they’re any good.

To start things off, let’s look at the video she posted that I saw:



View this post on Instagram

You know, that didn’t look too hard! Here’s the recipe so you can follow along while we take a look at the ingredients list.

Despite having King Arthur’s measure-for-measure gluten-free flour in my pantry, this recipe did not call for 1-to-1 gluten-free flour, and instead calls for oat flour and ground almonds.

Now, you might notice a typo in the recipe in the measurements section. Nadia mentions ground almonds four times in the post leading up to the written recipe, and once in the instructions portion of the recipe, but makes the mistake of typing “ground oats” right below “oat flour” in the measurements. One of the comments on her recipe actually points this out, as well.

Moving on, I did not have oat flour or ground almonds, but I did have the cocoa powder, maple syrup, peanut butter, coconut oil, dark chocolate, and, of course, salt. So there I found myself in Kroger’s baking aisle buying Bob’s Red Mill’s Gluten-Free Oat Flour which is different than their Whole-Grain Oat Flour which is not gluten-free, and their Super-Fine Almond Flour (not their Natural Almond Flour, but that one is also gluten-free). I know the recipe says ground almonds, but I figured since the almond flour is basically just really finely ground almonds it’d be like the same thing, right?

Thankfully, this recipe is measured by weight, so this ended up being a very easy, one bowl recipe in which I just dumped all the ingredients in and measured by weight the entire time (except the 2 tbsp of coconut oil and 2 tbsp of peanut butter that are separate for the ganache). You literally just weigh it out and mix it all together, easy peasy!

After mixing the “dough” together (I don’t know if it’s technically considered a dough. What are the qualifications of a dough?), you just roll it out into a thin rectangle and pour the melted chocolate and peanut butter over top, then freeze it just long enough to solidify it enough to cut into bars.

I was genuinely surprised how quick and easy this recipe was, and it’s honestly not very many ingredients. Obviously the oat flour is something that not everyone just has on hand, but if you are gluten-free then maybe that’s more of a common household ingredient for you and this would actually be super convenient for you to whip up.

Okay, so it wasn’t hard and didn’t take very long, but it did it actually taste good? Well, honestly, I quite liked it! I wouldn’t be so bold as to claim that it tastes exactly like a fresh-baked, full-sugar, non-vegan brownie, but it definitely is rich and chocolatey, with some nice flavor from the peanut butter and a melt-in-your-mouth texture. One thing I really like about them is that it can feel like gluten-free treats are always super dry and crumbly, but these are pretty fudgy and not like crumbly sand.

Honestly they look just like they do in the video, and I’m happy I gave them a whirl. I wouldn’t say they’re life-changing, but if you have a gluten-free person in your life you want to whip up a treat for, these might be a really good option.

Final note, the chocolate ganache gets pretty melty at room temp, so I recommend keeping these bad boys in a container in the fridge.

Do you like using measure-for-measure gluten-free flour for your GF recipes, or do you prefer recipes that have flour alternatives like this one? Do you like the addition of the peanut butter, or do you wish this recipe were also nut-free (then I guess the almonds would be out, too)? Let me know in the comments, and have a great day!

-AMS

16:28

Link [Scripting News]

Doc has a idea how to stop teams from tanking. Get rid of the lottery. He's right of course. Think of the futility of tanking in the NBA when last year the #1 pick went to the Dallas Mavericks, who were not a lottery team with only a 1.8% chance of getting the first pick. They got a player who looks to be a great star but you can't always tell if a #1 pick will turn out to be a star, sometimes they do, but often not.

15:42

Link [Scripting News]

An increasingly high percentage of the videos on FB are fake. Some are entertaining, some are boobs (an amazing number) and some are pretty freaking dangerous, to the extent people believe they're real.

15:00

Greatest inventions and products [Scripting News]

Om Malik says the internet is the greatest invention of his life, and since we're roughly the same age, that would be my life's greatest invention too. I think it would be if it weren't such a tragic invention, one whose growth was cut off by the very thing he quotes John Doerr saying, it could be harnessed to make huge amounts of money.

  • Back in 1999, Kleiner Perkins’ John Doerr commented: “Believe it or not, the Internet is actually underhyped.” He called it “the largest legal creation of wealth in the history of the planet.” He was so on the money. Twenty-five years later, 10 out of the world’s 12 trillion-dollar companies are internet or internet-related companies.

Doerr would, of course, look at it in terms of money, because money is his business. But because of that, we ended up crashing our political system and haven't gotten past that yet.

If we had kept the one thing about the internet that made it different, we could be far ahead of where we are now, and perhaps would have arrived at a different form of network that didn't favor the kind of people it favors.

Three things that made the internet special:

  1. Every part is replaceable.
  2. You can use each part to make something new.
  3. Each part is as small as it can be.

BTW, I know Doerr. He was the backer of Symantec, the company that bought my company in 1987, then took it public a few years later and thus made it possible for me to make software for the rest of my life. He's a really nice guy. I've only met a handful of people in my travels that had mastered something important so well but managed to still care about people. ;-)

So if the internet is not the greatest invention, what is? I haven't spent much time thinking about this, but my initial choice is AI. Because it's so hugely powerful and yet almost entirely undefined. Uncharted territory, which is all human knowledge. It might be the invention whose product is invention. Whatever it is I'm sure the things it does now will be seen as we see the first moving pictures. A demo of the greatness to come.

What about products? A single act of creativity that made a huge difference. I might suggest Unix is the greatest product of our lifetimes (not invention). Or perhaps Visicalc. People would likely say the iPhone, but I still want something in that form factor that I can write software for and share with others without having to go through a company like Apple. So in that sense the iPhone might have been a negative invention, it cut off possibilities for an amateur development community to develop, as it did on the Apple II, Mac, PC, etc.

PS: If you had asked me in 1999 is the internet the greatest invention, I would have been as enthusiastic as Doerr. There was nothing but blue sky then. Everything was possible, and we were going to do it all!

14:14

Link [Scripting News]

Observed programming behavior. After getting something complicated working, you figure it's all downhill from there, only to realize there's another big hill you have to climb -- you know -- the thing that looked so easy.

10:49

Vessel size [Seth's Blog]

“May your cup runneth over…”

This begs the question: how big a cup?

The logistics of vessel size determine how much money we need to raise, how big a team we need, how many customers are necessary to break even. When we’re on the hook to fill an Airbus transatlantic flight with passengers, the business is fundamentally different from a small commuter airline in Rhode Island.

And it’s not simply the financial and organizational mechanics that matter.

We can’t help but compare.

Is a million dollar sale a big deal? Not if your organization was counting on something ten times as big.

It turns out that the absolute size of our cup isn’t nearly as important as getting the relative inputs and outputs in sync.

10:42

Commission trials European open source communications software: Matrix [OSnews]

“As part of our efforts to use more sovereign digital solutions, the European Commission is preparing an internal communication solution based on the Matrix protocol,” the spokesperson told Euractiv.

Matrix is an open source, community-developed messaging protocol shepherded by a non-profit that’s headquartered in London. It’s already widely used for public messengers across Europe, with the French government, German healthcare providers and European armed forces all using tools built on the protocol.

↫ Maximilian Henning at Euractiv

Right now, most government agencies and institutions in Europe are effectively entirely reliant on Microsoft for their digital infrastructure, and that’s not a tenable situation going forward with the Americans being openly hostile towards Europe, up to and including threatening to invade European countries. Europe needs its own digital infrastructure, and opting to build those around open source tools is the obvious way to go.

Of course, this isn’t an easy process, but two platitudes apply here: Rome wasn’t built in a day, and every journey begins with a first step. By opting to use existing open source tools, though, these efforts will have a massive head start, and will hopefully lead to a flurry of increased activity for the open source projects in question. In this particular case it’s Matrix, which can surely need some additional work and eyeballs, if my use of the protocol is any indication.

“I now assume that all ads on Apple News are scams” [OSnews]

What does it look like when a hardware and software company descends into an obsession with recurring services revenue to please its shareholders? Look no further than Apple, who has turned its Apple News service into a vehicle for scam ads.

These fake “going out of business ads” have been around for a few years, and even the US Better Business Bureau warns about them, as they take peoples’ money then shut down. Does Apple care? Does Taboola care? Does Apple care that Taboola serves ads like this? My guess: no, no, and no.

↫ Kirk McElhearn

While serving obvious scams to users is already bad enough, the real kicker is that even if you are a paying user of Apple News, you still get served ads, including the scams. Of course, massive corporations like Apple are free too just scam you, since they’re effectively immune from any legal consequences, so it’s unlikely the scamming will stop as long as it makes line go up.

On an entirely unrelated note, OSNews is entirely free of ads, so there’s no scams here. OSNews is fully funded by our readers through single donations on Ko-Fi or by becoming a Patreon.

10:35

The Goblin Emperor [Judith Proctor's Journal]

 I've read this twice now, and it's very likely I'll read it again.  I also suspect it may hit five stars on the third read.

 
It's a complex book and the names and titles take a lot of getting used to - but, they do contribute to the story and its politics.
 
It's a story of a young man, brought up in virtual isolation, pitched unexpectedly into becoming Emperor when his father and all his older brothers die in an airship accident.  Landing in the middle of complex court life, competing political factions, and surrounded by strangers, he struggles to understand what is going on, and learn how he can survive.
 
It has many characters, but they are well-drawn and all have their own motivations and loyalties.


comment count unavailable comments

09:56

i think i leveled up [WIL WHEATON dot NET]

I turned in a story on Friday. It was over a year late. It needed eyes that aren’t mine, it needed another pass from me, it needed a polish. So it isn’t done done, but it’s close enough to done that I feel safe writing about what may turn out to be one of the most important things I’ve written in my creative and professional journey as a writer, maybe a close second to Still Just A Geek.

I worked on this story for about eighteen months, even though I “only” spent about 12 hours actually writing it. It was a year late, even though it “only” took me three days to write the draft that I turned in. I have never worked harder or longer with fewer words to show for it at the end. But they are good words. I am so glad that I did this, that I put this at the top of my queue and left it there, even when I felt like I couldn’t put two words together, because when I accepted it, I made a promise to myself that I would do the thing,1 and it was really important to me that I didn’t break that promise, even if it meant that the queue did not move at all, for a year.

I was so excited to do this when I accepted the invitation in late 2023 or early 2024. But the election broke me, and 2025 went from being a year I expected to be all about making not just this thing, but lots of things, to a year that forced me to turn off my engines, divert all power from all non-essential systems to life and mental health support, and run silent until further notice.2

Nearly every day in June and July, I woke up with my body completely dysregulated. It was its own alarm: the terror, the shaking, the nausea and sweating … all of that stuff I became an alcoholic to avoid before I went to sleep at night was now happening to me, ten years sober from alcohol, every fucking morning. And this was even worse than the other thing. Day after day, exhaustion and discomfort helped push my anxiety to record levels, worse than it had been in years. I felt like the ulcer my mom didn’t believe I had when I was a teenager was coming back. I was distracted all the time, constantly crashing into doorways and furniture, forgetting why I walked into every room. More than once, for days at a time, I felt like I didn’t even know myself.

I mean, it was a lot. And I say that as someone who has survived and healed from a lot, you dig me?

The dysregulation was a symptom, I knew that; but why it showed up when it did took a lot of work to uncover, probably because the cause turned out to be a lot of different things3 that ultimately revealed themselves to be a individual parts of a few things that I could look at and work on using EMDR therapy4.

EMDR therapy works so well for me, it is advanced technology that is indistinguishable from magic. But that magic isn’t a spell that cures everything and turns me into someone I’m never going to be. But it helps so much, and it heals so much, I literally feel pain and trauma leave my body5 and then over the next few days, I notice that space to enjoy the good things opens up. For months, now, I have been experiencing moments similar to the first time I heard the birds, as I notice that something which had been hurting for so long, I had gotten used to it, like the smell when you live next to the dump, was gone. And, just like I did then, I marveled that I was able to exist at all with the trauma taking up all that space.

The thing about my healing and recovery is that I can work my way through the level, get to one of those hideous Baron-Harknonen-meets-human-Bender-meets-a-gibbering-mass-of-eyeballs-and-teeth boss monsters, defeat it, and celebrate as I head to the next level … but there’s always another monster waiting behind some currently unopened door that I will have to eventually go through. So I celebrate the wins, but cautiously.

For the last year or so, in the exuberant haze of post-slaying celebration, I would sit at my desk, confident that The Thing was now going to begin filling the empty document. Most of the time, it was a frustrating, demoralizing experience as I dragged words, kicking and screaming, from my mind onto the page. At the end of those days, I’d curse myself and throw it all away. Once or twice, I enjoyed what I wrote, but when I went back to add to it, I realized there was a nice scene or two there, but nothing I could build into a story. Nothing I wrote made my heart sing. I never felt connected to what I had written. Maybe I’d put together one or two or even three nice scenes, but the reason I wanted to write it, the story I wanted to tell, I didn’t know what that was, because I was too distracted, too tired, too … broken.

I. Just. Could. Not. Do. It.

I’m gonna yadda yadda over a lot, because I want to hurry up and get to the fireworks factory. Maybe I’ll come back to it in the future. For now I will say I found myself in the middle of an empty ocean, floundering in the worst storm I’ve ever seen. I had all these instruments telling me how to get out of it, but I couldn’t adjust the sails to use them. I got frustrated, I got mad, I started to get depressed.

Yadda yadda, one day, as I was thrown wildly around by the violence of towering waves, it was like my body, or my Higher Self, or whomever is writing my life took pity on (or ran out of patience with) me and decided to do something about it. One day in late Autumn, it broke the glass and smashed a big red button which delivered this message: You will not be able to make good art, the one thing you want to do more than anything else for the rest of your life, until you slow down and let the healing take as long as it takes. We mean, really commit and do it. Yes, when it is hard. Yes, when it feels like you’re running in place on a patch of ice and if you fall it’s really going to hurt. Yes, when you are afraid. Yes when you are overwhelmed. Yes, yes, yes, you can do this. You must do this.

I heard that, paused, and I listened to what came after. I showed up and did the work. I started to slow down, but the way an overloaded cargo ship slows down over, starting several days out of port before it can think about actually slowing down again to dock without exploding like a Ford Pinto6

That brings us to sometime in January. I had been out of the storm and on dry land for a little bit, but I could still feel the motion of that storm, emotional landsickness from a body that didn’t realize the motion was a memory,7 but I also felt weirdly aware of how on solid ground I was, and that the discomfort was literally in my head. So I went for some walks, and as the landsickness calmed, all the years of reading books I didn’t feel had helped me at the time, books about storytelling, story structure, character development, writing process, books I read in an effort to get myself from a guy who writes things to a guy who is a writer, all came together at once, and before I realized it was happening, I think I got there. I think I am there, right now. Holy shit.

I have always known that I was mostly faking it, when it came to writing stories. I always felt like I had always had some grasp of the skills, but very little understanding of how to use them. I know that I’m reasonably competent and occasionally even good as a blogger who writes stories about his own life. I know that I can effectively recreate the emotional sense of a place and put you there. That’s not nothing! I’m proud of it and I love doing it! But when I tried to take that particular set of skills and translate them into writing stories of my own that actually say something through characters who grow and change in a story that evolves as I tell it rather than remember it, I couldn’t do it. I didn’t understand something fundamental about the discipline, and I didn’t even know where to look to find it. I think maybe it isn’t one single thing, and maybe it isn’t something that is meant to be easy or even logical in its discovery. At least, not for me. And I’m not even sure I’ve completely put it all together, just that I’ve figured out enough of it to finally get the key to turn in a door I’ve clawed grooves into, trying to brute force my way through it.

I started from the very beginning: What story do I want to tell, and why? A couple days of long, quiet walks later, I knew. It was simple and clear: I want to tell a dark fantasy story about a man who’s been running away from himself for so long, he doesn’t realize that he’s been caught, until it is too late. I want to examine where his greed comes from and why.

Where will I set it? Who is the guy? What happens after we meet him? Is there a twist? What is it? Who wins at the end? I allowed myself to write hundreds of words that didn’t work, knowing that they were getting me to the next hundred words that did, confident that I would be able to clean them up later8.

I had such a great time. I felt creative. I felt clever. I felt productive. I felt like I knew what I was doing! I wanted to reach out and tell my friend this was happening, but after blowing so many deadlines, I didn’t want to say anything unless and until it was done.

While I was busy not texting my friend, my friend texted me. They told me no pressure or expectation, they know what I’m dealing with, but there was a week left if I still wanted to turn in the thing. I replied that I would do my best, and mentioned that I’d been working on it, but didn’t go into the rest. I really wanted to stay on target, use The Force, blow this thing and go home.

Late in the day last Thursday, I finished the draft. I looked at it again Friday morning, was happy to discover that it held up, and turned it in with a note that said I thought this was about 90% done, but I needed fresh eyes to look at it, for those things I inevitably miss, or things that are left over from a previous draft that I didn’t notice were still there.

And I waited.

Yesterday, my friend texted me that he loved my story. Shortly after, the editor replied that he had no notes and was ready to publish it as-is. I asked if I could have a day to do a polish and just look it over one last time.

After my coffee and Marlowe’s walk this morning, I opened up my current draft and began reading it aloud. I made cosmetic tweaks here and there, tried out something in a scene that didn’t work so I deleted it all, and was sincerely shocked at how finished it actually was. It was more like 98% there, not 85% like I thought just 24 hours prior. I realized that I was having fun reading it, like it was something I hadn’t written, but was enjoying on its own merits.

That was wild, man.

So, after about 18 months, I “only” spent about twelve hours over “only” about four days working on the thing, but I think I spent roughly 540 days with this story, while it taught me how to be a writer.

What do you mean, Wil? I’ve been reading your blog for 20 years. Of course you’re a writer. Yes, I’ve written lots of things in 20ish years, but I always felt like I was mostly faking it. I could stack story blocks on top of each other, but if the stack got too tall, it always fell over. And even if I was in love with it before it fell, I didn’t know how to put those blocks back in order because I didn’t know why they went in that order, just that they fit together well, mostly by accident.

Something is different, now, and some other ideas that have been sitting on shelves in my creative mind, gathering dust, have begun to call out to me for the first time in years. Two things that I really loved developing but never finished are probably going to be combined into one thing, and I think I may even have a chance at pitching the result to a publisher.

I didn’t notice until today, editing this post, how much my growth as a trauma survivor and my growth as a writer have in common, even though I’ve always known they were linked together in ways I was aware of and ways I was not. It is not lost on me, at all, and it is not even a little coincidence, that I ended up writing a story about someone someone who knows he has trauma to heal, pain to reconcile, but unlike me, he choose to run away from it instead of doing the work. Of course, it’s also just a nice dark fantasy story with a little horror around the edges, too.

None of this was easy, but I believe that nothing truly worth doing ever is. There were times when I felt lost, and afraid, times when I gave up. My god, I gave up half a dozen times. But I got lucky, and the project moved slowly enough for me to catch up.

Now, I have to rest for a minute, but when I’m done, I’m going back to work. I have these stories I want to tell, and I think I actually know how to tell them.

Thanks for reading. I’m glad you’re here. If you’d like to get my posts in your email, here’s the thingy:

  1. Hell, I was excited to do the thing. I had a ton of ideas to choose from, and any one of them would be such a thing! ↩
  2. That work is ongoing. I’m going to be on a recovery and healing journey for the rest of my life, with its own storms and calm seas. At the moment, I feel like I have just emerged from one of the must brutal storms I have gone through in a long while to find myself on pretty calm water, so maybe we can think of this as putting into my logbook what it was like to weather that storm, so I’m better prepared for the next one. ↩
  3. I almost called them “little” but there are no “little” traumas and I have to remind myself not to minimize my experience, so I’m going to remind you, also. ↩
  4. EMDR is science that, for me, is indistinguishable from magic. ↩
  5. I know, that’s weird, especially from Captain Skeptic here, but it’s happened enough that I have to accept it, now. ↩
  6. I’m auditioning phrases to use when I want to say “slowly and then all at once”. This one probably isn’t getting called back. ↩
  7. Stares at camera in Trauma Survivor ↩
  8. This is significant for me. I spent so much of my life (and still do, contra best efforts) just terrified that everything I tried to do had to be perfect on the first try, or else my dad would be right about me. It’s damn close to impossible to be creative when I feel that way, and even harder to make myself keep going with “good enough” or even “bad but something”. I’ve worked so hard to stop judging myself, I’m giving myself a footnoted gold star for actually getting there. ↩

08:21

Pluralistic: End of the line for video essays (07 Feb 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



An image of a static-filled TV; centered in it is a distorted Youtube logo with the wordmark replaced by the word 'FairUse.'

End of the line for video essays (permalink)

What if there was a way for a business to transform any conduct it disliked into a felony, harnessing the power of the state to threaten anyone who acted in a way that displeased the company with a long prison sentence and six-figure fines?

Surprise! That actually exists! It's called Section 1201 of the Digital Millennium Copyright Act, the "anticircumvention" clause, which establishes five-year sentences and $500k fines for anyone who bypasses an "effective access control" for a copyrighted work.

Let's unpack that: every digital product has a "copyrighted work" at its core, because software is copyrighted. Digital systems are intrinsically very flexible: just overwrite, augment, or delete part of the software that powers the device or product, and you change how the product works. You can alter your browser to block ads; or alter your Android phone to run a privacy-respecting OS like Graphene; or alter your printer to accept generic ink, rather than checking each cartridge to confirm that it's the original manufacturer's product.

However, if the device is designed to prevent this – if it has an "access control" that restricts your ability to change the software – then DMCA 1201 makes those modifications into crimes. The act of providing someone with a tool to change how their own property works ("trafficking in circumvention devices") is a felony.

But there's a tiny saving grace here: for DMCA 1201 to kick in, the "access control" must be "effective." What's "effective?" There's the rub: no one knows.

The penalties for getting crosswise with DMCA 1201 are so grotendous that very few people have tried to litigate any of its contours. Whenever the issue comes up, defendants settle, or fold, or disappear. Despite the fact that DMCA 1201 has been with us for more than a quarter of a century, and despite the fact that the activities it restricts are so far-reaching, there's precious little case law clarifying Congress's vague statutory language.

When it comes to "effectiveness" in access controls, the jurisprudence is especially thin. As far as I know, there's just one case that addressed the issue, and boy was it a weird one. Back in 2000, a "colorful" guy named Johnny Deep founded a Napster-alike service that piggybacked on the AOL Instant Messenger network. He called his service "Aimster." When AOL threatened him with a trademark suit, he claimed that Aimster was his daughter Amiee's AOL handle, and that the service was named for her. Then he changed the service's name to Madster, claiming that it was also named after his daughter. At the time, a lot of people assumed he was BSing, but I just found his obituary and it turns out his daughter's name was, indeed, "Amiee (Madeline) Deep":

https://www.timesunion.com/news/article/Madster-creator-Cohoes-native-who-fought-record-11033636.php

Aimster was one of the many services that the record industry tried to shut down, both by filing suit against the company and by flooding it with takedown notices demanding that individual tracks be removed. Deep responded by "encoding" all of the track names on his network in pig-Latin. Then he claimed that by "decoding" the files (by moving the last letter of the track name to the first position), the record industry was "bypassing an effective access control for a copyrighted work" and thus violating DMCA 1201:

https://abcnews.go.com/Entertainment/story?id=108454&amp;page=1

The court didn't buy this. The judge ruled that pig Latin isn't an "effective access control." Since then, we've known that at least some access controls aren't "effective" but we haven't had any clarity on where "effectiveness" starts. After all, there's a certain circularity to the whole idea of "effective" access controls: if a rival engineer can figure out how to get around an access control, can we really call it "effective?" Surely, the fact that someone figured out how to circumvent your access control is proof that it's not effective (at least when it comes to that person).

All this may strike you as weird inside baseball, and that's not entirely wrong, but there's one unresolved "effectiveness" question that has some very high stakes indeed: is Youtube's javascript-based obfuscation an "effective access control?"

Youtube, of course, is the internet's monopoly video platform, with a commanding majority of video streams. It was acquired by Google in 2006 for $1.65b. At the time, the service was hemorrhaging money and mired in brutal litigation, but it had one virtue that made it worth nine figures: people liked it. Specifically, people liked it in a way they didn't like Google Video, which was one of the many, many, many failed internally developed Google products that tanked, and was replaced by a product developed by a company that Google bought, because Google sucks at developing products. They're not Willy Wonka's idea factory – they're Rich Uncle Pennybags, buying up other kids' toys:

https://www.theatlantic.com/ideas/archive/2023/02/google-ai-chatbots-microsoft-bing-chatgpt/673052/

Google operationalized Youtube and built it up to the world's most structurally important video platform. Along the way, Google added some javascript that was intended to block people from "downloading" its videos. I put "downloading" in scare-quotes because "streaming" is a consensus hallucination: there is no way for your computer to display a video that resides on a distant server without downloading it – the internet is not made up of a cunning series of paper-towel rolls and mirrors that convey photons to your screen without sending you the bits that make up the file. "Streaming" is just "downloading" with the "save file" button removed.

In this case, the "save file" button is removed by some javascript on every Youtube page. This isn't hard to bypass: there are dozens of "stream-ripping" sites that let you save any video that's accessible on Youtube. I use these all the time – indeed, I used one last week to gank the video of my speech in Ottawa so I could upload it to my own Youtube channel:

https://www.youtube.com/watch?v=iZxbaCNIwg8

(As well as the Internet Archive, natch):

https://archive.org/details/disenshittification-nation

Now, all of this violates Youtube's terms of service, which means that someone who downloads a stream for an otherwise lawful purpose (like I did) is still hypothetically at risk of being punished by Google. We're relying on Google to be reasonable about all this, which, admittedly, isn't the best bet, historically. But at least the field of people who can attack us is limited to this one company.

That's good, because there's zillions of people who rely on stream-rippers, and many of them are Youtube's most popular creators. Youtube singlehandedly revived the form of the "video essay," popularizing it in many guises, from "reaction videos" to full-fledged, in-depth documentaries that make extensive use of clips to illuminate, dispute, and expand on the messages of other Youtube videos.

These kinds of videos are allowed under US copyright law. American copyright law has a broad set of limitation and exceptions, which include "fair use," an expansive set of affirmative rights to access and use copyrighted works, even against the wishes of the copyright's proprietor. As the Supreme Court stated in Eldred, the only way copyright (a government-backed restriction on who can say certain words) can be reconciled with the First Amendment (a ban on government restrictions on speech) is through fair use, the "escape valve" for free expression embedded in copyright:

https://en.wikipedia.org/wiki/Eldred_v._Ashcroft

Which is to say that including clips from a video you're criticizing in your own video is canonical fair use. What else is fair use? Well, it's "fact intensive," which is a lawyer's way of saying, "it depends." One thing that is 100% true, though, is that fair use is not limited to the "four factors" enumerated in the statute and anyone who claims otherwise has no idea what they're talking about and can be safely ignored:

https://pluralistic.net/2024/06/27/nuke-first/#ask-questions-never

Now, fair use or not, there are plenty of people who get angry about their videos being clipped for critical treatment in other videos, because lots of people hate being criticized. This is precisely why fair use exists: if you had to secure someone's permission before you were allowed to criticize them, critical speech would be limited to takedowns of stoics and masochists.

This means that the subjects of video essays can't rely on copyright to silence their critics. They also can't use the fact that those critics violated Youtube's terms of service by clipping their videos, because only Youtube has standing to ask a court to uphold its terms of service, and Youtube has (wisely) steered clear of embroiling itself in fights between critics and the people they criticize.

But that hasn't stopped the subjects of criticism from seeking legal avenues to silence their critics. In a case called Cordova v. Huneault, the proprietor of "Denver Metro Audits" is suing the proprietor of "Frauditor Troll Channel" for clipping the former's videos for "reaction videos."

One of the plaintiff's claims here is that the defendant violated Section 1201 of the DMCA by saving videos from Youtube. They argue that Youtube's javascript obfuscator (a "rolling cipher") is an "effective access control" under the statute. Magistrate Judge Virginia K DeMarchi (Northern District of California) agreed with the plaintiff:

https://torrentfreak.com/images/Cordova-v.-Huneault-25-cv-04685-VKD-Order-on-Motion-to-Dismiss.pdf

As Torrentfreak reports, this ruling "gives creators who want to sue rivals an option to sue for more than just simple copyright infringement":

https://torrentfreak.com/ripping-clips-for-youtube-reaction-videos-can-violate-the-dmca-court-rules/

Remember, DMCA 1201 applies whether or not you infringe someone's copyright. It is a blanket prohibition on the circumvention of any "effective access control" for any copyrighted work, even when no one's rights are being violated. It's a way to transform otherwise lawful conduct into a felony. It's what Jay Freeman calls "Felony contempt of business model."

If the higher court upholds this magistrate judge's ruling, then all clipping becomes a crime, and the subjects of criticism will have a ready tool to silence any critic. This obliterates fair use, wipes it off the statute-book. It welds shut copyright's escape valve for free expression.

Now, it's true that the US Copyright Office holds hearings every three years where it grants exemptions to DMCA 1201, and it has indeed granted an exemption for ripping video for critical and educational purposes. But this process is deceptive! The exemptions that the Copyright Office grants are "use exemptions" – they allow you to "make the use." However, they are not "tools exemptions" – they do not give you permission to acquire or share the tool needed to make the use:

https://pluralistic.net/2024/10/28/mcbroken/#my-milkshake-brings-all-the-lawyers-to-the-yard

Which means that you are allowed to rip a stream, but you're not allowed to use a stream-ripping service. If Youtube's rolling cipher is an "effective access control" then all of those stream-ripping services are wildly illegal, felonies carrying a five-year sentence and a $500k fine for a first offense under DMCA 1201.

Under the US Copyright Office's exemption process, if you want to make a reaction video, then you, personally must create your own stream-ripper. You are not allowed to discuss how to do this with anyone else, and you can't share your stream-ripper with anyone else, and if you do, you've committed a felony.

So this is a catastrophic ruling. If it stands, it will make the production of video essays, reaction videos, and other critical videos into a legal minefield, by giving everyone whose video is clipped and criticized a means to threaten their critics with long prison sentences, fair use be damned. The only people who will safely be able to make this kind of critical video are skilled programmers who can personally defeat Youtube's "rolling cipher." And unlike claims about stream-ripping violating Youtube's terms of service – which can only be brought by Youtube – DMCA 1201 claims can be brought by anyone whose videos get clipped and criticized.

Is Youtube's rolling cipher an "effective access control?" Well, I don't know how to bypass it, but there are dozens of services that have independently figured out how to get around it. That seems like good evidence that the access control is not "effective."

When the DMCA was enacted in 1998, this is exactly the kind of thing experts warned would happen:

https://pluralistic.net/2025/05/13/ctrl-ctrl-ctrl/#free-dmitry

And here we are, more than a quarter-century later, living in the prison of lawmakers' reckless disregard for evidence and expertise, a world where criticism can be converted into a felony. It's long past time we get rid of this stupid, stupid law:

https://pluralistic.net/2026/01/01/39c3/#the-new-coalition

(Image: Electronic Frontier Foundation, CC BY 4.0)


Hey look at this (permalink)



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

Object permanence (permalink)

#25yrsago Bellsouth phases out pay-phones https://web.archive.org/web/20010211165636/http://dailynews.yahoo.com/h/ap/20010202/bs/bellsouth_pay_phones_1.html

#20yrsago Man who shattered museum vases asked not to come back http://www.chinadaily.com.cn/english/doc/2006-02/07/content_517885.htm

#20yrsago Dozens of Web 2.0 companies’ logos https://flickr.com/photos/torrez/95124293/

#20yrsago Did Nvidia hire an army of message-board sock-puppets? https://web.archive.org/web/20060208045150/https://www.consumerist.com/consumer/evil/did-nvidia-hire-online-actors-to-promote-their-products-152874.php

#15yrsago Sarah Palin Circle-R wants a trademark on her name https://www.loweringthebar.net/2011/02/sarah-palin-tm-having-trouble-with-registration.html

#10yrsago Love Picking: Locksport meets love locks https://toool.us/love-locks/

#10yrsago Superb investigative report on the fake locksmith scam https://www.nytimes.com/2016/01/31/business/fake-online-locksmiths-may-be-out-to-pick-your-pocket-too.html?_r=1

#5yrsago Klobuchar wants to bust her some fuckin' trusts https://pluralistic.net/2021/02/06/calera/#fuck-bork


Upcoming appearances (permalink)

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



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

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026
  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026

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

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026



Colophon (permalink)

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 (1010 words today, 24701 total)

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "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.


How to get Pluralistic:

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

Pluralistic.net

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

https://pluralistic.net/plura-list

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

https://mamot.fr/@pluralistic

Medium (no ads, paywalled):

https://doctorow.medium.com/

Twitter (mass-scale, unrestricted, third-party surveillance and advertising):

https://twitter.com/doctorow

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

01:28

Joe Marshall: Vibe Coded Scheme Interpreter [Planet Lisp]

Mark Friedman just released his Scheme-JS interpreter which is a Scheme with transparent JavaScript interoperability. See his blog post at furious ideas.

This interpreter apparently uses the techniques of lightweight stack inspection — Mark consulted me a bit about that hack works. I'm looking forward to seeing the vibe coded architecture.

01:21

Celebrate Black History Month at These Seattle-Area Events [The Stranger]

Gallery Shows, A Black-Owned Business Market, and More
by Langston Thomas

February is Black History Month, a time to recognize the contributions and struggles of Black Americans throughout our nation’s history. In the face of rising bigotry, continuing the work of antiracism and investing in Black futures remains as important as ever. Read on to find out ways you can honor and celebrate the month, from Melodies of the Diaspora: Celebrating 100 Years of Black History Month to America 250: The Verdict Is?

2026 Call to Conscience Black History Month Museum
South Seattle is one of the most racially and ethnically diverse areas of the city, which makes Call to Conscience essential viewing for Black History Month. This curated museum experience presented by Rainier Avenue Radio transforms the historic Columbia City Theater into a living archive of Black history around the Sound. While many installations run throughout the month, the experience evolves weekly, exploring everything from the Seattle chapter of the Black Panther Party to Jackson Street jazz and the legacy of Quincy Jones. Add in rotating exhibits on Black Tacoma, Black athletes in the Metro League, and the foundational work of blackpast.org, plus talks and special programs, and no two visits feel the same.
Columbia City Theater, Rainier Valley (Through Feb 28)

00:28

Dropping The Deuce [Penny Arcade]

I haven't played Overwatch since… I mean, a long time ago. I don't even remember why. Oh, wait! I do remember why, and no doubt others remember also. In something like COD, bare minimum, I can run around and pick up your tags or whatever. The only shooter I ever got truly competitive in was probably Gears 2, and then, only for two reasons. One, because your whole team is two people. And two, because if you don't get good at the a complete stranger will chainsaw you from your asshole up to your collarbone. It's the worst feeling I've ever experienced in a video game and I'd do anything - even git gud - to avoid it.

Friday, 06 February

23:49

Purple Lemonade Collective [The Stranger]

This Local Performance Troupe Radiates Joy and Ass-Shaking Confidence
by Nico Swenson

The world is full of lemons, but thank god there’s Purple Lemonade. This performance collective has taken over the city with their charisma, cross-genre dance, and scantily clad performances. As they strut the stage, you might see elements of hip-hop, reggaeton, flavors of camp—a whole glorious blend of street, club, and contemporary movement that refuses to be boxed into a singular style. From nightlife venues to theater spaces, their acts fill any venue with an ass-shaking confidence that radiates their mission of promoting playful self-expression.

The troupe was cofounded by Ronnie Gatsby and Kristen Puckhaber in 2016. The name pays homage to two of Gatsby’s big artistic influences: Prince and Beyoncé. “Lemonade,” a nod to Beyoncé’s 2016 album, “was Beyoncé taking a shitty experience and making something great,” says Gatsby. “The thing people used to ridicule me for, being flamboyant, is what has made me a place in the world. I turned that shit into lemonade.”

The collective has taken many forms in the past 10 years, but has always centered around a tight-knit, collaborative friendship. “What we value the most is being able to create cool shit together,” says Gatsby. “We love each other. We get to do what we love with friends.” That core value has stayed true as Gatsby passed the role of artistic director to Carlos Vidal.

Vidal joined Purple Lemonade two years ago. “It changed my life,” says Vidal. One of the things he found empowering was the expansive inclusion of styles. “As a performer, you can do whatever you want to do, just be you and show people how talented you are.” That mindset is why the group has expanded into other areas of entertainment, including drag shows, burlesque, and performing at major
venues like the Seattle Art Museum, Seattle Rep, and Pacific Northwest Ballet. Last summer, they performed at halftime with the cast of Tush for Seattle Reign’s Pride Match at Lumen Field. As regulars in local drag shows, they frequently work with local icons like Betty Wetter. “Collaborating with Purple Lemonade is a dream,” says Wetter. “They’ve created an environment full of love and support, so everyone shines when it’s showtime.”

When asked what people can expect to see, Vidal says “ass out.” The collective’s magnetism sends audiences into a frenzy. For Vidal, the inspiration it ignites in
others is a highlight of the work. “Whether that’s a feeling of ‘I’m going to be braver, I can be more expressive, I’m going to show more ass.’ You can make people feel confident, that’s the best part.”

The group creates in a very joint-effort way, with both the founders still part of the family and process. That connective energy will help them tackle a full and exciting year ahead. J’Adore at the Triple Door in February, Live Nude Mammals at Queer/Bar in March, and Hotel Gatsby at Intiman Theater in April are among upcoming events. “We want to be queer everywhere,” says Vidal. “With everything happening right now, we want to bring joy to people and have fun.” 

23:21

An in-kernel machine-learning library [LWN.net]

For those wanting more machine learning in the kernel, Viacheslav Dubeyko has posted a new in-kernel library for that purpose.

What is the goal of using ML models in Linux kernel? The main goal is to employ ML models for elaboration of a logic of particular Linux kernel subsystem based on processing data or/and an efficient subsystem configuration based on internal state of subsystem. As a result, it needs: (1) collect data for training, (2) execute ML model training phase, (3) test trained ML model, (4) use ML model for executing the inference phase. The ML model inference can be used for recommendation of Linux kernel subsystem configuration or/and for injecting a synthesized subsystem logic into kernel space (for example, eBPF logic).

It is rigorously undocumented and there are no real users, so it's not entirely clear what the purpose is, but there are undoubtedly interesting things that could be done with it.

23:00

Pop Loser # 15: Immaculate Collection with Biblioteka [The Stranger]

This week's music news. by Audrey Vann

Welcome back to Pop Loser! This week, we dig into some highlights from the 68th Annual Grammy Awards. In another edition of Immaculate Collection, local punk band Biblioteka share their treasure troves of funky shoes, creepy dolls, and Magic: The Gathering cards. Plus, I have two moody song recommendations to get you through the rest of the week.

This Week in Music

The Grammys were on Sunday (if you even care). Politics seeped through the award show’s facade with ICE OUT pins on every lapel and speeches dedicated to immigrant solidarity from Bad Bunny, Billie Eilish, Olivia Dean, and Kehlani. Other highlights from the show included a D’Angelo tribute from Lauryn Hill and performances from pop divas Addison Rae, Sabrina Carpenter, and Lady Gaga. Trump has already threatened to sue host Trevor Noah, who joked about his visits to Epstein Island.

The award show also brought us live TV gold. Cher made an appearance at the Grammys for the first time in 18 years to accept a lifetime achievement award and present the highly anticipated Record of the Year. What followed was an incredible chain of slipups, pauses, and missed marks that only Cher can get away with. Her appearance ended with her announcing the late Luther Vandross as the winner. (The winner was actually Kendrick Lamar and SZA, for their song “Luther”). This was the greatest award show moment since John Travolta introduced “the wickedly talented Adele Dazeem.”

Let’s talk fashion. There have been entire articles written about Chappell Roan’s red carpet look, but for all the wrong reasons (I am looking at you, New York Times). The merlot chiffon gown, held up by faux nipple piercings, was inspired by a look from Thierry Mugler’s fall 1998 couture collection and should make anyone gasp from its elegance, not prudishness. In the negative space on her skin, Roan was covered in delicate temporary tattoos of lace-woven horses. This is by far my favorite red carpet look of the last 20 years.

RIP Billy Bass Nelson. This week, we lost Billy Bass Nelson, the original bassist of the pioneering psychedelic funk band Funkadelic, who died just three days after his 75th birthday. No cause of death has been reported yet. It was also announced Monday night that Three Dog Night cofounder Chuck Negron, best known as the lead vocalist on “Joy to the World,” died at the age of 83.

The USA could never. Live music venues in the UK are now set to receive government support, following backlash to plans that would increase business rates, which could leave thousands of venues and pubs at risk of layoffs and closures. In response to the possible impact on live music, the Treasury has confirmed a new support package of nearly £100 million for live music venues across England and Wales.

Immaculate Collection with Biblioteka

If you’ve been nonstop bumping Amyl & the Sniffers’ third album, Cartoon Darkness, since it was released, might I suggest you add some Biblioteka into the rotation? Like the Aussie punks, Seattle’s Biblioteka are led by a high-energy vocal powerhouse, Mary Robins, who often sings about being turned on and pissed off (just listen to their newest single “Firestarter”). Ahead of the trio’s album release party at Neumos on Feb 12, I caught up with the band to discuss their obsessions, from funky shoes to creepy dolls.

Mary: Funky Shoes

What do you collect?
I collect shoes, namely, statement shoes and boots for playing shows. There’s something about stomping around in big, boxy boots that makes me feel like a giant praying-mantis-meets-Barbarella. Things I usually go for: platforms, chunky heels, and leopard.

What was the first item you acquired in this collection?
Jeffrey Campbell buckle ankle boots with a metal-caged heel. I wore them for our first Biblioteka show. They’re comfy and look so sick. Local shoe lore is that Jeffrey Campbell got his start working at the Tukwila Nordstrom in the women's shoe department, or so the people who work there have told me. I love a local legend, and I also had my first job at the Tukwila mall.

What is the most prized item in your collection?
The vintage, silver, pointy-toe cowboy boots. I got them at a vintage shop while we were in Spain on tour. They look amazing, one of a kind and out of this world. And they fit perfectly.

Tell me about an item you'd like to add to your collection or a new collection you'd like to start.
I’m trying to de-collect, especially since I grew up in a house where “collecting” can get out of hand, lol. So these days I’m selling clothes and shoes on my Depop :)

Hexx: Souvenir Dolls

What do you collect?
I collect a lot! Vinyl, vintage tees and bolos, guitars, and I also started a creepy doll collection.

What was the first item you acquired in this collection?

I started collecting souvenir plush/dolls/toys while out touring, and it all started with a creepy clown that I found in a Portland alley next to a bag of drugs. I left the drugs, took the clown, and proclaimed her name Gweneviere, which also happened to be the name of the venue owner’s daughter (who despises clowns). Gweneviere is our unofficial mascot!

What is the most prized item in your collection? 

I have a green alien plush scored from a middle-of-nowhere gas station close to what I assume or wish to believe is Area 51.

Tell me about an item you'd like to add to your collection or a new collection you'd like to start. 

I’d be good with another back alley clown.

Jules: Magic: The Gathering Cards

 

What do you collect?
I started collecting Magic: The Gathering cards entirely on accident, but now I’ve likely got around two or three thousand cards in my collection, and it is probably what I would need to sell off if I needed a quick windfall someday.

What was the first item you acquired in this collection?

I started playing around 2018 when a friend of mine moved back to town and decided to get us all hooked. The first Magic cards I bought on my own were from Mox Boarding House, a battle deck they had assembled called Chimera Flash. The deck was built around a card called Spellheart Chimera, which at the time felt like the strongest card imaginable. It has flying and trample AND its power is equal to the number of instants and sorceries in my graveyard? What could be better than that? Soon after I started collecting packs from the Guilds of Ravnica expansion, which had a card called Crackling Drake, which was basically the same as Spellheart Chimera but it also drew a card when it entered. The search for the strongest version of Spellheart Chimera still continues to this day.

What is the most prized item in your collection?

I’m a lifelong Sonic the Hedgehog fan, so I bought the crossover Secret Lair collection when they launched it. There are seven secret bonus cards, the seven chaos emeralds, that were all super rare drops for those who bought the collab. I ended up getting the red chaos emerald, it was such a thrill pulling that out of the pack. I’ve got it in my trade binder to proudly show, and it’s doubtful I’ll pull an individual card that I’m more stoked on.

Tell me about an item you'd like to add to your collection or a new collection you'd like to start.

Ideally, this collection never gets any bigger. I’d love to just survive for the rest of my Magic career by selling cards if I want to buy more cards. I’ve got too many of these things.

Music Events Worth Your Hard-Earned Money This Week

Naima Bock Feb 5, Tractor Tavern, 8 pm, 21+

Robyn Hitchcock Feb 6, Neptune Theatre, 8 pm, all ages

The Maya Experience Feb 6, Barboza, 6:30 pm, 21+

Audioasis Live Feb 7, KEXP, 5 pm, all ages

Claire Conway, Your Jack, Frankie Beach Feb 10, Sunset Tavern, 7:30 pm, 21+

Olivia Barton Feb 10, Barboza, 7 pm, all ages

Want these recs in your inbox a day earlier? Subscribe to Pop Loser. 

The Songs That Keep Me Up at Night

“Heavy, Why?” by Blackwater Holylight
Portland-born metal band Blackwater Holylight contrast their shimmering harmonies with sludgy, psychedelic instrumentals for a product that is haunting, beautiful, cathartic, and scary all at the same time. Their new album, Not Here Not Gone, was released on Friday and features some of their most approachable songs yet—take “Heavy, Why?” for example, which is reminiscent of 2010s rock bands like the Dum Dum Girls and Broken Water. I don't listen to very much metal, but I love this band—consider them your gateway into the genre.

“Bluebell” by Babes in Toyland

When I’m in a bad mood, I listen to Babes in Toyland’s 1992 album Fontanelle as loud as I can tolerate. I’ve been in a bad mood a lot this week, so naturally, “Bluebell” has been literally stuck in my head, keeping me up at night. Specifically, the part where she yells, “You know who you are / You're dead meat, motherfucker!” Listen to it for a cathartic release.

Get Pop Loser every week in your inbox. Subscribe here

We Keep Each Other Alive [The Stranger]

Ally Ang sparks up this city with a distinctively queer, raucous energy that’s nerdy, enthusiastic, genuine, and joyful. “Reading a really good book of poems is so exhilarating,” Ang told me, when I spoke with them around the release of their debut poetry collection, Let the Moon Wobble. “I get hype off of it. It feels like downing cold brew or something. It makes me feel so, just, like, alive. Nothing else gives me that feeling. I'm so addicted to the feeling of reading really exciting poetry.” by Katie Lee Ellison

Ally Ang sparks up this city with a distinctively queer, raucous energy that’s nerdy, enthusiastic, genuine, and joyful. “Reading a really good book of poems is so exhilarating,” Ang told me, when I spoke with them around the release of their debut poetry collection, Let the Moon Wobble. “I get hype off of it. It feels like downing cold brew or something. It makes me feel so, just, like, alive. Nothing else gives me that feeling. I'm so addicted to the feeling of reading really exciting poetry.” 

I don’t know about you, but I haven’t felt anywhere near this excited about much lately, which is another reason why Ang is a beacon in Seattle. Bestowed with the honor of an NEA grant in 2023, they shot into a wider collective public consciousness, but as they’ll tell you themselves, they’ve been publishing poems in zines and anywhere else that would have them for 12 years and counting. This seemingly sudden arrival to the poetry scene with their debut collection was in fact built from years of work with mentors, studying craft, and honing their voice. 

In fact, “the earliest poem of the book was written in 2018, and most of them were written from 2019 through 2022,” Ang said. The collection has “undergone somewhere between 10 and 100 revisions.” You could say they learned to write through the creation of this book. “I used to be a little bit anti-form, because I was like, oh, poetry shouldn't have rules. After reading a lot more poems, and reading a lot more poets who work really heavily with form, I began to see that it opened up a lot of possibilities, as opposed to being restrictive. My relationship with form has evolved, and I have a lot of fun with it now.”

And there is more to come. “I am working on something that will hopefully be a second book someday,” said Ang. “But right now it's just a bunch of poems in a Google Doc. What I'm thinking through in the new project is gender as a form, and how queerness is breaking that form and recreating it.” 

What stands out most from our conversation is the idea that no art is made in a vacuum. It’s collective care and exchange—that comes in so many forms—that allowed this work to bubble up to our communal surface. 

“A lot of people in Seattle, like Jane Wong and Luther Hughes and Cass Garrison, they're all influences to me,” said Ang. “Even though I also just see them around.” They also mentioned a Yin Yi workshop through Oneworld Publications that got them focused; their friend Serena Brown, whom they hired to help with order and structure; and South Korean poet Kim Hyesoon, whose grotesque, feminist work “gave me permission to lean into the more disgusting and gooey aspects of being a person and having a body.”

Ang leans hard into that permission in Let the Moon Wobble to explore the complexities of queer sex, alongside the gross weirdness of having a body at all. Inherent in these pages is a resistance to the kind of domesticated queerness Ellen DeGeneres made popular. 

“There is this narrative that once you come out as queer and embrace your identity,” said Ang, “then you let go of all your internalized whatever, and just be proud all the time. That has certainly not been the experience for me. I am obviously very proud of my identities, and I feel pretty comfortable in who I am, but the lifetimes of shame that have accumulated in me are something that I don't know if I'll ever be done with. Even in moments of pleasure, intimacy, and ecstasy, that shame is also always present. Instead of trying to be like, ‘hashtag it gets better,’ it was important for me to be like, well, you know what, all of this is present: the pleasure and the shame and the disgust and the pride. It's all tangled up together.” 

In their day job, Ang is a nonprofit fundraiser, and, when not writing, co-runs and cohosts a monthly reading series, Other People’s Poems, with Cody Stetzel at Open Books in Pioneer Square. People turn out, and the community built from this series is strong. And that’s the point. Ang is deeply invested in community, perhaps for reasons that stretch far beyond their own life. 

“I don't think I'm going to be alive to see the downfall of capitalism, nor the rebuild of whatever [takes] its place. [But] we can take care of each other as our governments fail to take care of us. Like, people really do care about each other. The early days of the pandemic were actually the most optimistic I ever felt about the world, even though it was a really scary, uncertain time. People mobilized so quickly into mutual aid, taking care of each other, and creating pods. When the uprisings [after George Floyd’s murder] took place, people were training as street medics and doing jail support. I feel less optimistic than I did then because of how things have unfolded in the last five years. There's so much room for improvement, because so many people do fall through the cracks, and people who don't have strong networks of community don't tend to receive that care.”

This conversation took place before the eruption of protest and action in Minneapolis against ICE, but their words are a breathing example of how politics are always personal. 

Of their collection and the very deeply personal in it, Ang said, “It feels scary to talk about the suicidal ideation stuff, or feeling hopeless and despairing about the world. I wrote [those pieces] at a very different point in my life, and it is weird to have this book coming out at a time when I want to be here, I want to be alive. I like my life for the most part. I don't know if I'll read those poems aloud at readings, because I don't want to go back to that. But it's important that it's there, because it was real, and I think it's real for a lot of other people, too. Which is why I also wanted to put a lot of joy and hope in the book, and not just linger in that really despairing place.”

In all of Ang’s energy and excitement about poetry, there is a wisdom and depth to the understanding that celebration is a necessary antidote to our losses and fuels our fight against the terrible, monstrous, murderous, sponsored, and authorized state-sanctioned violence across this country right now. We don’t know what’s coming, but Ang’s work is one way to prepare ourselves, one way to help keep ourselves and each other alive.

22:35

Friday Squid Blogging: Squid Fishing Tips [Schneier on Security]

This is a video of advice for squid fishing in Puget Sound.

As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.

Blog moderation policy.

22:14

Remembering the 1919 Seattle General Strike [The Stranger]

It’s time. by Conor Kelley

Today marks the 107th anniversary of the 1919 Seattle General Strike, a five-day work stoppage protesting low wages and rampant union-busting by wealthy corporation owners. Sound familiar?

The strike began in the union shipyards and spread to the entire city. Shipbuilders were furious when shipyard owners, rich off World War I profits, offered a pay increase only to “skilled” workers in an attempt to divide their union. A citywide poll found a strike was very popular. It was on. Of Seattle’s 315,000 residents, 65,000 (20 percent) hit the streets. During the work stoppage, Seattleites took care of the city and one another, collecting garbage and opening food halls. But it was nothing like business as usual. Shops closed. Streetcars stopped.

A participant recalled, “Nothing moved but the tide.”

Seattle's mayor, the coward Ole Hanson, quickly deputized thousands of bootlickers into the police force and called in federal troops from Camp Lewis to try to crush the strike. Strikers laughed off days of empty threats from Hanson, but were unsure what to do next. Slowly, they lost faith and began to break off. By February 11, the strike was over, and somewhat inexplicably, Hanson was labeled a hero by national press. He resigned shortly after to focus on grifting, writing a book on the dangers of organized labor, embarking on a nationwide speaking tour, and even making a failed bid for the Republican presidential nomination. Then he moved to California and lost all his money in the Great Depression. Whoops!

The strike was popular. It was big and sustained. So why did it fizzle out? The strikers had no clear demands.

The recent nationwide general strikes are different. Last month, protestors clearly demanded ICE out of our communities, justice for Renée Good and Alex Pretti, the defunding of ICE, and for companies to refuse ICE entry into their workplaces.

Those demands remain unmet.

As Faye Guenther, president of UFCW 3000, said on KUOW’s recent segment on the current general strikes: “There can be no more ‘business as usual’ when the federal government turns on its own people.”

It’s time.

21:56

New Books and Arcs, 2/6/26 [Whatever]

It’s February, again, and look! The groundhog brought a bunch of books with him! What here would you like to keep with you during the coldest part of the year? Share in the comments!

— JS

21:07

I Am in the Epstein Files [Schneier on Security]

Once. Someone named “Vincenzo lozzo” wrote to Epstein in email, in 2016: “I wouldn’t pay too much attention to this, Schneier has a long tradition of dramatizing and misunderstanding things.” The topic of the email is DDoS attacks, and it is unclear what I am dramatizing and misunderstanding.

Rabbi Schneier is also mentioned, also incidentally, also once. As far as either of us know, we are not related.

EDITED TO ADD (2/7): There is more context on the Justice.gov website version.

20:42

Reproducible Builds: Reproducible Builds in January 2026 [Planet Debian]

Welcome to the first monthly report in 2026 from the Reproducible Builds project!

These reports outline what we’ve been up to over the past month, highlighting items of news from elsewhere in the increasingly-important area of software supply-chain security. As ever, if you are interested in contributing to the Reproducible Builds project, please see the Contribute page on our website.

  1. Flathub now testing for reproducibility
  2. Reproducibility identifying projects that will fail to build in 2038
  3. Distribution work
  4. Tool development
  5. Two new academic papers
  6. Upstream patches

Flathub now testing for reproducibility

Flathub, the primary repository/app store for Flatpak-based applications, has begun checking for build reproducibility. According to a recent blog post:

We have started testing binary reproducibility of x86_64 builds targeting the stable repository. This is possible thanks to flathub-repro-checker, a tool doing the necessary legwork to recreate the build environment and compare the result of the rebuild with what is published on Flathub. While these tests have been running for a while now, we have recently restarted them from scratch after enabling S3 storage for diffoscope artifacts.

The test results and status is available on their reproducible builds page.


Reproducibility identifying software projects that will fail to build in 2038

Longtime Reproducible Builds developer Bernhard M. Wiedemann posted on Reddit on “Y2K38 commemoration day T-12” — that is to say, twelve years to the day before the UNIX Epoch will no longer fit into a signed 32-bit integer variable on 19th January 2038.

Bernhard’s comment succinctly outlines the problem as well as notes some of the potential remedies, as well as links to a discussion with the GCC developers regarding “adding warnings for inttime_t conversions”.

At the time of publication, Bernard’s topic had generated 50 comments in response.


Distribution work

Conda is language-agnostic package manager which was originally developed to help Python data scientists and is now a popular package manager for Python and R.

conda-forge, a community-led infrastructure for Conda recently revamped their dashboards to rebuild packages straight to track reproducibility. There have been changes over the past two years to make the conda-forge build tooling fully reproducible by embedding the ‘lockfile’ of the entire build environment inside the packages.


In Debian this month:


In NixOS this month, it was announced that the GNU Guix Full Source Bootstrap was ported to NixOS as part of Wire Jansen bachelor’s thesis (PDF). At the time of publication, this change has landed in NiX’ stdev distribution.


Lastly, Bernhard M. Wiedemann posted another openSUSE monthly update for his work there.


Tool development

diffoscope is our in-depth and content-aware diff utility that can locate and diagnose reproducibility issues. This month, Chris Lamb made the following changes, including preparing and uploading versions, 310 and 311 to Debian.

  • Fix test compatibility with u-boot-tools version 2026-01. []
  • Drop the implied Rules-Requires-Root: no entry in debian/control. []
  • Bump Standards-Version to 4.7.3. []
  • Reference the Debian ocaml package instead of ocaml-nox. (#1125094)
  • Apply a patch by Jelle van der Waa to adjust a test fixture match new lines. []
  • Also the drop implied Priority: optional from debian/control. []


In addition, Holger Levsen uploaded two versions of disorderfs, first updating the package from FUSE 2 to FUSE 3 as described in last months report, as well as updating the packaging to the latest Debian standards. A second upload (0.6.2-1) was subsequently made, with Holger adding instructions on how to add the upstream release to our release archive and incorporating changes by Roland Clobus to set _FILE_OFFSET_BITS on 32-bit platforms, fixing a build failure on 32-bit systems. Vagrant Cascadian updated diffoscope in GNU Guix to version 311-2-ge4ec97f7 and disorderfs to 0.6.2.


Two new academic papers

Julien Malka, Stefano Zacchiroli and Théo Zimmermann of Télécom Paris’ in-house research laboratory, the Information Processing and Communications Laboratory (LTCI) published a paper this month titled Docker Does Not Guarantee Reproducibility:

[…] While Docker is frequently cited in the literature as a tool that enables reproducibility in theory, the extent of its guarantees and limitations in practice remains under-explored. In this work, we address this gap through two complementary approaches. First, we conduct a systematic literature review to examine how Docker is framed in scientific discourse on reproducibility and to identify documented best practices for writing Dockerfiles enabling reproducible image building. Then, we perform a large-scale empirical study of 5,298 Docker builds collected from GitHub workflows. By rebuilding these images and comparing the results with their historical counterparts, we assess the real reproducibility of Docker images and evaluate the effectiveness of the best practices identified in the literature.

A PDF of their paper is available online.


Quentin Guilloteau, Antoine Waehren and Florina M. Ciorba of the University of Basel in Sweden also published a Docker-related paper, theirs called Longitudinal Study of the Software Environments Produced by Dockerfiles from Research Artifacts:

The reproducibility crisis has affected all scientific disciplines, including computer science (CS). To address this issue, the CS community has established artifact evaluation processes at conferences and in journals to evaluate the reproducibility of the results shared in publications. Authors are therefore required to share their artifacts with reviewers, including code, data, and the software environment necessary to reproduce the results. One method for sharing the software environment proposed by conferences and journals is to utilize container technologies such as Docker and Apptainer. However, these tools rely on non-reproducible tools, resulting in non-reproducible containers. In this paper, we present a tool and methodology to evaluate variations over time in software environments of container images derived from research artifacts. We also present initial results on a small set of Dockerfiles from the Euro-Par 2024 conference.

A PDF of their paper is available online.


Miscellaneous news

On our mailing list this month:

Lastly, kpcyrd added a Rust section to the Stable order for outputs page on our website. []


Upstream patches

The Reproducible Builds project detects, dissects and attempts to fix as many currently-unreproducible packages as possible. We endeavour to send all of our patches upstream where appropriate. This month, we wrote a large number of such patches, including:



Finally, if you are interested in contributing to the Reproducible Builds project, please visit our Contribute page on our website. However, you can get in touch with us via:

I Saw U: Wearing a Columbo-Ass Raincoat, Joking About a Horse Romantasy Book, and Slipping on the Wet Sidewalk [The Stranger]

Is it a match? Leave a comment here or on our Instagram post to connect! by Anonymous

Me: Pink raincoat You: Bruce Harrell

Standing in the doorway of the US Bank Center, on the phone, in your Columbo-ass raincoat (he wore it better). Blocking a doorway, on the phone, presumably avoiding the rain (it had stopped raining). Typical Brucie Baby, unaware of others and being in the way.

Cute Dude in Rain That Slipped

Walking down Spring St. Me with small dog, you with umbrella. You slipped on a metal plate. I made sure you were okay and we chatted for a few blocks.

Broadway Complementary

You stopped me by Dick’s to effusively compliment my earrings and eyeliner. I fully failed to return the favor. Gimme an opportunity to call you cute?

ESMERALDA VASQUEZ

bear beanie @ dick’s 19c burgers

you: in line, tan bear beanie, blonde. me: blue jacket, hoodie, in my car w friends. I waved goodbye, you waved back. dinner on me next time?

horse romantasy book @ ophelia’s 1/5

Joking about a horse romantasy book with Ophelias’ staff when I saw you...brunette w/tortoiseshell glasses & northface shoes. Can I buy you a coffee?

ESMERALDA VASQUEZ

High Rail Movie Night

I was high on the lightrail and you were coming home from a SIFF premier with a friend. We chatted and laughed before I got off. Never asked your name

Is it a match? Leave a comment here or on our Instagram post to connect!

Did you see someone? Say something! Submit your own I Saw U message here and maybe we'll include it in the next roundup!

19:56

The Best Bang for Your Buck Events in Seattle This Weekend: Feb 6–8, 2026 [The Stranger]

Super Bowl Watch Parties, Lunar New Year Night Market, and More Cheap & Easy Events Under $20
by EverOut Staff

LFG Seattle! Hawks are in Benito Bowl and we've got weekend picks from Hidden Hall's Super Bowl LX Watch Party to the Lunar New Year Night Market and from Linda From Work, Zookraught, & Killbuzz to the Seattle Bike Swap. Check out our top picks of the week for more things to do.

FRIDAY PARTIES & NIGHTLIFE

Down the Rabbit Hole
Step right up, girls, gays, and theys for Queer/Bar’s one-night-only floral, acid-trip dance fantasy takeover! What is a floral, acid-trip fantasy? No idea, but it sounds wonderfully whimsical, and that’s enough. For this Alice in Wonderland-esque evening, the bar splits into two microcosms. Downstairs is a garden rave with go-gos, vendors, and silky house grooves from Ash Wave and Café Nico. Upstairs, the mini bar morphs into the Rabbit Hole Stage, where Bearbie and Pauliné deliver a darker, dirtier set amplified by lasers, lights, and mind-melting visuals. Come dance, wander, trip, “but not to fall.” LANGSTON THOMAS
(Queer Bar, Capitol Hill, $10-$15)

Feeds

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