Thursday, 26 March

18:07

Slog AM: Potties for Pioneer Square, Olympics Bans Trans Women, Election Fraud Activist Guilty of Election Fraud [The Stranger]

The Stranger's morning news roundup. by Nathalie Graham

King County Assessor Charged in Stalking Case: Last summer, King County Assessor John Arthur Wilson—who was running for King County Executive at the time—was arrested for violating a no-contact order from his ex-fiancée. Wilson had allegedly stalked and harassed his ex, and she had a temporary restraining order against him. Because of conflicts of interest with the assessor's office, the King County Prosecuting Attorney's Office couldn't handle the charges, so they handed the case to the Snohomish County Prosecutor. But the Seattle City Attorney ended up filing the charges. It’s unclear why. Wilson was charged in Seattle Municipal Court. He’s still the King County Assessor, though he says he will not run for re-election. 

In Sonics News: There's actually nothing to be excited about yet, you basketball babies. In a unanimous vote, the NBA Board of Governors gave Commissioner Adam Silver the green light to hold formal talks with Seattle and Las Vegas about maybe expanding the league to one or both of the cities for the 2028-2029 season. Don't hold your breath. A final answer might not come until the end of this calendar year. In the meantime, go to a Storm game?

Landslide Blues: Northbound I-5 near Bellingham is still closed after 12 million pounds of earth fell onto it seven days ago. State transportation crews are doing what they can to secure the slide-prone slope above the roadway, but as KING5 reports, it all takes time. They must clear loose trees and rocks on the hillside and then bolt the slope back into place. The whole thing is snarling traffic and disrupting shipping between the US and Canada. 

Pioneer Square Piss Boxes: After years of failed attempts to give the public a place to piss in peace that is not an alleyway or a Starbucks, Seattle is once again trying to add new bathrooms to its stock. The Seattle Department of Transportation is contracting with private company Throne Labs to install "11 freestanding restrooms across the region, each at cost of around $100,000 a year," reports PubliCola. That's pretty cheap considering Seattle's last potty proposal cost $5 million for four toilets. The Thrones will, of course, only be accessible via "an app, a QR code, text message, or an entry card." You can bet your ass Throne will be keeping tabs on customers. User reviews and sensors in each unit can help identify any restroom rascals. The first two Thrones will come to Pioneer Square. 

The Weather: There will be sun today. It's spring, though, so anything can happen. 

Instagram Addicts Non-Anonymous: Raise your hand if you have been personally victimized by doomscrolling. A 20-year-old woman sued Meta and Google for her childhood addictions to Instagram and YouTube which saddled her with anxiety, depression, and body dysmorphia. Inventions like "infinite scroll" kept the plaintiff hooked on the apps. A Los Angeles jury ordered the tech companies must pay $6 million in damages—$3 million in compensatory damages, and another $3 million in punitive damages. Meta will have to cough up 70 percent of the funds, Google will pay the other 30 percent. This was the first case of its kind to go to trial, but thousands of plaintiffs across the country have filed similar suits, like Tuesday’s New Mexico trial regarding child exploitation and user safety. Meta says it will appeal the LA court’s ruling. 

Timely: Meta laid off several hundred people on Wednesday. The cuts hit multiple divisions across the company, CNBC reports, like "Facebook, global operations, recruiting, sales and its virtual reality division Reality Labs." Meta's big plan is to funnel resources into AI. 

Sad Days for American Science: Top NASA climate scientist Kate Marvel resigned from her position on Wednesday. She blamed the Trump administration's attack on science. Marvel said that none of her internally funded projects actually got funded once Trump took office. You can read her resignation letter here. The New York Times reports that Marvel is one of around 95,000 federal science employees who are no longer in their roles post-Trump 2.0 due to "layoffs, retirements, or resignations." This is catastrophic for American science. 

Despite living in climate denial central, the effects of climate change are real and very much here. California's dismal snowpack is nearing record lows and spring heatwaves are melting whatever's left. "Nearly every snow-measuring station in the Sierra has lost more than a foot of snow in the 10 days since the heat wave kicked into full gear," SFGate reports. "A melt of this rate is a big deal any time, but in March it’s unheard of,” hydrologist Mike Hittle told the paper. 

 

It’s been a brutal month for California’s snowpack, which is now at just 25% of normal.

The snowpack is now 8% of normal in the northern Sierra, 28% of normal in the central Sierra and 44% of normal in the southern Sierra.

NASA satellite images from Feb. 22, March 6 and March 24.

[image or embed]

— Anthony Edwards (@edwardsanthonyb.bsky.social) March 25, 2026 at 3:20 PM

Meanwhile, War: Israel says it killed the head of Iran's navy in an airstrike. After Tehran rejected Trump's 15-point ceasefire plan the president is now publicly threatening Tehran in Truth Social posts to "get serious soon" on these negotiations. He also claims Iran is "begging for a deal." Strange tactic, but hey, he’s the artist of the deal.

Olympics Says It’s Banning Trans Women Athletes: The International Olympic Committee announced a ban on transgender women from participating in women’s sporting events at the 2028 Summer Olympics in Los Angeles. Trans women athletes haven’t been competing in the Olympics. So, what’s this really about? The committee has also banned cis or intersex women with male testosterone levels or male chromosomes. Any athlete who wants to compete in a female sport will have to prove their biological gender with a cheek swab or saliva test. No one wins when women and womanhood are scrutinized like this. 

We're all trying to find the guy who did this: Harry Wait, a Wisconsin man who believes the 2020 election was stolen and leads a group that decries election fraud, was convicted of election fraud. Wait was found guilty of two misdemeanor election fraud charges and one felony identity theft charge for requesting the absentee ballots of Republican state Assembly Speaker Robin Vos and Democratic Racine Mayor Cory Mason without their consent. Of the charges, Wait said, "You got to expect to pay some costs sometimes when you are trying to work for the public good." He also said he "would do it again." 

It Was Opening Day: It's officially baseball season. Now... was this symbolism?

it's so cool that they exploded the US flag at the MLB season opener. baseball getting woker.

[image or embed]

— tuck woodstock (@tuck.bsky.social) March 25, 2026 at 5:27 PM

Today Is The Mariners' Opening Day: See you all at T-Mobile Park. Here's this to get you into the mood. 

17:21

Link [Scripting News]

Sometimes buy a name just because I just like it. ;-)

16:35

Link [Scripting News]

When I heard about Matt's product Beeper I thought wow what if that were on the RSS network. For a chat program that's trying to support all protocols, take a shortcut, immediately connect to all kinds of insanely great things that will blow peoples' minds. RSS is going places, lots of new products coming out these days. I think maybe finally we're giving up on what you give up using the silos.

Link [Scripting News]

This piece explains the tragedy of how we've set up communication using our networks, all based on exclusive products, rather than standards which mean you can use whatever software you want for more and more of your communication.

Link [Scripting News]

Send this video to your favorite Democrat and let them know that we would pay money to have this video run as an ad running everywhere, exactly as-is, no editing, not made glamorous. This is the truth that absolutely is not getting out about the law the Repubs want. We need to communicate with each other using the amazing tools we have at our disposal now in the third decade of the freaking 21st century.

Why doesn’t WM_ENTER­IDLE work if the dialog box is a Message­Box? [The Old New Thing]

Last time, we looked at how the owner of a dialog can take control just before the dialog box message loop goes idle. I said that I pulled a trick.

The trick is that I used the common file open dialog instead of a simple Message­Box. Indeed, if you replace the call to Get­Open­File­Name with a call to Message­Box, then no WM_ENTER­IDLE message arrives, and you get no beeping. What’s going on?

A dialog can suppress the WM_ENTER­IDLE message by adding the DS_NO­IDLE­MSG dialog style to its template. And that’s what the template used by the Message­Box function does.

So the WM_ENTER­IDLE trick does require a small amount of cooperation from the dialog box, namely that it doesn’t disable WM_ENTER­IDLE messages.

But say you can guarantee the cooperation of the dialog box because you are the dialog box. Right now, the WM_ENTER­IDLE message allows a dialog owner to be notified when the dialog message loop is about to go idle. But what if the dialog box itself wants to know, so it can customize its own message loop?

We’ll look at that next time.

The post Why doesn’t <CODE>WM_<WBR>ENTER­IDLE</CODE> work if the dialog box is a <CODE>Message­Box</CODE>? appeared first on The Old New Thing.

Slog AM: Potties for Pioneer Square, Olympics Bans Trans Women, Election Fraud Activist Guilty of Election Fraud [The Stranger]

The Stranger's morning news roundup. by Nathalie Graham

King County Assessor Charged in Stalking Case: Last summer, King County Assessor John Arthur Wilson—who was running for King County Executive at the time—was arrested for violating a no-contact order from his ex-fiancée. Wilson had allegedly stalked and harassed his ex, and she had a temporary restraining order against him. Because of conflicts of interest with the assessor's office, the King County Prosecuting Attorney's Office couldn't handle the charges, so they handed the case to the Snohomish County Prosecutor. But the Seattle City Attorney ended up filing the charges. It’s unclear why. Wilson was charged in Seattle Municipal Court. He’s still the King County Assessor, though he says he will not run for re-election. 

In Sonics News: There's actually nothing to be excited about yet, you basketball babies. In a unanimous vote, the NBA Board of Governors gave Commissioner Adam Silver the green light to hold formal talks with Seattle and Las Vegas about maybe expanding the league to one or both of the cities for the 2028-2029 season. Don't hold your breath. A final answer might not come until the end of this calendar year. In the meantime, go to a Storm game?

Landslide Blues: Northbound I-5 near Bellingham is still closed after 12 million pounds of earth fell onto it seven days ago. State transportation crews are doing what they can to secure the slide-prone slope above the roadway, but as KING5 reports, it all takes time. They must clear loose trees and rocks on the hillside and then bolt the slope back into place. The whole thing is snarling traffic and disrupting shipping between the US and Canada. 

Pioneer Square Piss Boxes: After years of failed attempts to give the public a place to piss in peace that is not an alleyway or a Starbucks, Seattle is once again trying to add new bathrooms to its stock. The Seattle Department of Transportation is contracting with private company Throne Labs to install "11 freestanding restrooms across the region, each at cost of around $100,000 a year," reports PubliCola. That's pretty cheap considering Seattle's last potty proposal cost $5 million for four toilets. The Thrones will, of course, only be accessible via "an app, a QR code, text message, or an entry card." You can bet your ass Throne will be keeping tabs on customers. User reviews and sensors in each unit can help identify any restroom rascals. The first two Thrones will come to Pioneer Square. 

The Weather: There will be sun today. It's spring, though, so anything can happen. 

Instagram Addicts Non-Anonymous: Raise your hand if you have been personally victimized by doomscrolling. A 20-year-old woman sued Meta and Google for her childhood addictions to Instagram and YouTube which saddled her with anxiety, depression, and body dysmorphia. Inventions like "infinite scroll" kept the plaintiff hooked on the apps. A Los Angeles jury ordered the tech companies must pay $6 million in damages—$3 million in compensatory damages, and another $3 million in punitive damages. Meta will have to cough up 70 percent of the funds, Google will pay the other 30 percent. This was the first case of its kind to go to trial, but thousands of plaintiffs across the country have filed similar suits, like Tuesday’s New Mexico trial regarding child exploitation and user safety. Meta says it will appeal the LA court’s ruling. 

Timely: Meta laid off several hundred people on Wednesday. The cuts hit multiple divisions across the company, CNBC reports, like "Facebook, global operations, recruiting, sales and its virtual reality division Reality Labs." Meta's big plan is to funnel resources into AI. 

Sad Days for American Science: Top NASA climate scientist Kate Marvel resigned from her position on Wednesday. She blamed the Trump administration's attack on science. Marvel said that none of her internally funded projects actually got funded once Trump took office. You can read her resignation letter here. The New York Times reports that Marvel is one of around 95,000 federal science employees who are no longer in their roles post-Trump 2.0 due to "layoffs, retirements, or resignations." This is catastrophic for American science. 

Despite living in climate denial central, the effects of climate change are real and very much here. California's dismal snowpack is nearing record lows and spring heatwaves are melting whatever's left. "Nearly every snow-measuring station in the Sierra has lost more than a foot of snow in the 10 days since the heat wave kicked into full gear," SFGate reports. "A melt of this rate is a big deal any time, but in March it’s unheard of,” hydrologist Mike Hittle told the paper. 

 

It’s been a brutal month for California’s snowpack, which is now at just 25% of normal.

The snowpack is now 8% of normal in the northern Sierra, 28% of normal in the central Sierra and 44% of normal in the southern Sierra.

NASA satellite images from Feb. 22, March 6 and March 24.

[image or embed]

— Anthony Edwards (@edwardsanthonyb.bsky.social) March 25, 2026 at 3:20 PM

 

Meanwhile, War: Israel says it killed the head of Iran's navy in an airstrike. After Tehran rejected Trump's 15-point ceasefire plan the president is now publicly threatening Tehran in Truth Social posts to "get serious soon" on these negotiations. He also claims Iran is "begging for a deal." Strange tactic, but hey, he’s the artist of the deal.

Olympics Says It’s Banning Trans Women Athletes: The International Olympic Committee announced a ban on transgender women from participating in women’s sporting events at the 2028 Summer Olympics in Los Angeles. Trans women athletes haven’t been competing in the Olympics. So, what’s this really about? The committee has also banned cis or intersex women with male testosterone levels or male chromosomes. Any athlete who wants to compete in a female sport will have to prove their biological gender with a cheek swab or saliva test. No one wins when women and womanhood are scrutinized like this. 

We're all trying to find the guy who did this: Harry Wait, a Wisconsin man who believes the 2020 election was stolen and leads a group that decries election fraud, was convicted of election fraud. Wait was found guilty of two misdemeanor election fraud charges and one felony identity theft charge for requesting the absentee ballots of Republican state Assembly Speaker Robin Vos and Democratic Racine Mayor Cory Mason without their consent. Of the charges, Wait said, "You got to expect to pay some costs sometimes when you are trying to work for the public good." He also said he "would do it again." 

It Was Opening Day: It's officially baseball season. Now... was this symbolism?

 

it's so cool that they exploded the US flag at the MLB season opener. baseball getting woker.

[image or embed]

— tuck woodstock (@tuck.bsky.social) March 25, 2026 at 5:27 PM

 

Today Is The Mariners' Opening Day: See you all at T-Mobile Park. Here's this to get you into the mood. 

15:35

The forge is our new home (Fedora Community Blog) [LWN.net]

Tomáš Hrčka has announced that the Forgejo-based Fedora Forge is now a fully operational collaborative-development platform; it is ready for use by the larger Fedora community, which means the homegrown Pagure platform's days are numbered:

While pagure.io has been a vital part of our community for many years, the time has come to retire our homegrown forge and transition to this powerful new tool.

The final cutover is planned for Flock to Fedora 2026. We strongly encourage teams to migrate their projects well before the conference to ensure a smooth transition. The pagure.io migration is only the first step in a broader infrastructure modernization effort. By the 2027 Fedora 46 release, we plan to retire all remaining Pagure instances across the project, including the package source repositories on src.fedoraproject.org. Getting familiar with Fedora Forge now will help ensure your team is ready as the rest of the Fedora ecosystem transitions.

There is a migration guide for Fedora community members that own projects hosted on Pagure and need to move to the new forge.

Well, It Finally Happened [Whatever]

I always wondered which of my books would be the first to be banned, and now I know:

Via this post from @thebloggess.bsky.social, I learn that my book Lock In has been banned from schools in New Braunfels, TX. There is irony here in that Lock In won the Alex Award from the ALA, given for "adult books suitable for teens." thebloggess.com/2026/03/25/t…

John Scalzi (@scalzi.com) 2026-03-26T08:09:00.591Z

I'm on a cruise so I'll have more to say about it at a later time, but the short version of this is, of course, fuck censorship, and also, my books will outlast these motherfuckers, we'll see them (politically) dead and in the ground and my books will be there to piss on their (metaphorical) graves.

John Scalzi (@scalzi.com) 2026-03-26T08:09:00.592Z

As noted above, I’ll likely have more to say about this when I get back the JoCo Cruise, but for now, two points, which I may expand upon in a later post:

1. On a personal level, I don’t expect this ban to move the needle much, positively or negatively, for sales of Lock In, which has been out for a dozen years now;

2. Please refrain from exclaiming “Having your book banned just means you’ll sell more!” or something similar in the comments. One, it’s absolutely not true for the vast majority of books that get banned; the usual result is a net loss for authors and publishers. Two, this is sort of comment that, however well-intentioned to be supportive, minimizes the seriousness of book banning as an intentional policy. The busybodies banning books in New Braunfels targeted more than 1,500 books, not just mine. None of that is a thing to be happy about; there is no actual upside to book bans.

— JS

15:07

Link [Scripting News]

My linkblog was down. Thanks to Scott Hanson it's back up!

14:49

[$] Vibe-coded ext4 for OpenBSD [LWN.net]

A number of projects have been struggling with the question of which submissions created by large language models (LLMs), if any, should be accepted into their code base. This discussion has been further muddied by efforts to use LLM-driven reimplemention as a way to remove copyleft restrictions from a body of existing code, as recently happened with the Python chardet module. In this context, an attempt to introduce an LLM-generated implementation of the Linux ext4 filesystem into OpenBSD was always going to create some fireworks, but that project has its own, clearly defined reasons for looking askance at such submissions.

13:35

Link [Scripting News]

My linkblog is down. Still diggin!

Link [Scripting News]

If you're using FeedLand and running a WordPress blog, you can install a blogroll just like the one I have at scripting.com or blogroll.social.

13:28

1341: Also Fully Biodegradable [Order of the Stick]

http://www.giantitp.com/comics/oots1341.html

13:21

Security updates for Thursday [LWN.net]

Security updates have been issued by Debian (awstats, firefox-esr, and nss), Fedora (chromium, dotnet10.0, dotnet8.0, dotnet9.0, freerdp, and wireshark), Mageia (graphicsmagick and xen), Oracle (mysql:8.4 and nginx), Red Hat (podman), Slackware (bind and tigervnc), SUSE (azure-storage-azcopy, firefox-esr, giflib, glances-common, govulncheck-vulndb, grafana, kernel, libpng16, libsoup, mumble, net-snmp, perl-Crypt-URandom, pgvector-devel, pnpm, postgresql17, Prometheus, protobuf, python-cbor2, python-Jinja2, python-simpleeval, python311-dynaconf, python311-pydicom, python313-PyMuPDF, salt, snpguest, systemd, and vim), and Ubuntu (bind9, linux-azure, linux-azure, linux-azure-6.17, linux-azure-6.8, and mbedtls).

12:49

The Missing Layer in Agentic AI [Radar]

The day two problem

Imagine you deploy an autonomous AI agent to production. Day one is a success: The demos are fantastic; the reasoning is sharp. But before handing over real authority, uncomfortable questions emerge.

What happens when the agent misinterprets a locale-specific decimal separator, turning a position of 15.500 ETH (15 and a half) into an order for 15,500 ETH (15 thousand) on leverage? What if a dropped connection leaves it looping on stale state, draining your LLM request quota in minutes?

What if it makes a perfect decision, but the market moves just before execution? What if it hallucinates a parameter like force_execution=True—do you sanitize it or crash downstream? And can it reliably ignore a prompt injection buried in a web page?

Finally, if an API call times out without acknowledgment, do you retry and risk duplicating a $50K transaction, or drop it?

When these scenarios occur, megabytes of prompt logs won’t explain the failure. And adding “please be careful” to the system prompt acts as a superstition, not an engineering control.

Why a smarter model is not the answer

I encountered these failure modes firsthand while building an autonomous system for live financial markets. It became clear that these were not model failures but execution boundary failures. While RL-based fine-tuning can improve reasoning quality, it cannot solve infrastructure realities like network timeouts, race conditions, or dropped connections.

The real issues are architectural gaps: contract violations, data integrity issues, context staleness, decision-execution gaps, and network unreliability.

These are infrastructure problems, not intelligence problems.

While LLMs excel at orchestration, they lack the “kernel boundary” needed to enforce state integrity, idempotency, and transactional safety where decisions meet the real world.

An architectural pattern: The Decision Intelligence Runtime

Consider modern operating system design. OS architectures separate “user space” (unprivileged computation) from “kernel space” (privileged state modification). Processes in user space can perform complex operations and request actions but cannot directly modify system state. The kernel validates every request deterministically before allowing side effects.

AI agents need the same structure. The agent interprets context and proposes intent, but the actual execution requires a privileged deterministic boundary. This layer, the Decision Intelligence Runtime (DIR), separates probabilistic reasoning from real-world execution.

The runtime sits between agent reasoning and external APIs, maintaining a context store, a centralized, immutable record ensuring the runtime holds the “single source of truth,” while agents operate only on temporary snapshots. It receives proposed intents, validates them against hard engineering rules, and handles execution. Ideally, an agent should never directly manage API credentials or “own” the connection to the external world, even for read-only access. Instead, the runtime should act as a proxy, providing the agent with an immutable context snapshot while keeping the actual keys in the privileged kernel space.

Figure 1: High-level design (HLD) of the Decision Intelligence RuntimeFigure 1: High-level design (HLD) of the Decision Intelligence Runtime, illustrating the separation of user space reasoning from kernel space execution

Bringing engineering rigor to probabilistic AI requires implementing five familiar architectural pillars.

Although several examples in this article use a trading simulation for concreteness, the same structure applies to healthcare workflows, logistics orchestration, and industrial control systems.

DIR versus existing approaches

The landscape of agent guardrails has expanded rapidly. Frameworks like LangChain and LangGraph operate in user space, focusing on reasoning orchestration, while tools like Anthropic’s Constitutional AI and Pydantic schemas validate outputs at inference time. DIR, by contrast, operates at the execution boundary, the kernel space, enforcing contracts, business logic, and audit trails after reasoning is complete.

Both are complementary. DIR is intended as a safety layer for mission-critical systems.

1. Policy as a claim, not a fact

In a secure system, external input is never trusted by default. The output of an AI agent is exactly that: external input. The proposed architecture treats the agent not as a trusted administrator, but as an untrusted user submitting a form. Its output is structured as a policy proposal—a claim that it wants to perform an action, not an order that it will perform it. This is the start of a Zero Trust approach to agentic actions.

Here is an example of a policy proposal from a trading agent:

proposal = PolicyProposal(
    dfid="550e8400-e29b-41d4-a716-446655440000", # Trace ID (see Sec 5)
    agent_id="crypto_position_manager_01",
    policy_kind="TAKE_PROFIT",
    params={
        "instrument": "ETH-USD",
        "quantity": 0.5,
        "execution_type": "MARKET"
    },
    reasoning="Profit target of +3.2% hit (Threshold: 3.0%). Market momentum slowing.",
    confidence_score=0.92
)

2. Responsibility contract as code

Prompts are not permissions. Just as traditional apps rely on role-based access control, agents require a strict responsibility contract residing in the deterministic runtime. This layer acts as a firewall, validating every proposal against hard engineering rules: schema, parameters, and risk limits. Crucially, this check is deterministic code, not another LLM asking, “Is this dangerous?” Whether the agent hallucinates a capability or obeys a malicious prompt injection, the runtime simply enforces the contract and rejects the invalid request.

Real-world example: A trading agent misreads a comma-separated value and attempts to execute place_order(symbol='ETH-USD', quantity=15500). This would be a catastrophic position sizing error. The contract rejects it immediately:

ERROR: Policy rejected. Proposed order value exceeds hard limit.
Request: ~40000000 USD (15500 ETH)
Limit: 50000 USD (max_order_size_usd)

The agent’s output is discarded; the human is notified. No API call, no cascading market impact.

Here is the contract that prevented this:

# agent_contract.yaml
agent_id: "crypto_position_manager_01"
role: "EXECUTOR"
mission: "Manage news-triggered ETH positions. Protect capital while seeking alpha."
version: "1.2.0"                  # Immutable versioning for audit trails
owner: "jane.doe@example.com"     # Human accountability
effective_from: "2026-02-01"

# Deterministic Boundaries (The 'Kernel Space' rules)
permissions:
  allowed_instruments: ["ETH-USD", "BTC-USD"]
  allowed_policy_types: ["TAKE_PROFIT", "CLOSE_POSITION", "REDUCE_SIZE", "HOLD"]
  max_order_size_usd: 50000.00

# Safety & Economic Triggers (Intervention Logic)
safety_rules:
  min_confidence_threshold: 0.85      # Don't act on low-certainty reasoning
  max_drawdown_limit_pct: 4.0         # Hard stop-loss enforced by Runtime
  wake_up_threshold_pnl_pct: 2.5      # Cost optimization: ignore noise
  escalate_on_uncertainty: 0.70       # If confidence < 70%, ask human

3. JIT (just-in-time) state verification

This mechanism addresses the classic race condition where the world changes between the moment you check it and the moment you act on it. When an agent begins reasoning, the runtime binds its process to a specific context snapshot. Because LLM inference takes time, the world will likely change before the decision is ready. Right before executing the API call, the runtime performs a JIT verification, comparing the live environment against the original snapshot. If the environment has shifted beyond a predefined drift envelope, the runtime aborts the execution.

Figure 2: JIT verification catches stale decisions before they reach external systems.Figure 2: JIT verification catches stale decisions before they reach external systems.

The drift envelope is configurable per context field, allowing fine-grained control over what constitutes an acceptable change:

# jit_verification.yaml
jit_verification:
  enabled: true
  
  # Maximum allowed drift per field before aborting execution
  drift_envelope:
    price_pct: 2.0           # Abort if price moved > 2%
    volume_pct: 15.0         # Abort if volume changed > 15%
    position_state: strict   # Any change = abort
  
  # Snapshot expiration
  max_context_age_seconds: 30
  
  # On drift detection
  on_drift_exceeded:
    action: "ABORT"
    notify: ["ops-channel"]
    retry_with_fresh_context: true

4. Idempotency and transactional rollback

This mechanism is designed to mitigate execution chaos and infinite retry loops. Before making any external API call, the runtime hashes the deterministic decision parameters into a unique idempotency key. If a network connection drops or an agent gets confused and attempts to execute the exact same action multiple times, the runtime catches the duplicate key at the boundary.

The key is computed as:

IdempotencyKey = SHA256(DFID + StepID + CanonicalParams)

Where DFID is the Decision Flow ID, StepID identifies the specific action within a multistep workflow, and CanonicalParams is a sorted representation of the action parameters.

Critically, the context hash (snapshot of the world state) is deliberately excluded from this key. If an agent decides to buy 10 ETH and the network fails, it might retry 10 seconds later. By then, the market price (context) has changed. If we included the context in the hash, the retry would generate a new key (SHA256(Action + NewContext)), bypassing the idempotency check and causing a duplicate order. By locking the key to the Flow ID and Intent params only, we ensure that a retry of the same logical decision is recognized as a duplicate, even if the world around it has shifted slightly.

Furthermore, when an agent makes a multistep decision, the runtime tracks each step. If one step fails, it knows how to perform a compensation transaction to roll back what was already done, instead of hoping the agent will figure it out on the fly.

A DIR does not magically provide strong consistency; it makes the consistency model explicit: where you require atomicity, where you rely on compensating transactions, and where eventual consistency is acceptable.

5. DFID: From observability to reconstruction

Distributed tracing is not a new idea. The practical gap in many agentic systems is that traces rarely capture the artifacts that matter at the execution boundary: the exact context snapshot, the contract/schema version, the validation outcome, the idempotency key, and the external receipt.

The Decision Flow ID (DFID) is intended as a reconstruction primitive—one correlation key that binds the minimum evidence needed to answer critical operational questions:

  • Why did the system execute this action? (policy proposal + validation receipt + contract/schema version)
  • Was the decision stale at execution time? (context snapshot + JIT drift report)
  • Did the system retry safely or duplicate the side effect? (idempotency key + attempt log + external acknowledgment)
  • Which authority allowed it? (agent identity + registry/contract snapshot)

In practice, this turns a postmortem from “the agent traded” into “this exact intent was accepted under these deterministic gates against this exact snapshot, and produced this external receipt.” The goal is not to claim perfect correctness; it is to make side effects explainable at the level of inputs and gates, even when the reasoning remains probabilistic.

At the hierarchical level, DFIDs form parent-child relationships. A strategic intent spawns multiple child flows. When multistep workflows fail, you reconstruct not just the failing step but the parent mandate that authorized it.

Figure 3: Hierarchical Decision Flow IDs enable full process reconstruction across multi-agent interactions.Figure 3: Hierarchical Decision Flow IDs enable full process reconstruction across multi-agent interactions.

In practice, this level of traceability is not about storing prompts—it is about storing structured decision telemetry.

In one trading simulation, each position generated a decision flow that could be queried like any other system artifact. This allowed inspection of the triggering news signal, the agent’s justification, intermediate decisions (such as stop adjustments), the final close action, and the resulting PnL, all tied to a single simulation ID. Instead of replaying conversational history, this approach reconstructed what happened at the level of state transitions and executable intents.

SELECT position_id
     , instrument
     , entry_price
     , initial_exposure
     , news_full_headline
     , news_score
     , news_justification
     , decisions_timeline
     , close_price
     , close_reason
     , pnl_percent
     , pnl_usd
  FROM position_audit_agg_v
 WHERE simulation_id = 'sim_2026-02-24T11-20-18-516762+00-00_0dc07774';
Figure 4: Example of structured decision telemetryFigure 4: Example of structured decision telemetry. Each row links context, reasoning, intermediate actions, and financial outcome for a single simulation run.

This approach is fundamentally different from prompt logging. The agent’s reasoning becomes one field among many—not the system of record. The system of record is the validated decision and its deterministic execution boundary.

From model-centric to execution-centric AI

The industry is shifting from model-centric AI, measuring success by reasoning quality alone, to execution-centric AI, where reliability and operational safety are first-class concerns.

This shift comes with trade-offs. Implementing deterministic control requires higher latency, reduced throughput, and stricter schema discipline. For simple summarization tasks, this overhead is unjustified. But for systems that move capital or control infrastructure, where a single failure outweighs any efficiency gain, these are acceptable costs. A duplicate $50K order is far more expensive than a 200 ms validation check.

This architecture is not a single software package. Much like how Model-View-Controller (MVC) is a pervasive pattern without being a single importable library, DIR is a set of engineering principles: separation of concerns, zero trust, and state determinism, applied to probabilistic agents. Treating agents as untrusted processes is not about limiting their intelligence; it is about providing the safety scaffolding required to use that intelligence in production.

As agents gain direct access to capital and infrastructure, a runtime layer will become as standard in the AI stack as a transaction manager is in banking. The question is not whether such a layer is necessary but how we choose to design it.


This article provides a high-level introduction to the Decision Intelligence Runtime and its approach to production resiliency and operational challenges. The full architectural specification, repository of context patterns, and reference implementations are available as an open source project at GitHub.

12:35

CodeSOD: Preformatted [The Daily WTF]

Amity sends us a "weird" replacement, and I regret to inform you, it's not as weird as it should be.

$body = str_replace(['<pre><code>', '</code></pre>'], ['<pre>', '</pre>'], $body);

This PHP code scans through a string containing HTML and replaces all the <pre><code>.../<code></pre> tags with just <pre></pre>. And yes, that's a weird thing to do; these mean different things, after all. pre tells us the text is preformatted and things like extra whitespace and line breaks should be respected. code tells us the text represents some sort of code. Usually, that involves respecting the formatting, but it also generally involves rendering in a monospace font.

And this touches upon one of my complaints about this very site. A complaint I don't complain about much, because I could easily fix it, and also it doesn't bother me that much, but also, I don't want to be maintaining our little homegrown CMS more than I have to, so I haven't done it.

Quite some time ago, we did a redesign here. It was fairly necessary, as the site old 100% didn't work on mobile devices. At the time, one habit was en vogue amongst web developers: clear all the formatting rules from the default browser stylesheet and replace them with your own. I can sympathize with that, I suppose. It's certainly one way to deal with cross browser rendering quirks: burn everything to the ground and build up from scratch. You'll still have cross browser quirks, but they'll all be your fault, and your fault alone. And another "quirk" that showed up in that rebuilding, and a quirk I've seen on a depressing number of other sites: make pre content be in monospace.

For some reason I don't fully understand, there was a brief period in CSS styling where people willfully collapsed the distinction between pre and code, and just turned them into the same thing. I'm admittedly a bit of a semantic snob (HTML is a DATA format not a PRESENTATION format, it's still SGML to me).

In any case, this doesn't impact you, our dear readers, who instead get a sometimes confounding Markdown comment box with bad editing support. But I post articles here in pure HTML, and while I rarely need a pre tag, every once in awhile, the default site stylesheet throws me off.

[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

The PAX East Show Store Is Open! [Penny Arcade]

This year's theme park has so many twists and turns, so many nice little Touches, that it would be tricky to call each of them out.  I merely saw how Gavin had done the S in "PAX East" on a jacket and had to sit down immediately.  First I'll show off everything you can get on our Official PAX Shop, from the comfort of your own phone:

11:49

GE SmartHQ™ Management [Planet GNU]

https://www.smart ... com/lp/management

This offering sure looks like GNU remotecontrol. Perhaps it is our code.

11:07

As the US Midterms Approach, AI Is Going to Emerge as a Key Issue Concerning Voters [Schneier on Security]

In December, the Trump administration signed an executive order that neutered states’ ability to regulate AI by ordering his administration to both sue and withhold funds from states that try to do so. This action pointedly supported industry lobbyists keen to avoid any constraints and consequences on their deployment of AI, while undermining the efforts of consumers, advocates, and industry associations concerned about AI’s harms who have spent years pushing for state regulation.

Trump’s actions have clarified the ideological alignments around AI within America’s electoral factions. They set down lines on a new playing field for the midterm elections, prompting members of his party, the opposition, and all of us to consider where we stand in the debate over how and where to let AI transform our lives.

In a May 2025 survey of likely voters nationwide, more than 70% favored state and federal regulators having a hand in AI policy. A December 2025 poll by Navigator Research found similar results, with a massive net +48% favorability for more AI regulation. Yet despite the overwhelming preference of both voters and his party’s elected leaders—Congress was essentially unanimous in defeating a previous state AI regulation moratorium—Trump has delivered on a key priority of the industry. The order explicitly challenges the will of voters across blue and red states, from California to South Dakota, scrambling political positions around the technology and setting up a new ideological battleground in the upcoming race for Congress.

There are a number of ways that candidates and parties may try to capitalize on this emerging wedge issue before the midterms.

In 2025, much of the popular debate around AI was cast in terms of humans versus machines. Advances in AI and the companies it is associated with, it is said, come at the expense of humans. A new model release with greater capabilities for writing, teaching, or coding means more people in those disciplines losing their jobs.

This is a humanist debate. Making us talk to an AI customer-support agent is an affront to our dignity. Using AI to help generate media sacrifices authenticity. AI chatbots that persuade and manipulate assault our liberty. There is philosophical merit to these arguments, and yet they seem to have limited political salience.

Populism versus institutionalism is a better way to frame this debate in the context of US politics. The MAGA movement is widely understood to be a realignment of American party politics to ally the Republican party with populism, and the Democratic party with defenders of traditional institutions of American government and their democratic norms.

This frame is shattered by Trump’s AI order, which unabashedly serves economic elites at the expense of populist consumer protections. It is part of an ongoing courting process between MAGA and big tech, where the Trump political project sacrifices the interests of consumers and its populist credentials as it cozies up to tech moguls.

We are starting to see populist resistance to this government/big tech alignment emerge on the local scale. People in Maryland, Arizona, North Carolina, Michigan and many other states are vigorously opposing AI datacenters in their communities, based on environmental and energy-affordability impacts. These centers of opposition are politically diverse; both progressives and Trump-supporting voters are turning out in force, influencing their local elected officials to resist datacenter development.

This opposition to the physical infrastructure of corporate AI is so far staying local, but it may yet translate into a national and politically aligned movement that could divide the MAGA coalition.

Any policy discussions about AI should include the individual harms associated with job loss, as employers seek to replace laborers with machines. It should also include the systemic economic risks associated with concentrated and supercharged AI investment, the democratic risks associated with the increased power in monopolistic and politically influential tech companies, and the degradation of civic functions like journalism and education by AI. In order for our free market to function in the public interest, the companies amassing wealth and profiting from AI must be forced to take ownership of, and internalize, these costs.

The political salience of AI will grow to meet the staggering scale of financial investment and societal impact it is already commanding. There is an opportunity for enterprising candidates, of either political party, to take the mantle of opposing AI-linked harms in the midterm elections.

Political solutions start with organizing, and broadening the base of political engagement around these issues beyond the locally salient topic of datacenters. Movement leaders and elected officials in states that have taken action on AI regulation should mobilize around the blatant industry capture, wealth extraction, and corporate favoritism reflected in the Trump executive order. AI is no longer just a policy issue for governments to discuss: it is a political issue that voters must decide on and demand accountability on.

10:35

Grrl Power #1446 – Tropical storm Leander [Grrl Power]

Working out is hard when you can lift the entire gym.

The bottom-left panel is supposed to be a hypothetical Everglades post-maximum Maxima event. I assumed Willy Crocman would make that obvious-ish, but the background could also be interpreted as Monument Valley after being pounded to sand. There’s not a whole lot of crocodiles in Utah, though, generally speaking.

Maxima’s outfit has to basically be printed onto her skin, and while makeup and grease paint don’t stick to her, it’s not like nothing at all does. A wacky wall walker would probably stick to her well enough. Probably one of those rubber stickers that are used on windows. Those might use the same technology, come to think of it. Cora and Galen found some material that basically won’t come off her skin if she’s exerting even the smallest amount of “personal force field” to envelop the stuff, and embedded thousands of micro holo projectors in it. The projection overlaps, so she’ll still have coverage if she loses small patches during the fight, and if large enough bare patches cause her disguise to start to fail, the stuff will slither around and attempt to close the gaps, but that’s dangerous during a fight because it can’t migrate anywhere while her force field is holding it in place. The plan at that point is for her to shift “Armor” into “Speed,” and keep out of danger for the 10-15 seconds it would take her smart cat suit to rearrange itself.

It is conceivable then, that if enough of the outfit was damaged all at once, she could find herself on Space-TV in front of a trillion viewers wearing nothing but pasties. But that’s a risk any superhero or heroine takes when they get into high-powered fights in front of a bank, and they are tougher than their own clothes.


Ah! I thought I had more time till March. I’m bad at looking at dates apparently.

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.

09:21

The end of the content shortage [Seth's Blog]

You can be fashionable without reading Vogue. You can be informed without watching the nightly news. You can be smart about science without going to MIT. It’s possible to be a great chef without buying a cookbook. In fact, you can probably thrive without reading this blog. There are millions of songs on Spotify that have only been listened to a few times each.

Not only are more humans publishing more often on more topics, but we’ve built LLMs that are always ready to create even more content, on demand, for an audience of one.

For generations, content has created the demand for more content. A few movies increased our desire to watch more movies. AM radio created the demand for FM, which sold more records, and then Napster magnified our desire for even more music.

Until we hit the wall of enough.

The ennui of infinite content is reversing our spiraling desire for more of it.

05:00

Urgent: Speaking engagements, Europe [Richard Stallman's Political Notes]

I expect to have a trip to Europe in May - June. The start and end dates remain to be decided.

If you would like to invite me to speak during that trip, please write to me now so we can start discussing it. Write to `-invitation' following my three-letter username.

Kennedy Center closing down for two years [Richard Stallman's Political Notes]

The board of the Kennedy Center in Washington DC, newly altered by the saboteur in chief, voted to close down for two years of "renovations".

I can imagine what the building will look like after that remodeling: every 20 feet along any wall there will be a molding depicting his face. It will be necessary to spend more money to undo that.

"Emergency Order" to restart leaky oil pipeline [Richard Stallman's Political Notes]

California law shut down a leaky, polluting pipeline under the Pacific Ocean from Santa Barbara, after it spilled a lot of oil on a beach. so the oil spiller in chief gave the pipeline's owner, as a favor, an "emergency order" to restart it immediately.

California and the federal government continue legal action over whether the pipeline will be allowed to operate. What is clear is that having one more oil pipeline operating is not overall a benefit for the world.

Google dis-service offering online medical advice deactivated [Richard Stallman's Political Notes]

Google has deactivated an online dis-service that until recently offered medical advice based on applying Pretend Intelligence to what users with no medical training said.

This may have been the wise course, since Pretend Intelligence does not actually understand the text it inputs or outputs.

Criticism of streaming platforms in mainstream press [Richard Stallman's Political Notes]

In the mainstream press, even criticism of streaming platforms takes for granted that they are entitled to the power to control what you can do with a recording, and thus reinforces that assumption. Here's an example.

Once you recognize that that power is based on Digital Restrictions Management, which means using nonfree software to control what users can and can't do, you can resist that implicit argument in favor of subjugating you.

Eight protesters in Texas convicted [Richard Stallman's Political Notes]

Eight protesters in Texas, allegedly supporting of the alleged organization "Antifa", were convicted of "material support for terrorism". In their trial, prosecutors cited the fact that some of them wore black clothing, used Signal, and/or carried guns.

Right-wingers also carry guns at protest, and use Signal, but somehow do not get prosecuted for that.

US Department of Health ignored administration of Title X [Richard Stallman's Political Notes]

The US Department of Health quietly ignored the administration of Title X, which provides birth control and sex-specific medical treatment for females, and the system may soon collapse.

I have a suspicion that this mysterious failure was engineered by right-wing extremist Christians who seek to force females to have babies.

Wrecker's new nominee to head of Department of Hatred and Sadism [Richard Stallman's Political Notes]

The wrecker's new nominee to head the Department of Hatred and Sadism has a pattern of speaking so as to give the false impression that he has military experience.

This deception marks him as untrustworthy, but if he were honest about his lack of military experience, that might not be crucial. The DHS does not manage soldiers, after all.

I expect that anyone nominated by the wrecker would regard it as per mission to be cruel and sadistic, and thus should not be confirmed, but that is a separate issue.

Burning Tesla "cybertrucks" locked passengers inside [Richard Stallman's Political Notes]

Tesla "cybertrucks" have locked passengers inside and burned so hot they've disintegrated drivers' bones.

States should designate vehicles which can lock passengers in as unsafe and illegal to drive on a road.

Populations of insect-eating birds in EU [Richard Stallman's Political Notes]

Just 8 years after the EU banned neonicotinoid pesticides, the populations of insect-eating birds are starting to recover.

Because these pesticides are persistent, full recovery will take a long time. I hope other human-caused effects, such as global heating, will not swamp it.

British "Reform" party trying to bribe voters [Richard Stallman's Political Notes]

The British right-wing extremist "Reform" Party is trying to bribe voters by entering them in a lottery, where winning may depend on which party you voted for, and stating which one you will vote for next time.

Zelenskyy offers Europe help in countering drone attacks [Richard Stallman's Political Notes]

Zelenskyy offers Europe Ukraine's help in countering drone attacks, whether from Russia, from Iran, or from criminal gangs.

New link [Richard Stallman's Political Notes]

Urgent: Energy market [Richard Stallman's Political Notes]

US citizens: call on Congress to investigate energy market manipulation.

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.

03:14

A Quick Check-In From Mexico [Whatever]

Oh, hello. The JoCo Cruise is in full swing now and last night we had the “land concert” in Loreto, Mexico, and while there (and in between snapping pictures of the performers), I got this photo of Krissy. She was having a good time.

And so am I! Fabulous cruise with fabulous people and it’s humming along nicely. I’ll post about it more when I’m back on land, I’m sure. In the meantime, I hope you’re all well.

— JS

02:14

[1295] The Masks Are Still Watching [Twokinds]

Comic for March 25, 2026

01:28

Job Talk [QC RSS]

Don't worry she's fine

01:21

[$] LWN.net Weekly Edition for March 26, 2026 [LWN.net]

Inside this week's LWN.net Weekly Edition:

  • Front: Security collaboration; Manjaro governance; kernel development tools; PHP licensing; kernel direct map patches; sleepable BPF.
  • Briefs: LiteLLM compromise; Tor in Taiwan; b4 v0.15.0; 24-hour sideloading; Agama 19; Firefox 149.0; GNOME 50; Krita 5.3.0 and 6.0.0; Quotes; ...
  • Announcements: Newsletters, conferences, security updates, patches, and more.

Wednesday, 25 March

23:28

so, i am having a little bit of a stand by me moment [WIL WHEATON dot NET]

There’s a lot happening in my world right now, joy and sorrow, and I don’t have the spoons to write about it. But I’m having a Stand By Me moment that I wanted to share before it passes.

Yesterday, my narration of The Body by Stephen King (the novella that was adapted into Stand By Me) was released. I have wanted to do this for years, and I can’t believe I never wrote about it here. I’ll address that in the future, because it’s a cool story. Simon and Schuster, the publisher, has been super supportive and enthusiastic about this release. They gave me a whole chapter to share, and it’s at the end of this week’s1 It’s Storytime With Wil Wheaton, available now wherever you get your podcasts.

Today, I am the subject of a truly wonderful column in the New York Times that includes interactive clips from my narration, scenes from Stand By Me, and the text of the novella. It’s a beautiful piece that genuinely surprised and delighted me. And it comes just a few days after we were the subject of this incredible essay, also in the New York Times, about our Stand By Me Live tour2.

Tonight, Jerry and Corey and I are together on Entertainment Tonight3 to talk about the movie’s theatrical re-release, which starts on Friday.

I’m glad you’re here. If you’d like to get my posts delivered to your inbox, here’s the thingy:

  1. I had to take last week off, so we are replaying one of my favorite performances, End of Play. ↩
  2. This weekend, we are in Anaheim Friday, Seattle on Saturday (see you at No Kings, Seattle), and Portland on Sunday. Tickets are still available for all three shows. ↩
  3. In Los Angeles, that’s 7:30pm on CBS, check your local listing to be sure. ↩

22:42

Page 10 [Flipside]

Page 10 is done.

Page 9 [Flipside]

Page 9 is done.

Page 8 [Flipside]

Page 8 is done.

Page 7 [Flipside]

Page 7 is done.

Page 6 [Flipside]

Page 6 is done.

Page 5 [Flipside]

Page 5 is done.

Page 4 [Flipside]

Page 4 is done.

Page 3 [Flipside]

Page 3 is done.

Page 2 [Flipside]

Page 2 is done.

Page 1 [Flipside]

Page 1 is done.

Drag Race Episode 12: Making Drag Sisters Outta Queer Cowboys [The Stranger]

It’s time for another classic Drag Race challenge: makeovers! This week, our remaining queens were tasked with turning six queer cowboys into their drag sisters. by Mike Kohfeld

It’s time for another classic Drag Race challenge: makeovers! This week, our remaining queens were tasked with turning six queer cowboys into their drag sisters.

But first, a Mini-Challenge. Dressed like he just stepped off of his Wyoming fracking ranch, RuPaul instructed the queens to “giddy-up and titty-up” for a Hot to Trot Horse Race. Seeing the queens in their quick-drag cowgirl looks made me cackle. “We are all looking like the nastiest county fair you have ever seen,” Darlene said, “and I feel right at home.”

The queens raced their way across the werkroom on inflatable horses. This was all shot in slow motion (of course) so we got to see every bounce, jiggle, and wipeout in delectable detail. In the end, Discord found herself with her second Mini-Challenge win: “In Discord math, two Minis make a Maxi.” I guess that works?

A Posse of Queer Cowboys

“Discord math” may be delusional, but she earned the privilege of pairing the queens with six strapping queer cowboys to kick off the Main Challenge.

Discord chose horse speed-rider Colton of Oklahoma for their uncanny resemblance (and matching ear gauges). She chose to do a Clueless theme for their runway, dressing as a punk mean girl while Colton, renamed Harmony Addams (get it?), was transformed into a preppy mean girl.

In the werkroom, RuPaul cautioned Discord to focus more on family resemblance rather than a cute concept, but Discord plowed ahead with her plan. It was a fun runway, but the judges didn’t buy it. Law Roach had nothing nice to say (Discord blasted his “nasty” judging style in an interview with EW) and Michelle insisted there was no family resemblance. Discord landed in the bottom two.

Juicy was paired with Greg, a Navajo gay rodeo All-Around champion. He became Loosey Love Dion—an exquisite incarnation of Celia Cruz—fulfilling Juicy’s vision of glamorous Afro-Latina twins. The judges praised the cohesion between the two looks. “Juicy turned me into this beautiful woman,” Loosey shared during the critiques, tearing up. “It’s so empowering.”

Discord partnered Jane Don’t with Terry, a retired rodeo judge from Oklahoma. Jane figured Discord gave her the eldest cowboy to trip her up. But she was undaunted, transforming Terry into her sister Maybe Don’t, dripping with vintage glamour in complementary gowns and feather boas.

The judges were split on Jane and Maybe. Guest judge actress/comedienne Danielle Pinnock exclaimed, “what episode of Parent Trap is this? Y’all are giving twins!” But Michelle insisted there was no family resemblance at all, landing Jane in her first-ever bottom placement. (The inconsistency of the judging during this episode was definitely the story editing taking a front seat as the producers build up the top four. In the words of Alyssa Edwards: rigga morris!)

          View this post on Instagram                      

A post shared by Jane Don’t (@heyjanedont)

Regardless of the judging, Terry/Maybe Don’t had the time of his life: “Looking this glamorous, I never dreamed I would look as good, or better than you, RuPaul.” At the end of the episode, there was a memoriam for Terry. Jane shared a touching statement on her Instagram. Pour one out for Terry.

Drag Family Therapy

Michael of Denver, the VP of the International Gay Rodeo Association, became Morgan Meeks under partner Myki’s tutelage. Myki ended up with an unexpected advantage, as Michael had snatched the title of Miss International Gay Rodeo in 2000. He shared that he had quit drag because of hangups around his masculinity, but the experience with Drag Race helped him reconnect with his feminine side.

The Meeks sisters fit the brief in matching gowns. While the looks were relatively simple compared to the other queens’, they looked related to one another… and related to Michelle, too: Roach called them “Nichelle and Rochelle Visage.” Myki scored the win for the episode.

Myki wasn’t the only one to get a queeny cowboy. Darlene’s partner Chris, a roper from Oklahoma, was unafraid of his feminine side. During RuPaul’s walkthrough, Chris shared that he cleaned house in stilettos (something tells me Darlene does this too. Banana!). It was a match made in gay heaven. Darlene leaned into the camp of it all, turning Chris into her trashy sister Bonnie Mitchell on a wild night out in Vegas.

Nini was paired with Jason, a Colorado steer wrestler. Jason’s story of being afraid of his own femininity after the murder his friend and fellow soldier Barry Winchell inspired Nini to help him reconnect with his queerness through drag. For their runway, Nini chose a conceptual route, dressing herself as a monarch butterfly and Jason (as Patsy Coco) as a caterpillar. “I thought the costumes were cute, but there was no family resemblance at all,” Law Roach said to the agreement of the rest of the judges.

Nini ended up in the bottom two alongside Discord—the first time for them both. They battled it out to Ariana Grande’s ballad, “we can’t be friends.” Nini had a tighter lipsync and better matched the energy of the song, keeping her in the competition.

We hated to see Discord go, but we loved to watch her Discord-walk away. After promising to see us again on All Stars (yes please), she departed Season 18 with a hearty “eat the rich, fuck the patriarchy.” This is now a Discord Addams stan account.

Of the five queens left, who will make it to the Top Four? It’ll all come down to next week’s performance challenge: Karens Gone Wild. See you then!

21:56

The reports of age verification in Linux are greatly exaggerated, for now [OSnews]

Several US states, the country of Brazil, and I’m sure other places in the world have enacted or are planning to enact laws that would place the burden of age verification of users on the shoulders of operating system makers. The legal landscape is quite fragmented at this point, and there’s no way to tell which way these laws will go, with tons of uncertainties around to whom these laws would apply, if it targets accounts for application store access or the operating system as a whole, what constitutes an operating system in the first place, and many more. Still, these laws are already forcing major players like Apple to implement sharing self-reported age brackets with application developers (at least in iOS), so there’s definitely something happening here.

In recent weeks, the open source world has also been confronted with the first consequences of these laws, as both systemd and xdg-desktop-portal have responded to operating system-level age verification laws in, among other places, California and Colorado, by adding birthDate to userdb (on systemd’s side) and developing an age verification portal (on xdg-desktop-portal’s side) for use by Flatpaks. The age verification portal would then use the value set in usrdb’s birthDate as its data source. The value in birthDate would only be modifiable by an administrator, but can be read by users, applications, and so on.

Crucially, this field is entirely optional, and distributions, desktop environments, and users are under zero obligation to use it or to enter a truthful value. In fact, contrary to countless news items and comments about these additions, nothing about this even remotely constitutes as “age verification”, as nothing – not the government, not the distribution or desktop environments, not the user – has to or even can verify anything. If these changes make it to your distribution, you don’t have to suddenly show your government ID, scan your face, or link your computer to some government-run verification service, or even enter anything anywhere in the first place.

Furthermore, while the xdg-desktop-portal’s proposals are still fluid and subject to change, consensus seems to be to only share age brackets with applications, instead of full birth dates or specific ages – assuming anything has even been entered in the birthDate field in the first place. Even if your Linux distribution and/or desktop environment implements everything needed to support these changes and expose them to you in a nice user interface, everything about it is optional and under your full control. The field is of the same type as the existing fields emailAddress, realName, and location, which are similarly entirely optional and can be left empty if desired.

Taken in isolation, then, as it currently stands, there’s really not much meat to these changes at all. The primary reason to implement these changes is to minimally comply with the new laws in California, Colorado, Brazil, and other places, and it’s understandable why the people involved would want to do so. If they do not, they could face lawsuits, fines, or worse, and I don’t know about you, but I wouldn’t want to be on the receiving end of the western world’s most incompetent justice system. Aside from that, these changes make it possible to build robust parental controls, which isn’t mentioned in the original commits to systemd, but is clearly the main focal point of xdg-desktop-portal’s proposal.

This all seems well and good, but given today’s political climate in the United States, as well as the course of history, that “as it currently stands” is doing a lot of heavy lifting. Rightfully so, a lot of people are worried about where this could lead. Sure, today these are just inconsequential, optional changes in response to what seems to be misguided legislation, but what happens once these laws are tightened, become more demanding, and start requiring a lot more than just a self-reported age bracket?

In Texas, for instance, H.B. 1131 requires any commercial entity, including websites, that contains more than one-third “sexual material harmful to minors” to implement age verification tools using things like government-issued IDs or bank transaction data to verify visitors’ ages before allowing them in. The UK has a similar law on the books, too. It’s not difficult to imagine how some other law will eventually shift this much stricter, actual age verification from websites and applications into operating systems instead. What will systemd’s and xdg-desktop-portal’s developers do, then? Will they comply as readily then as they do now?

This is a genuine worry, especially if you already belong to a group targeted by the current US administration, or were face-scanned by ICE at a protest. Large groups of especially religious extremists consider anything that’s LGBTQ+ to be “sexual material harmful to minors”, even if it’s just something normal like a gay character in a TV show. It’s not hard to imagine how age verification laws, especially if they force age verification at the operating system level, can become weaponised to target the LGBTQ+ community, other minorities, and people protesting the Trump regime.

You may think this won’t affect you, since you’re using an open source operating system like desktop Linux or one of the BSDs, and surely they are principled enough to ignore such dangerous laws and simply not comply at all, right? Sadly, here’s where the idealism and principles of the open source world are going to meet the harsh boot of reality; while open source software has a picturesque image of talented youngsters hacking away in their bedrooms, the reality is that most of the popular open source operating systems are actually hugely complex operations that require a ton of funding, and that funding is often managed by foundations. And guess where most popular Linux distributions’ and BSD variants’ foundations are located?

Developers from all over the world may contribute to Debian, but all of its financials and trademarks are managed by Software in the Public Interest, domiciled in New York State. Fedora is part of Red Hat, owned by IBM, and we all know IBM. Arch Linux’ donations are also managed by Software in the Public Interest. The Gentoo Foundation is domiciled in New Mexico. The FreeBSD Foundation is domiciled in Boulder, Colorado. The NetBSD Foundation is domiciled in Delaware. Ubuntu is a Canonical product, a company headquartered in London, UK, a country with strict age verification laws for websites and applications. Hell, even Haiku, Inc. is domiciled in New York State. I could go on, but you get the gist: all of these projects manage their donations, financials, trademarks, and related issues in the United States (or the UK for Ubuntu).

It’s relatively easy for these projects to take a principled stance against the relatively limited age verification laws that exist today, but what about if and when these laws are expanded to infiltrate the very operating systems we use? It’s easy to resist the boot when it’s pressing down on some porn website or a sex worker’s OnlyFans page, but once that same boot is pressing down on your own throat? That’s a whole different story. Will Debian, FreeBSD, or Fedora still stand their ground when the organisations managing their donations, finances, and trademarks become the target of lawsuits or the US justice system, because they refuse to implement age verification?

I sincerely doubt it.

And this is why I am of two minds about this issue. On the one hand, I fully understand that the various developers involved with these efforts want to make sure they follow the law and avoid getting fined – or worse – especially since compliance requires so little at this time. On top of that, these changes make it possible to implement a fairly robust set of parental controls in a centralised way, keeping the data involved where it makes sense, so it also brings a number of benefits for users. There really isn’t anything to worry about when looking at these changes in isolation.

On the other hand, though, I also understand the fears and worries from people who see these changes as the first capitulation to age verification, nicely making the bed for much stricter age verification laws I’m sure certain parts of the political compass are already dreaming about. With so many Linux distributions, BSD variants, and even alternative operating systems having their legal domiciles in the United States, it’s not unreasonable to assume they’re going to fold under any possible legal pressure that comes with such laws.

I’m not rushing to replace my Fedora KDE installations with something else at this point, but I’m definitely going to explore my options on at least one of my machines and go from there, so I at least won’t be caught with my pants down in the future. The world isn’t ending, age verification hasn’t come to Linux, but we’d all do well to remain skeptical and prepare for when it does make its way into our open source operating systems.

18:00

17:49

[$] Collaboration for battling security incidents [LWN.net]

The keynote for Sun Security Con 2026 (SunSecCon) was given by Farzan Karimi on how incident handling can go awry because of a lack of collaboration between the "good guys"—which stands in contrast to how attackers collaboratively operate. He provided some "war stories" where security incident handling had benefited from collaboration and others where it was hampered by its lack. SunSecCon was held in conjunction with SCALE 23x in Pasadena in early March.

17:14

Slog AM: Cesar Chavez Park to Be Renamed, the Muckleshoot Casino Sauce Machine, and Wishing Death on Your Enemies in a Christ-Like Manner [The Stranger]

The Stranger's morning news roundup. by Vivian McCall

Seattle, King County to rename Cesar Chavez Park in South Park: Since the former Mexican American labor hero allegedly sexually abused girls and women, including his fellow labor leader Dolores Huerta, this is a good idea. The sign with Chavez’s name has already come down, The Seattle Times reports.

Leaders are grappling with the Chavez allegations in the Yakima valley, where he visited many times, reports the Yakima Herald. In 1986, he spoke at Yakima Valley College and Central Washington University before a two day march focused on the plight of asparagus cutters.

ICE in the News: The King County Council voted Tuesday to ban immigration operations on certain county properties unless federal agents have a judicial warrant or court order, KUOW reports. The measure passed 7-1. Councilmember Reagan Dunn voted against. His brother in moderation Councilmember Pete Von Reichbauer was excused from the vote. The council also struck the word “alien” from its legal code. County Executive Girmay Zahilay issued an executive order directing the council to take up the legislation.

What’s more Christ-like than wishing death on your enemies? Defense Secretary Pete Hegseth’s pastor and closest spiritual advisor Brooks Potteiger said on the podcast “Reformation Red Pill” that he wants Texas Senate candidate James Talarico to die. He referred to Talarico as a “wolf,” “demon,” and a “snake.” Actually, he’s a white Christian man! No matter. “First and foremost, we pray that a man like this would be cut to the heart.”

I’d hate to be slop rn. OpenAI is shutting down it’s AI video app Sora just a few months after launch and a now-kaput $1 billion investment deal with Disney. Back in October, Sora was hailed as this next-gen product of “the threat to our shared reality” variety. But Sora hemorrhaged money. Back of the napkin math suggested the company was blowing $15 million a day on these videos, Forbes wrote in November. Even the head of Sora, Bill Peebles, said the economics were completely unsustainable. Does this mean Mickey Mouse is staying far, far away from the slop? No, they’re still going to engage with AI “to find new ways to meet fans where they are.”

Liable: After a seven-week trial, a New Mexico jury determined that Meta, which owns Facebook and Instagram and the soon-to-be-shuttered Metaverse, had harmed the mental health of children and concealed what it knew about child sexual exploitation on its social media platforms. Jurors are deliberating in a similar case in California. For its thousands of violations, Meta could pay out $375 million—less than a fifth of what prosecutors were seeking. The company is valued at $1.5 trillion, so it’s not likely to make a dent. The shareholders don’t care. Stock was up 5 percent following the verdict. As for what will change, a judge will decide.

Epic, Fail: Fortnite developer Epic Games laid off 1,000 employees on Wednesday, a significant chunk of its staff. In an open letter, CEO Tim Sweeney wrote that Fortnite engagement took a dive in 2025, and the company is now “spending significantly more than we’re making.” Sweeney did not share exact engagement numbers. But at its 2023 peak Fortnite averaged 3.1 million players a day. Last September, that number had fallen to approximately 835,000. This is nothing to floss about.

😐👍: The Pentagon will order 2,000-3,000 82nd Airborne soldiers to the Middle East to support the war in Iran. Simultaneously, the US has sent Iran a 15-point plan to end the same war. It hasn’t been made public. This morning, Iran rejected the proposal and laid out its own conditions.

Go To War, Elder Millennials: The army bumped up the max enlistment age to 42 this month, bringing the admission policy in line with most other US Military services like the Air Force, Space Force, and Coast Guard. Sure, you were never able to afford the house you always dreamed of, but Trump, in his infinite wisdom, has forged a new path for you.

Weather: Rain before 2 p.m., then a chance of thunderstorms. This will help you acclimate to the loud noises.

What Could Be Worse Than Skeletons in the Closet? While cleaning out a closet in preparation to move the Mississippi Department of Public Safety to new headquarters, workers discovered a small blue suitcase. Inside was a cache of Klu Klux Klan materials, including Klan charters, Klan robes, recruitment materials, meeting notes, and a ledger of members who paid—and didn’t pay—their dues. The department has donated the materials to the Mississippi Department of Archives and History.

“It’s more than a sauce station”: Muckleshoot Casino has a Heinz REMIX machine, a “game-changing flavor experience” that allows people to make fucked-up sauces. Tongue explorers can add up to two “flavor enhancers”— jalapeño, chipotle, buffalo, garlic, honey, or bacon—at three levels of intensity to bases of ketchup, mustard, mayonnaise, barbecue, ranch, smoked barbeque, and honey mustard. Sounds unclean.

16:28

Here We Go Again [Penny Arcade]

Ronia is, in fact, on stage jumping around going fucking crazy in Mamma Mia, which is essentially like a jazzercize class with a lyric book. Like, on some Tae Bo shit. I would last part of one song before my lungs tried to crawl out of my mouth. Gabriel was under some misconceptions regarding the production that I was happy to correct by striking him repeatedly with one of those little ice fishing bats. Did you know that those little clubs are called "priests"? Gabriel didn't know either. I made sure he understood as it was coming down.

15:35

Setting up a Tor Relay at National Taiwan Normal University (Tor Blog) [LWN.net]

The Tor Blog has an interesting article about the non-technical side of setting up a Tor Relay. It documents how a computer science student at National Taiwan Normal University worked with the university system to set up a relay and provides a template for future attempts:

In Taiwan, anonymous networks do not lack technical documentation or ideological support. The real scarcity is experience from actually working through the real institutional system once. Especially in an environment where academic networks are highly centralized and outbound connectivity is tightly controlled, distributed anonymous infrastructure like Tor Relays is inherently difficult to sustain.

This implementation at National Taiwan Normal University was not meant to provide a final answer for anonymous networks. It was a concrete attempt made within real-world institutions. It may not immediately improve the performance or security of anonymous networks, and it was not intended to become a directly reproducible standard process. What it did achieve was leaving behind a clearly visible path of practice—one that can be understood, referenced, and built upon.

14:49

LibreQoS v2.0 released [LWN.net]

Version 2.0 of the LibreQoS traffic-management and network operations platform has been released.

This release makes LibreQoS easier to operate, easier to understand, and much more useful for day-to-day network work. Now users can see more of what is happening across the network, troubleshoot subscriber issues with better tools, and work from a much stronger local WebUI.

This release includes many capabilities that reflect ideas and direction long championed by our late colleague, Dave Täht.

Dave's work helped shape the understanding of bufferbloat and the importance of latency under load across the networking community. His influence continues to guide both LibreQoS and the broader effort to improve Internet quality.

The project has also announced the release of the LibreQoS Bufferbloat Test v2, also dedicated to Täht. It runs in a user's browser to look at "latency under load, jitter, loss, and what those things mean for the kinds of traffic people actually care about: browsing, streaming, video calls, audio calls, backups, and gaming".

[$] More efficient removal of pages from the direct map [LWN.net]

The kernel's direct map provides code running in kernel mode with direct access to all physical memory installed in the system — on 64-bit systems, at least. It obviously makes life easier for kernel developers, but the direct map also brings some problems of its own, most of which are security-related. Interest in removing at least some pages from the direct map has been simmering for years; a couple of patch sets under discussion show some use cases for memory that has been removed from the direct map, and how such memory might be efficiently managed.

14:07

How can I change a dialog box’s message loop to do a Msg­Wait­For­Multiple­Objects instead of Get­Message? [The Old New Thing]

A customer wanted to know how to change a dialog box’s message loop so that it used Msg­Wait­For­Multiple­Objects instead of Get­Message. (I’m guessing that they had a handle that they wanted to wait on while the dialog was up.) The standard dialog box message loop checks only for messages, not kernel handles.

One way to do it is to replace the modal dialog box with a modeless one and run your own message loop. However, there’s a key piece missing from the do-it-yourself, which is that there is no way to know whether the dialog procedure has called End­Dialog, and if so, what result code it passed.

So maybe you’re displaying somebody else’s dialog box and therefore cannot alter the dialog procedure to set a different flag when it wants to end the dialog. What can you do to customize the dialog loop from the outside?

Dialog boxes send their owner the WM_ENTER­IDLE message when they have run out of work to do and are about to block waiting for a message. if the handler of the WM_ENTER­IDLE message returns, and there is no posted message in the queue, then the dialog box goes to sleep and waits for a message to come in.

As the name of the message suggests, one way to use the WM_ENTER­IDLE message is to handle the message by doing do background idle-time activity, and then return when there is a message for the dialog box to process. For example, maybe you want to do spell checking when the user is idle.

Another way to use the WM_ENTER­IDLE message is to take over how the dialog message loop waits for a message. You can do your own thing, and return when there is a posted message that needs processing.

So let’s try it. Just for demonstration purposes, we’ll create a waitable timer that beeps every two seconds while a common file open dialog is up.

Start with our scratch program and make these changes. Remember that error checking has been elided for expository purposes.

#include <commdlg.h>

HANDLE hTimer;

void OnChar(HWND hwnd, TCHAR ch, int cRepeat)
{
    if (ch != ' ') return;

    hTimer = CreateWaitableTimerW(nullptr, FALSE, nullptr);

    LARGE_INTEGER twoSeconds;
    twoSeconds.QuadPart = -2 * wil::filetime_duration::one_second;
    SetWaitableTimer(h, &twoSeconds, 2000, nullptr, nullptr, FALSE);

    TCHAR buffer[MAX_PATH]{};
    OPENFILENAME ofn{};
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFilter = TEXT("All Files\0*.*\0");
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = buffer;
    ofn.nMaxFile = ARRAYSIZE(buffer);
    GetOpenFileName(&ofn);

    CloseHandle(hTimer);
    hTimer = nullptr;
}

Our WM_CHAR handler ignores all characters other than the space bar. But if you press the space bar, it creates a waitable timer that triggers every two seconds, and then it displays a dialog: In this case, it’s the common file open dialog. When the dialog is finished, we close the timer since we don’t need it any more. This is just setting up the environment for our WM_ENTER­IDLE handler to do its magic.

The interesting work happens in the next function.

void OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource)
{
    if (!hTimer) return;

    MSG msg;
    while (true) {
        DWORD result = MsgWaitForMultipleObjects(1, &hTimer,
                                FALSE, INFINITE, QS_ALLINPUT);
        switch (result) {
        case WAIT_OBJECT_0:
            MessageBeep(~0);
            break;

        case WAIT_OBJECT_0 + 1:
            if (PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE)) {
                return;
            }
            break;

        default:
            FAIL_FAST_HR(E_UNEXPECTED);
        }
    }
}

When we get a WM_ENTER­IDLE message and there is no timer handle, then just return without doing anything, allowing the dialog box message loop to go idle.

But if we have a timer handle, then we use the Msg­Wait­For­Multiple­Obcjets function to wait for either the timer handle to be signaled or for a message to arrive. If it was the timer handle, we beep. If it was a message, we call Peek­Message to process any inbound Send­Message calls and see if there’s a posted message waiting. if so, then we leave it in the message queue (PM_NO­REMOVE) for the dialog loop to pick up and return. If we get any other code, then something went horrible wrong, and we fail fast.

Now we can hook these up to our window procedure.

    HANDLE_MSG(hwnd, WM_CHAR, OnChar);
    HANDLE_MSG(hwnd, WM_ENTERIDLE, OnEnterIdle);

When the common dialog box goes idle, the internal dialog message pump sends a WM_ENTER­IDLE message to the owner (which is us), and we do our handle stuff until a posted message is ready.

When you run this program, press the space bar, and you get a happy common dialog box, accompanied by some annoying beeping.

I pulled a trick here. Maybe you noticed it. We’ll look at it next time.

The post How can I change a dialog box’s message loop to do a <CODE>Msg­Wait­For­Multiple­Objects</CODE> instead of <CODE>Get­Message</CODE>? appeared first on The Old New Thing.

Five new stable kernels [LWN.net]

Greg Kroah-Hartman has announced the release of the 6.19.10, 6.18.20, 6.12.78, 6.6.130, and 6.1.167 stable kernels. Each contains important fixes throughout the tree. Users are advised to upgrade.

Security updates for Wednesday [LWN.net]

Security updates have been issued by Debian (chromium), Fedora (chromium, containernetworking-plugins, musescore, and python-multipart), Mageia (perl-XML-Parser, roundcubemail, trilead-ssh2, vim, and webkit2), Oracle (389-ds:1.4, gimp:2.8, glibc, gnutls, kernel, libarchive, nginx:1.24, opencryptoki, python3, uek-kernel, vim, yggdrasil, and yggdrasil-worker-package-manager), Red Hat (delve, osbuild-composer, and skopeo), Slackware (mozilla), SUSE (dpkg, go1.26-openssl, gstreamer-plugins-ugly, kernel, libssh, ovmf, python-pyasn1, python-tornado6, python311, salt, sqlite3, and systemd), and Ubuntu (linux-aws-fips, linux-azure, linux-azure-fips, linux-fips, linux-gcp-fips, linux-iot, linux-kvm, pjproject, and redis).

13:28

Link [Scripting News]

WordPress can now connect via MCP for both reading and writing. This sounds like a possible alternative for the wpcom api that we're building on in WordLand. Sometimes it feels like everything is being reinvented. If the world would just stand still for a moment we might be able to do some building. I wonder how the advent of AI is affecting how WordPress is being developed. I know it's changing everything here.

Link [Scripting News]

Meanwhile I have to tend to the past. I had a server go down the other day, and haven't been able to get it running again. It's a very old one, the first I used PagePark for hosting the apps. So I'd rather not have to dig into whatever it is that's keeping it from running. This morning I moved the test app for XML-RPC, betty.userland.com, to another server, so this page now works again.

Tatterdemalion [Original Fiction Archives - Reactor]

Original Fiction Dark Fantasy

Tatterdemalion

In a traditional folktale from Alak, a dreamy good-for-nothing young woman seeking excitement discovers a life of adventures may not be what she expected. Be careful what you wish for!

Illustrated by Raven Jiang

Edited by

By

Published on March 25, 2026

0 Share
An illustration of a billowing white cloth hovering above the ocean as a wave crashes against a sea stack below and lightning flashes across the night sky.

In a traditional folktale from Alak, a dreamy good-for-nothing young woman seeking excitement discovers a life of adventures may not be what she expected. Be careful what you wish for!

Novelette | 7,515 words

Introductory Note: The Deed mentioned in this story belongs to a class of magical artifacts that we find occasionally in Alak folklore and mythology. The original and most powerful of them was the Deed of Talorow, which, according to legend, was accidentally dropped by a sort of monster or demon hastily fleeing from the wrath of the gods. It was subsequently discovered by a little girl, who felt a very Alak-like disgust at the wildness and chaos of the world in her day, and who realized that the magic of the Deed would fix in their forms and roles everything that came within sight of it. The girl imagined how much more orderly and regular the world would be if only the Deed could be displayed in a sufficiently prominent place, where it could be seen by everyone, and therefore affect everything. It then occurred to her that, of course, the sky was incomparably the best place to show the Deed, for then no one could really avoid the sight of it. She wracked her brains for a way to introduce the Deed into the sky, and finally decided to thrust her head into a pond and drown herself while holding the Deed firmly in her hand. She believed that, once she died, her spirit would be free of her heavy body, and could carry the Deed aloft into the sky. And so it happened, and her spirit welded, with its own substance, the Deed to one of the stars, displaying it to all the world. As a result, what had flowed became fixed, what had improvised became standardized, and a greater orderliness and predictability flourished everywhere. So great a benefit was this to the Alak Empire that the Divine Family officially adopted the little girl, and the star was given her name, Chlawgar, which it still has today.

Alaks maintain that the world has always existed and always will; and, naturally, this goes for the Empire as well. While this idea stands at odds with the official history, which records many different accounts of the foundation of the Empire, the premise is nevertheless everywhere among them sustained. The Empire, it is at least implied, has always existed in its ideal aspects. Its tangible aspects must be realized in time by human beings. There is a belief among the Alaks in what is known as the “impossible time” that somehow preceded proper time, and the sly influence endures as a present remnant of the impossible time, accounting for the various setbacks the Empire has encountered throughout its history.  Is it surprising to read that the Deed of Talorow, that mighty ordering power, is the work of the entropic sly influence? This is not clear at all, but one might speculate that the sly influence was once considered to be more lethargic, passive, and inert than it later came to be. In any case, the Deed of Ilianeghis in this story is likewise a work of the sly influence, imbued with all of its out-of-place, chaotic, and inventive power. This explains its cursed, dangerous character.

The term “Zaman Wislin” refers both to a divinatory philosophy and to its adherents, or “mathetes.” Since it is recognized by the Predikanten, the Alaks tolerate its existence. While they are not a cult, Zaman Wislin do claim to be in a tutelary relationship with a godlike dragon called Gilshrakes who is at the center of the universe. They are commonly supposed to collect Deeds of the sort mentioned here, and might perhaps also be able to draft new Deeds themselves, which explains their role in this story.

Our narrative’s main character, Temedy, belongs to a category of personalities familiar to most Alak readers and listeners. She is the ne’er-do-well, the malcontent who joins in the work of the Empire without enthusiasm and is not at one with it in her heart, and entertains these feelings of disaffection because she is too weak and foolish to resist them. Temedy is the inadequate instrument, someone who is not sufficiently real. This type of character is always attractive and talented, the better to emphasize what a waste they make of their lives, and what a loss that is for the Empire. The story is a cautionary tale intended to help readers and listeners correctly identify this type when they encounter it, and thence to take appropriate action respecting them, but there are stories about such characters finding their full reality, for example, in confronting a challenge.

These characters are often named “Temedy” for ease of both recognition and application, since this name is not one that any real person would be given. Its etymology is obscure; it is most probably derived from the Gaboktja Ujhik word “temeschlem,” meaning tatterdemalion or guttersnipe. The title of this story reflects this preferred derivation, but there are those, including Quil Qusogh himself, who maintain that the meaning stems instead from the Lemkhitz word “demd,” meaning sickly, pasty, disorderly, or meagre.

Finally, a “soul burner” is an Alak hobgoblin, who devours the evil spirits once believed to infest the world, in order to absorb their strength and cause greater mischief.

Once upon a time there lived in the village of Sogtrul a shiftless, threadbare young woman named Temedy who was good for nothing. She worked as a copyist for the calendary, slept in a loft above the offices, and eked out a living that barely kept body and soul together. No one who looked for her, and there were not many who did, could ever find her, because she was always wandering off into the countryside. She would stray for hours among the hills, often walking all the way to the feet of the mountains. To be sure, if she weren’t expected at her desk, she would have climbed them, perhaps never to return. Her parents were dead; her only living relation was a married sister who rightly repudiated her, who had prospered her education and now lived in the great city of Sunflik, where she conducted highly important business. Temedy did not seek out her sister, but languished in hapless devotion to the idle and melancholic daydreams with which her mind busied itself during her solitary rambles. No one in Sogtrul had the least respect for her, so why should we listen to her story?

You’ll see!

For there was a day when, stumbling along at random as usual, she blundered across something strange. It was a place at the feet of the mountains, where rolling grasslands crack open in crevasses and where slender brooks fan out at intervals like lacework. There was one spot in particular where people used to cut whetstones for sharpening barber’s razors, and the heavier blocks were used to press cadavers for preservation. This was done, as you may know, by placing the corpse on a slab with a slight concavity to it, then surrounding it with blocks of ice. Another matching slab was then laid on top, and, as the ice supporting it melted, it would sink gradually down and flatten the body without crushing it to a pulp. The cadaver would keep indefinitely afterwards, like a pressed flower. Places like that attract Zaman Wislin; they come looking for ghosts, elementals of work, haunted winds, portentous lights, and, above all, archaic inscriptions, hidden texts, forbidden scrolls, to winnow the dragon-secrets of Gilshrakes from them. At one time they had a camp there, which they left for reasons as mysterious as their reasons for establishing it in the first place, and their abandoned tents, now little more than long white rags knotted firmly to their frames, were still there. No one could say why, but they had named their camp “he Cloister of Glowing Cores,” and the name endured after they were gone. Temedy had read the name many times in the records and letters of officials that she had been called upon to copy, and indeed she was so addicted to reading things not pertinent to her duties that she had sought out and studied other historical documents in crumbling district ledgers, to no better end than to appease her curiosity.

Now, as if in a dream, she saw this fabled spot with her own eyes. The rags of the ruined tents billowed in the incessant wind like water weeds in a strong current, so she could hear them flap and rustle like a great fire without heat or smoke. It was a lure too strong for her feeble willpower to resist, and she descended down to Glowing Cores, wondering if she might find some traces of the mathetes there, or other trash of former days heedlessly thrown aside and tramped down by people with better things to do.

She was just passing a small stand of trees when a hacking cough erupted somewhere nearby, and Temedy realized that she wasn’t alone. In a spasm of cowardice, her first impulse was to hide herself, and she did not resist it. Temedy scrambled back toward one of the trees and put it between herself and the direction the cough came from, then watched carefully, crouched down, not daring to breathe. A moment later she saw a figure in black walk stiffly out from behind one of the ruined tents. It was an older man, clean-shaven, in black clothes. He carried his head erect and his shoulders square, his rigid back was unnaturally straight, so that he moved a little like a puppet on a stick, turning his whole body to look this way and that. It was obvious that he was searching for something he expected to find on the ground.

Temedy didn’t want to have anything to do with this stranger, but, she would certainly be seen if she fled, and that was not something she wanted either. What she wanted was for the stranger to go away, so she could go on exploring. Instead, he came directly toward Temedy’s tree, swivelling this way and that as he continued to examine the ground, without pause. Temedy thought frantically—could she manage to creep around the tree as the man passed, or should she make a run for it? Too late! The man was already there, and saw her.

“Well, well,” the man said.

Temedy could only say “Well!” in reply.

The man had a harelip and strange, round eyes, like two circles, so Temedy could see the whites going all the way around the pupils. His black clothes were made of some rich, heavy stuff like bombazine that was all stained with salt from the man’s dried perspiration. Indeed, there was so much salt in his clothes that little puffs of it came out when he moved.

“Have you come from—far away?” the man asked. His teeth flickered as he spoke, white as chalk.

“Not . . . not very far . . .” Temedy spluttered. She didn’t like telling this man anything about herself. He dressed and acted a bit like an official, so she asked him, “Are you . . . from the calendary?”

“I’m Obelizer,” the man said, and smiled broadly without parting his lips. His voice was hoarse and low, but it was the kind of voice, Temedy knew, that could boom out deafeningly loud if necessary. “From the Shrine of Zeroes.”

That, Temedy knew, was the name of a fane where the mathetes of Zaman Wislin lived, on the mountains’ far side. You can know someone is Zaman Wislin if they have a name like that, because they leave behind their wholesome names when they become Zaman Wislin, and receive new names that reflect what they do. Every mathete will also have something wrong with them, but it won’t always be as easy to spot as that harelip, so examine every stranger you meet carefully and be suspicious of little irregularities.

“I’m uh, Temedy,” Temedy said. Of course, giving her name away was the last thing she wanted to do, but, when a name is given, a name must be returned, and Temedy was too frightened to invent one.

“Have you happened to see,” the man asked, “a wooden document case, about this large?”

His long hands drew a sort of rectangular shape in the air, to show Temedy what he meant. The flowing motion of his hands was at odds with the stony immobility of his body, so that it seemed as though they belonged to someone else, standing behind him.

Temedy shook her head.

The man lowered his hands to his sides and sniffed. He gazed at Temedy with an enigmatic expression on his face.

“It’s—a fine day,” he said at last. Only then did he look up at the sky, tipping his whole body back at the waist to do so, then returning to his former posture. You may have noticed he has a curious way of speaking too, but that was in keeping with what he did. An obelizer is someone who cuts things out of pieces of writing, and marks the cut with a little drawing of a knife to show where it happened.

“I was just going for a walk,” Temedy said.

Obelizer smiled that same close-lipped smile at her. Temedy found it hard not to stare at the man’s upper lip, joined in two halves so that it seemed as if it were expressing two different emotions at the same time.

“You seem to do quite a bit of solitary walking. That’s because you live with people who don’t understand you,” Obelizer said.

This was more than Temedy could stand.

“I ought to be going,” she said, turning away.

“I will reward you if you help me search,” Obelizer said.

Temedy stopped.

“Reward me? What with?” she asked.

Obelizer chuckled, and his shoulders jostled up and down.

“Well—with money—if you don’t mind!” he said.

When Temedy turned to face him again, Obelizer was looking toward the horizon beyond him.

“What comes from the mountains must—go to the sea,” he said. “I must bring that case to—Tulltillarna, and that is long travel from here on foot.”

Temedy had never heard of Tulltillarna, whatever that was. Perhaps you have?

“So, the sooner I find it and begin my—journey, the sooner I’ve done what I set out to do,” Obelizer went on, facing her again with a businesslike air. “Will you help me look?”

Of course, she was still frightened, still full of the desire for escape, but there was something else, perhaps in that name, Tulltillarna, and in the dreaminess in Obelizer’s eyes as his look flew away into the distance, a kind of call, evilly soft, that very gently caught her.

“I’ll help,” she said, without knowing why.

With a little shower of salt, Obelizer’s hand lifted from his side. He pointed down toward a few of the larger ruined tents that stood apart from the rest.

“Search over there,” he said, with some authority, and Temedy began moving at once, stopping only when she came near her destination. Then, not quite sure where to begin, she glanced back and saw Obelizer hadn’t moved, but stood smiling at her. He nodded at Temedy, as if to say, Go on, start looking! He must have been waiting, Temedy thought, to make sure she did what she was told, but that didn’t account for that broad split smile there on his face, did it?

Temedy began to poke around in the rags and wreckage of the tents. While she worked, she couldn’t shake the feeling that Obelizer was watching her. It made her whole back prickle, and the hair on her scalp bristle. Obelizer had gone off out of sight, toward the other group of ruined tents, but Temedy was too afraid to defy him and leave.

The sooner I get this over with the better, she thought, and she hurriedly rummaged in broken tent poles and the tumbled stones that had formed the lower foundations. She found a little heap of spent candle ends, like a pile of wan coins. There were trampled quill nibs everywhere, and the fragments of smashed ink pots still stained black. The awkward metal-and-leather contrivance she pulled out of a twist of canvas proved to be a false leg, terminating in a wooden facsimile calf and foot all painted a fanciful canary yellow color with chipped purple toenails. The foot and leg were split and badly cracked, and the metal bands in the harness had been twisted all out of shape before the rust began to bite, and she wondered at the accident that had led to its being discarded. Then, as her mind began to wander into stupid daydreams about dainty, one-legged people, her eye fell on a straight length of polished wood, dully gleaming beneath another heap of canvas and wooden rods. Sure enough, when she pulled it out, it proved to be a document case. Without thinking—and do I need to tell you what happens when you act without thinking?—she undid the hasp and peeked inside.

The case contained a single sheet of parchment, white and flat with trim edges, and adorned with characters that caught the light like silver. There were red and blue ornaments drawn into the lines of writing, which crept all over the page like snail tracks. That red was as deep as artery blood, and the blue was like the color of the sky as dusk begins over the mountains, or like the ocean is sometimes. The size of the writing varied as the lines warped across the paper, but the largest letters spanned the top of the sheet, and her eyes, all too quickly, read them. They spelled out “DEED OF ILIANEGHIS.” A fragrance like incense wafted up from the page and billowed over her face as she impulsively snapped the case shut again. Abrupt fears had beset her, and—do I need to tell you?—her heart flooded with a wild desire to possess this parchment. Hadn’t she found it, after all? But she felt, and perhaps even she knew what madness this was, that the parchment was already hers.

A quick look around told her that Obelizer was still out of sight, so she pushed the case down into her scrip. She always brought some bread rusks and a tiny pot of butter to munch on if she got hungry, and she rammed the case down under them. Then she pretended to continue the search, her mind going in a thousand different directions at once, until Obelizer appeared again by the stand of trees where they had spoken before, and beckoned.

“I found nothing,” she lied, when they were close enough to speak. She realized that her deceit would be more plausible if she could meet the man’s gaze, and when she raised her eyes, she saw that Obelizer was once again smiling his closed-lipped smile.

“Ah well,” he said. “It must have been found—already.”

He swivelled to give his surroundings one last look.

“I am sure that it is not lying around here anymore,” he added as he gave Temedy his full attention again. “Thank you for all your help.”

Temedy nodded, waved, and began to leave.

“Just a moment!” Obelizer said.

Temedy’s heart sank.

Obelizer’s hand lifted and turned palm up. Gold coins shone there.

“Your payment.”

“But … I found nothing!” Temedy said.

“But you—searched,” Obelizer said. “Work is work.”

Temedy reluctantly took the coins from the outstretched hand, which was as cold and dry as rock. As Obelizer made no further remark, but only stood there, Temedy told him goodbye and returned home. It was difficult to fight the impulse to run, and, after all, why shouldn’t she hurry? The day was drawing to a close, and she had money now. The feverish sensation of being watched chilled her as she went, although furtive glances over her shoulder failed to disclose any sight of the strange, stiff man, Obelizer. Those Zaman Wislin types always have a reason for speaking with you, you know. Well, of course he’d had a reason! He’d needed help looking for that document case! But what if there were some other reason? Something to smile about? Was Temedy carrying a curse back to the homely lanes of Sogtrul? The coins she carried, tucked into her shirt, banged heavily against her chest, and later she found they’d left a bruise there, right over her heart. Was that her liar’s mark?

But nothing mattered apart from her ferocious desire to peruse the piece of parchment that she carried, like a sort of miracle, down under her dinner in the battered, hand-me-down scrip she’d received from the village interlocutor in exchange for scorekeeping duty at the winter card games. Thoughts, visions, and feelings all boiled up and erupted so vividly she could barely see the dusty track that wound back to the village.

Temedy went directly to the loft where she slept. She decided to hide the case beneath her straw mattress and, when she knelt down, pulling the case from her scrip with many desperate looks, the gold coins Obelizer had paid her tumbled out onto the blanket. They shone there with a light of their own, three of them, big as belt buckles, and there were big crumbs of salt clinging to the letters and the sacred emblem of the termite. These she pushed into her scrip, which she tossed aside. She didn’t dare spend money—what did she accept it for? If she turned up with gold coins somewhere, what talk would there be about her? All she wanted to do anyway was pore over the Deed, but Dzudzu the gardener kept his tools and things up there and was liable to appear at any time, so that night she lay on top of the mattress on top of the case, unable to sleep.  From time to time, she fancied that the fragrance of the parchment was teasing her again, and followed her into intense dreams that left her dazed in the morning, without leaving behind even the slightest memory of what they had been.

Except perhaps for one image: three lips closed in one broad grin.

Her responsibilities the following day were unusually light. She perceived this as a stroke of luck, but how often do we mistake our bad fortune for good! Temedy thought herself lucky to have the opportunity to study the Deed in secret, with the bright sunlight to read by, in one of the many hidden places she knew outside Sogtrul. Today she picked a little wooded hollow with a pond at its bottom, where she could sit on the big rocks there and no one would see her unless they came right up to the edge of the slope. The day was brisk and the sky was filled with rushing clouds; the daylight ebbed and brightened and a little wind frisked through the grass and stirred the tops of the trees in the hollow. But, down by the water, the air was always still, the pond eerily still, still, still, still, and quiet, quiet, quiet. In such a place, as silent as a library, Temedy knew she could read carefully, without distraction—but then, when didn’t she? And so she did, while the light came and went, and the sun traversed the sky unheeded above her. You see what comes of reading things you shouldn’t?

Now I am sure you will all want to know what the Deed said, but if I recited it to you word for word, then I would be guilty of casting a spell! So, to be safe, I will only describe the document’s contents very generally. It referred to a place by the sea called Tulltillarna. She recognized that odd name; Obelizer had mentioned it. There was no doubt about it now. This was the very parchment he had been looking for. And, like any Deed, this one conferred a kind of ownership, and certain rights, to the holder.

To the holder! Why, wasn’t she the holder? But then, was mere physical possession of the document sufficient to grant her the right to the rights it granted? Did she have the right to be granted rights? If she were to come forward and exhibit this Deed—and who to, by the way—would it be snatched indignantly from her? Or—stunning thought—would the stony indifference of the official face melt into a kind of ritual deference?

When dusk welled up from the water and began to fill the hollow, Temedy was lying on her back, draped across the rock, staring up at the sky without seeing it. The Deed, restored to its protective case, she pressed to her chest with both arms. Temedy didn’t know if she were dreaming or awake. She rose numbly and began making her desultory way back to Sogtrul, barely recollecting herself enough to stow the document case back out of sight in her scrip again. This daze did not fade; she was as numb as a sleepwalker, so that even her employer began to worry about her.

Perhaps that idiot’s mind has finally gone altogether, he thought. Please, not now. It means a consultation with the Controller and an arrest. Oh, Divine Family, don’t add that to my troubles!

He needn’t have worried, however. It was becoming more and more clear to Temedy that she had to find Tulltillarna, to see just what it all meant, or some of what it all meant, or if any of it meant anything—she didn’t fail to realize that the parchment was old, that other arrangements might have been made in its absence that would prevent her from realizing its promises. But to ignore it, that she had not the strength to do. She had dreamt again and again of that closed three-lipped grin, and she knew what it meant. It meant something ominous, which did not fail to include an acknowledgement that, having plainly grasped that omen for what it was, she could never reject the Deed. She would go toward that smiling promise full of dread, not so much for what she thought might happen—whatever that would be, it would be bad, she knew that—but that it waited in particular for her, like nothing else in her life, and she had to see it for herself.

You have to feel a little sorry for her, don’t you? Surely, if there had been those around her who cared more for the stability and regularity of things, they would have risen above their disgust for Temedy’s worthlessness and seen the danger that she posed. A timely intervention now, just as she went about surreptitiously gathering what she needed for her journey to the sea, in search of a chimera called Tulltillarna, and under the spell of an evil document, would have fended off . . . Well, I’ll show you.

A woman travelling alone under the best of circumstances will go in fear, and Temedy, bearing as she did a treasure that had quickly become more important to her than her own life, and weak in her mind, went in mortal terror with every step. But go, she went! The impetuous zeal of her own fantasies swept her from the outskirts of Sogtrul unseen in the dim, predawn hours, and carried her down the arduous, rolling way into the land of the Nemosems, and toward the sea beyond. Her blazing eyes rolled in their sockets without ceasing, looking everywhere for the sight of another traveller, and when she spotted people toiling along the road, on foot or in a cart, in a group or alone, she left it at once and concealed herself until they passed, or struck out through the trees or clambering over the rocks, always making her way with pain toward the coast. For three days and nights she walked, not sleeping, barely pausing to make a wretched meal of the meager provisions she had managed to bring with her. The three gold coins Obelizer had given her were concealed in a little bundle she had tied to a cord around her neck, and the bundle hung down inside her shirt, slamming into her chest with every step, darkening the bruise over her heart. She hadn’t dared to spend them, but brought them with her because she wasn’t sure she would ever return to Sogtrul, and believed in their protective power as if they were a magic talisman. That gold would help her survive, she thought, if she needed help. But so afraid was she of being overtaken in the dark, and so wild were her thoughts with fantasies of what she might find, like waking dreams that made it hard to see the actual world around her, she couldn’t sleep, or even rest, but dragged herself three days and nights to the sea.

When she first caught sight of it, she stood stock-still for a long time. She had never seen the ocean before, you know. What a sight! Blue, blue, blue, document blue, and wide, wide, wide as the sky. It was like another sky, lying flat on the land, looking up at its paler reflection in the air. It was placid and windy, and the air was flying with salt. Great white birds were there, laughing at her as they sailed effortlessly around and around in circles of their own. She had found the sea. Now, to find Tulltillarna!

A cliff split the road into two turnings that ran parallel to the shore. Not knowing which way to go, and being assured that she was completely alone, Temedy pulled out one of the great golden coins Obelizer had given her.

“Heads left, tails right!”

The coin landed head up, the termite glinted and flared like a firework in the wind-whipped sunlight. She retrieved it, and then took the left turning and walked along the top of the cliff, a white track in green grass overlooking a tan beach with a blue sea and white froth, a pale blue sky and pale white clouds. The road fell and rose again, and, when she had come to the next high point, she saw before her another road coming from the direction of the mountains, almost exactly like the one she had just quit, but with one important difference—a signpost. Temedy hurried down to read it, and her heart bounded in her chest when she made out the faded letters that spelled tulltillarna on a pitted stone arm that pointed further down the coast. With luck—with luck, she thought!—she would see it soon, perhaps from the next rise, and she hadn’t had to ask a soul! That part of the coast seemed deserted, and the borders of the road were encroaching back on it.

Temedy saw no sign of Tulltillarna when she reached the next high point, nor the next, but then, as she came within view of the land beyond the third high point, she thought she might have caught a glimpse of a gaunt spire, a plume of smoke, or a banner flapping, somewhere beyond, but though the day was clear, her vision was hazy and uncertain from fatigue and want of food, so she couldn’t quite be sure. She pressed on. With a near desperate longing she now went toward the next prominence, which would tell her if that fleeting impression had been a vision or real.

What lay before her, when she reached that place, was a short green slope that levelled off to form a vast natural shelf, a flat space sheltered by rising ground. Where the green ended, the white sand began and slid down into the sea. The cliffs subsided here, so that it was possible to walk all the way down to the breakers. As Temedy advanced to get a better look, her foot struck against a great bronze marker, evidently welded to the exposed rock. There was a corroded square hole in the center, into which, she thought, a signpost might once have been fitted, and there was, too, etched into the bronze, a curious mark: a diamond with horned stems protruding from its four corners—the kaikalak, symbol of Zaman Wislin. This discovery prompted her to look again, and now she saw low angles in the earth of that flat space, and lines, and realized they were what remained of the foundations of buildings, walls, and streets. Then she knew she had found Tulltillarna, that her arduous journey all the way from the distant mountains to the sea had been for nothing, that there was no one left here to receive her or recognize the Deed of Ilianeghis. Temedy fell where she stood, wept and wailed aloud, lying across the heated bronze of the defaced waymark.

When she had recovered sufficiently to take stock of her situation, she was too indifferent now to her own fate to give it much thought. She continued down the path, which drove right through what must once have been the narrow, winding main way of Tulltillarna, and so on down the coast. She left the confines of the town that had once been there. As the sky darkened, and the wind of the sea began to bite, she noticed a tumbledown cottage not far from the road, and approached it. As she drew near, she saw no sign of life, no smoke, no light. The place was overgrown with flowering vines, and there were a few stunted, gnarled trees keeping it company; but there were crabapples on those trees, and, at sight of them, Temedy’s hunger got the better of her. She staggered to the nearest tree and began picking and eating the fruit, which was ripe enough, if tart.  As she restored herself with the crabapples, she studied the house with better attention. The door was closed, but not fastened. She called quietly, knocked quietly, tried peering through the shutters—nothing.

When night fell, Temedy was sitting inside the cottage by the hearth, warming herself with the fire she had managed to light. There was some tinder and a little wood left, grey and bone dry, a flint to strike sparks with, and the chimney still drew. The wind whistled around the stone walls all night long, and Temedy heaped up rags she found and made a sort of nest by the tiny fire. She lay there, shivering with cold and misery, but grateful for the shelter she had found.

Round about, from farm to farm, and through Sluich Temnook, a tiny hamlet that was the only village on this part of the coast, Temedy went, running other people’s errands, helping people with their chores. She made enough to keep herself alive, and then hastened back to the cottage she had come to think of as her own, because it was the repository of the Deed, whose magic lit up her face every solitary night, and whose disjointed words fell into her dreams as randomly as rain.

One morning came, as it must, when she remembered her dream in waking life, which you must be very careful about. In her dream, she had been lying on her rag bed by the hearth. The fire was completely dead, but there was a kind of eerie light outside in the darkness that she was too weak to ignore. There in the sky, the moon hung new, a great black ball that hovered in the starry blue. It seemed to watch her, she thought she heard it breathe, and don’t you know the sly influence is greatly encouraged whenever the moon evilly veils its face altogether, and hides itself? In the darkness and stillness, for there was no wind, and the waves below did not stir, but lay flat and entranced like the grass and the branches of the crabapples, there was a wrong sort of light that shone down on her, and she thought of Tulltillarna—what would it look like now?

Well, of course, it looked the same way it always had. There below her, as she stood again by the bronze marker, were the grass, the lines and angles. In her hand, she found the document case. She opened it. The Deed of Ilianeghis shone there like a lit windowpane in her hand. She began at once to read the words aloud, like an incantation. She read and read and read, going back to the top of the page whenever she reached the bottom, but without ever finding the end, and the more she read, the more there was to read. This is the sign that the voice you hear belongs to the sly influence—never listen to it. Temedy knew this, but perhaps, in her foolish excitement, she forgot. The words rose up before her. They quit the page and floated up before her eyes. She was reading the Deed of Ilianeghis without looking at it. She was reading it everywhere. Even when she shut her eyes, there were the words, most distinct of all! Temedy opened her eyes. The new moon hung before her in the sky and the silence like an uncreated world waiting to be born.

She began to speak. Speech makes things real. She saw a wall in her mind. She spoke it, and it was there! She saw a street. She spoke it, and it was there! She saw a whole town before her. She spoke it, and it was there! She saw people in the street. She spoke them, and they were there! Tulltillarna . . .

Temedy sat for a long time after awakening from this dream, panting with fever. Everywhere she saw the needle-like spires, the winding ways, the windows aglow with amber light that spilled into window boxes overflowing with clustered, aromatic flowers, and there were wind-whipped pennants and radiant figures who moved gracefully in the shadows or stood with stolid dignity on the ramparts. She heard a stately sound of bells and a murmur of curious words. When she could collect herself, she went to see Tulltillarna again, and it was once again the level zone of green grass, lines, and angles, the traces only of what had been. And so she brought out the Deed of Ilianeghis and began to read it aloud, this time by daylight. She read and read, starting over at the top of the page whenever she reached the bottom, and she tasted her own blood, and her arms and legs went cold and numb, and her head grew at first light, and then heavy, throbbing, and painful, but the words kept marching out of her mouth, even as her vision faded, and the pain in her head became so terrible that she felt as though huge hands were tearing it in half.

A shepherd passing that way with his flock later in the day saw what he at first took for a heap of rags, oddly gathered there up by the old bronze marker. He had to draw very near before he saw that there were feet and hands emerging from it, and fine old parchment lying nearby in a wooden document case. But the woman lying there was dead, and a broad red band of blood streaked the grassy slope from her body, extending so far that it ended by touching the foundations of the wall that once had encircled Tulltillarna. All the blood in her body must have soaked into that ground, there was so much. The shepherd, without thinking, thought to turn the body over, and see who it might be. It was only then that he realized her head was gone, nor was there any sign of it. And when the authorities came from Sluich Temnook, they said at once that her head had pulled itself from her body, that the corpse was haunted and must be burned and the ashes scattered. This was done on the day, and the streak of blood was salted. The Deed of Ilianeghis was likewise cast into the flames, but would not burn. So, it was sealed in a lead casket and flung into the ocean instead. The authorities wisely forbade everyone to approach or disturb Tulltillarna, surrounding it with warning markers. Correspondence with the regional advisory committee was initiated, to see if steps should be taken to bury, destroy, or exorcise the site of the old town.

You may be inclined to feel a little sorry for Temedy—but the story is not over!

No, because, for one thing, that red streak never faded, and the grass never covered it. In fact, that red tint began to seep into the stone foundation of the wall. Passersby, who, of course, did not disobey the warning markers, could not have known this, but official surveyors were given limited permission to enter the area, and their reports made the rounds, the way these stories always do. But then there were others who, hurrying past the boundaries on weirdly still days, or after sundown, overheard a solitary voice raised in song somewhere within the cordon. The song went:

I’m all rips and rags, I hang in shreds,

Salt on my tail, and cracks in my head,

I’ve got a hunger that can’t be fed,

Salt on my tail, and cracks in my head,

There’s not one day I don’t wake up dead,

Salt on my tail, and cracks in my head.

There were times when this song, or at least the echo of its melody, could be heard here and there in the lonelier places along that part of the coast. Solitary travellers, shepherds, and circuit riders reported sightings of a ragged woman rambling on the cliffs, singing to herself, and those who ventured nearer said that what had, from a distance, appeared to be long flowing locks of hair, were only rags that billowed and flapped in the incessant wind like water weeds in a strong current.

A traveller who accosted her found himself confronted by a face of crumpled rags, with a torn mouth and torn eyes, and she asked him what he wanted, and the voice came not from the bundle atop her neck, but from the bulging satchel she carried. He said she held out a long skinny hand and offered him three huge gold coins, with crumbs of salt clinging to them, if he would guide her into town, and he ran from her half mad with fright. Others had similar encounters, and one young girl who met her on the shore was so terrified that she fell into a brain fever that nearly killed her, and permanently robbed her of her sight. She raved that she had seen the ragged woman walk up out of a shadow on the ground like someone coming up the stairs from a cellar.  As she fled from the apparition, the girl threw a look back over her shoulder and saw her, and behind her, a mountain stood where the ocean should be.

The regional officials posted to the canton received word from the land of the Nemosems that a sort of evil spirit was afflicting Sluich Temnook, that it crept into people’s houses at night and devoured all their food, that it crept into people’s barns and devoured every last grain of barley, every last onion, whole wheels of cheese. Worst of all, this spirit seemed to have a special preference for the taste of gold, for she had been seen guzzling coins from the town coffers, and no hiding place seemed proof against her, because she could smell the gold wherever it was, and now, they said, her rag mouth shone, all smeared inside with gold.

“When you try to catch her,” they said, “she just turns into a faded grey rag and flutters away in the wind, back to Tulltillarna where no one can follow her, because it isn’t there.”

And so Sluich Temnook declined, and the people moved away, and no word came from the regional council because the messages had never reached them, and the land around became abandoned and desolate, because no one could keep anything they made there, and no one could catch the raggedy ghost who sang:

I’m all rips and rags, I hang in shreds,

Salt on my tail, and cracks in my head,

I’ve got a hunger that can’t be fed,

Salt on my tail, and cracks in my head,

I’ll eat all your gold, and all your bread,

Salt on my tail, and cracks in my head,

Here’s where I live, and here’s where I’m dead,

Salt on my tail, and cracks in my head . . .

So if you hear the tatterdemalion singing, you don’t stay to satisfy your curiosity but leave as you came, without so much as a glance over your shoulder as you go. Throw down your bread or your gold and leave it to her, if you don’t want a fever, if you want to keep your sight. And if you don’t want to become a tatterdemalion yourself, remember how she got that way!

“Tatterdemalion” copyright © 2026 by Michael Cisco
Art copyright © 2026 by Raven Jiang

Buy the Book

An illustration of a billowing white cloth hovering above the ocean as a wave crashes against a sea stack below and lightning flashes across the night sky.
--> An illustration of a billowing white cloth hovering above the ocean as a wave crashes against a sea stack below and lightning flashes across the night sky.

Tatterdemalion

Michael Cisco

The post Tatterdemalion appeared first on Reactor.

11:56

Spotting and Avoiding ROT in Your Agentic AI [Radar]

The following article originally appeared on Q McCallum’s blog and is being republished here with the author’s permission.

Generative AI agents and rogue traders pose similar insider threats to their employers.

Specifically, we can expect companies to deploy agentic AI with broad reach and insufficient oversight. That creates the conditions for a particular flavor of long-running problem, which in turn creates a novel risk exposure for both the companies in question and for anyone doing business with them. The bot and the rogue trader are able to inflict sizable, sometimes existential, damage to the firms that employ them.

The key difference is the scope: Rogue traders operate in investment banks, while agentic AI will be deployed to a wider array of companies and industry verticals. Agentic AI may therefore create a greater number of problems than rogue traders and put a greater amount of capital at risk.

I’m naming this risk exposure ROT—Rogue Operator Threat—and this document is a brief explainer on what it is and how to address it.

(I almost called it RAT, with the A for “agentic,” but then realized that it would apply to any kind of automated system. So I broadened the scope to “operator.”)

To set the stage, let’s take a trip to the trading floor:

Understanding the rogue trader

Rogue trader scandals follow the same storyline:

  • A trader accrues losses due to bad trades.
  • They hide those losses while placing new trades in an attempt to recover.
  • The new trades also lose money, digging a deeper hole.
  • Repeat.

This cycle continues until they’re caught, at which point the bank is sitting on a large loss (sometimes into the billions of dollars) and the trader faces legal repercussions.

The story of Barings Bank offers a concrete example. Trader Nick Leeson had been logging fraudulent trades, over a stretch of three years, in an attempt to cover his mounting losses. This only came to light when the Kobe earthquake shifted markets against his most recent positions and the losses were no longer possible to hide. Leeson’s £800M ($1.3B) hole drove Barings to bankruptcy just three days later.

This is when you’ll ask: How could a professional trading operation let so many bad trades slip through undetected? How could a trader falsify records? Aren’t trading floors high-tech operations, full of electronic audit trails?

And the answer is: It’s complicated.

Trading operations do keep records, yes. But no system is perfect. Each time a rogue trading scandal comes to light, it turns out that there were loopholes in risk controls. A sufficiently motivated trader—especially one desperate to hide their mistakes—found and exploited these loopholes, continuing their losing streak in plain sight until they could bring in real money to backfill the fake records.

That “until” never happened, though. Which is why their employers then faced financial, reputational, and sometimes legal troubles.

The AI agent’s ROT threat

Similar to a trader, an AI agent operates on behalf of its parent business and is given room to operate independently so it can accomplish its tasks.

The risk is that, in the rush to deploy agentic AI, these companies will likely grant the bots more leeway than is necessary. We’ve already seen cases in which bots have been able to delete emails and wipe a production database. And there are no doubt other stories that haven’t made it into the news.

Those issues were at least caught in real time. Companies facing ROT are exposed to additional longer-running problems in which the bot is able to accrue losses or inflict greater damage over an extended period. In those cases the problems will only be uncovered by accident and/or when it’s too late.

Consider, for example, an agent that creates false data records to reflect (nonexistent) sales orders. It’s possible for this to run until some external event, such as investor due diligence or a budget review, forces someone to double-check those records against reality.

Avoiding ROT: Mitigating the threat

How can you narrow your downside risk exposure to ROT? Preventative measures are key. Strong risk controls, narrow scope of authority, and monitoring can catch rogue operator problems long before they’ve metastasized into an existential threat.

In light of rogue trader scandals, trading shops have been known to tighten risk controls and also separate duties to create a system of checks and balances. (This inhibits traders from logging their own fake trades.) Companies also require traders to take time off, as fraudulent activity may surface when the perpetrator isn’t around every day to keep the system running.

Adapting these ideas to agentic AI, a company could monitor and limit the scope of the bot’s activity (say, requiring human approval to place more than 10 orders an hour). It could also periodically purge the agent’s memory so it doesn’t accumulate too many evolved behaviors, or swap in completely new bots to pick up where the previous one had left off. And per my usual refrain of “never let the bots run unattended,” this company could employ people to cross-check everything the bot does. Trust, but verify.

This will not prevent the AI agent from making mistakes. But guardrails and sufficiently frequent checks should limit the scope of the bot’s damage. As with the rogue trader, the ROT problem isn’t about a single error; it’s about letting the errors grow out of control, undetected.

11:49

Jonathan Dowland: Digital gardening [Planet Debian]

I was reading a post on alexwlchan's blog1 that referenced the concept of digital gardens, a concept/analogy for organising information which dates back to the 90s. This old concept is getting new traction today by contrasting the approach with "endless stream" as used and abused by social media, but also how blogs are typically presented.

This site, my homepage, has a blog, and that's the bit that most people who interact with the site will experience. Partly, because it's the bit that gets syndicated out: via feeds; on Planet Debian and downstream from it; once upon a time on Twitter; nowadays on the Fediverse.

However there's more to my homepage than that. The rest of it may be of little interest to anyone beside me, but it's useful to me, at least. So I may switch focus a little bit from mainly writing blog posts, and tend to the rest of the garden a bit more.

Some recent seeding and pruning: Recently my guest status at Newcastle University came up for renewal, so I wrote down my goals in the Historic Computing Committee for the next year or so, and put them here: nuhcc. I've also been pondering what I'm up to in Debian at the moment, so took some time to add my current projects to that page.


  1. I'm reminded that I should really publish a "blog roll" of cool blogs I'm following at the moment, of which alexwlchan's is one.

11:21

CodeSOD: Development Tools [The Daily WTF]

A few holiday seasons ago, Paul S was doing the requisite holiday shopping online, looking for those perfectly impersonal but mildly thoughtful gifts that many companies specialize in. This was one of the larger such vendors, well known for its fruit-filled gift baskets. As is not uncommon for our readers, when the site started misbehaving, he pulled up the dev tools. He didn't solve the problem, but he did learn a lot about how they were managing their API keys, as this was exposed to the client:

    env: {
        APP_AUTH0_GUID: 'ctZZL1BqgKm9kBmDEKAjt0yBeQ47Cpwl XS0xxpLFS5g8o-EUpSu4fi9ecOqN19WnXn-EqI9yaupwme22bKuBd2jH3Kf3QngZ',
        APP_LOGGING_ENABLED: 'true',
        APP_LOGGING_SERVICE_PATH: 'r/api/logging/mbp-ui',
        REACT_APP_MBP_LOGGER_CONSOLE: 'ERROR',
        APP_TIQ_ACCOUNT: '1800flowers',
        APP_TIQ_PROFILE: 'full',
        APP_TIQ_ENV: 'prod',
        APP_PAYPAL_SDK_URL: 'https://www.paypal.com/sdk/js',
        APP_PAYPAL_CLIENT_ID: 'AcYrxrOkFwUnMKRoJmkOR0N6caopqRNqwNRxy6H-EvZ-IKUz22i-E0uT0uMT7JQZEC33Oy1HCNsgm_le',
        APP_PAYPAL_ENV: 'production',
        APP_PAYPAL_SOURCE: 'PWA',
        APP_VENMO_ENV: 'production',
        APP_VENMO_PROFILE_ID: '2705494007504552889',
        APP_AUTH_LOGIN_SOURCE: 'undefined',
        APP_SG_BASKET_SCRIPT: 'https://cdn2.smartgiftit.com/scripts/widgets/gift-basket.js',
        APP_AUTH_DOMAIN: 'login.celebrations.com',
        APP_AUTH_AUDIENCE: 'celebrations-prod.1800-flowers.auth0.com',
        APP_STATUS_BAR_ENABLED: 'true',
        APP_WALLET_ENABLED: 'true',
        APP_VERIFY_ADDRESS_HOST: 'api.edq.com',
        APP_VERIFY_ADDRESS_AUTH_TOKEN: '47d991c9-043e-4073-bee3-a5c8922baa3a',
        APP_FULLSTORY_ORG_ID: 'MXD30',
        APP_GRAPHQL_ENV: 'production',
        APP_VISA_CHECKOUT_API_KEY: 'B0LQRDVCE0LWKBHR880J14gCRlEjr_UqLhh6V-yYRAmcvD0W8'
}

I've gone ahead and mangled the keys, and given that this was a few holidays ago, I'd hope the retailer in question has fixed their website. But as you can see, it was pushing API keys for payment processors, along with potential authentication tokens and internal IDs. Now, I would hope most of these required additional authentication to be useful, and that a malicious actor couldn't do anything nasty with this information- but that's a dim hope. Even with the data exposed here, I wonder if someone could flip APP_PAYPAL_ENV to "development" or "test" and run some transactions through. Or do the same with Venmo.

This is a React app, based on some of the keys, using Graphql for communicating with the back end, and that hits at the fact that it's a single-page application. Probably, the developers were trying to build once for the web and for a "website bundled in an app" deployment for smart phones. And the result is that they weren't thinking about the distinction between "public" and "private" information- they had state to manage,so they managed it. By sending it to the client. Where anyone could see it. But it looked good, they shipped it, and they made sales, so everyone was happy.

For a time.

[Advertisement] Picking up NuGet is easy. Getting good at it takes time. Download our guide to learn the best practice of NuGet for the Enterprise.

11:07

Sen. Wyden Warns of Another Section 702 Abuse [Schneier on Security]

Sen. Ron Wyden is warning us of an abuse of Section 702:

Wyden took to the Senate floor to deliver a lengthy speech, ostensibly about the since approved (with support of many Democrats) nomination of Joshua Rudd to lead the NSA. Wyden was protesting that nomination, but in the context of Rudd being unwilling to agree to basic constitutional limitations on NSA surveillance. But that’s just a jumping off point ahead of Section 702’s upcoming reauthorization deadline. Buried in the speech is a passage that should set off every alarm bell:

There’s another example of secret law related to Section 702, one that directly affects the privacy rights of Americans. For years, I have asked various administrations to declassify this matter. Thus far they have all refused, although I am still waiting for a response from DNI Gabbard. I strongly believe that this matter can and should be declassified and that Congress needs to debate it openly before Section 702 is reauthorized. In fact, when it is eventually declassified, the American people will be stunned that it took so long and that Congress has been debating this authority with insufficient information.

Over the decades, we have learned to take Wyden’s warnings seriously.

09:42

“Too complicated for people to understand” [Seth's Blog]

That’s a great reason to dumb things down. It’s also a trap that leads us to stasis and mediocrity.

Let’s break it down:

People: Which people? All people? The majority of voters? Day traders or institutional long term investors? Every VC or just this one?

Pick your people, pick your future.

Complicated: If it can be made simpler and just as effective, then by all means, please do so. If you can tell a more compelling and actionable story, do that as well. But ‘complicated’ just might mean, “we don’t understand it yet.”

Understand: Few people understand how the iphone works, or even the refrigerator. But that doesn’t mean we can’t effectively use it. The people who were moved by The Rite of Spring or Miles Davis or Esperanza Spalding might not have understood the music but it still succeeded.

People walk away when it’s not worth the effort to pay attention. People ignore innovation when the network effect is insufficient to overcome their fear. People rarely understand something the same way the creator does, but that’s okay.

Our first job is to do work that matters for people who care. It helps to follow that up with the scaffolding needed to cause cultural change, so the idea spreads.

But don’t dumb it down to reach people who don’t want to be reached in the first place.

08:14

Here We Go Again [Penny Arcade]

New Comic: Here We Go Again

07:21

Pluralistic: The cost of doing business (25 Mar 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



A stern robed judge at the top of an orange slide, holding a gavel, his feet facing us. He is in a courtroom. On the walls behind him hang portraits of Lina Khan and John Sherman.

The cost of doing business (permalink)

The most important part of any law, rule or policy isn't what it permits or prohibits – it's whether you can enforce the law at all.

After all, as odious as a law that forbids people from thinking mean thoughts about Trump would be, it would also be completely unenforceable, and would ultimately just not be very important, except as a symbol of Trump's evil.

This property is called "administrability," meaning, "the degree to which an authority can administer the policy." There are many dimensions to administrability, including "Is it even possible to detect whether this policy has been violated?" In that same vein, there're questions like, "If you discover someone has violated this policy, will you be able to stop them from continuing to do so?" For example, the US routinely indicts North Korean hackers, but unless those hackers visit a place that the US can inveigle into arresting and extraditing them, it's a mostly symbolic gesture:

https://www.justice.gov/usao-cdca/pr/3-north-korean-military-hackers-indicted-wide-ranging-scheme-commit-cyber-attacks-and

One undertheorized aspect of administrability is "fact-intensivity"; that is, are there difficult, fact-intensive questions that need to be answered in order to determine whether someone has violated this policy?

Think of probate law: probate is often a lengthy and expensive process, especially if the deceased is "intestate" (has no will). To probate an estate, all the deceased's assets have to be cataloged and assessed, claims of heirs and inheritors have to be evaluated, etc, etc.

People spend a lot of time and money creating wills and family trusts largely to answer these questions when they're easiest to resolve (when you're still alive and can clearly express your preferences), because it's even more expensive and time-consuming to answer these questions when you're not around anymore to weigh in on them.

As complex and time-consuming as managing your estate can be, there's nothing wrong in theory with having a complicated, careful process in place for dealing with it. Taking care of your loved ones and disposing of your assets is something that's worth getting right, and people have all kinds of highly individual preferences for this that requires a lot of flexibility in the system. Making a system that's very customizable but also robust against fraud (or even honest mistakes) requires a lot of administrative superstructure to hold it all together.

And besides, probate isn't something we have to do very often. After all, most of us will only die one or fewer times. It's not like we have to figure this stuff out every day. It's the kind of thing you can do every couple of decades, over several hours, spread out over weeks.

Frequency, then, is the enemy of fact-intensivity. If you had to do probate-level form-filling to buy a cup of coffee or pay your electricity bill, that would be nuts. For one thing, it would be full employment for lawyers – and it would cost so much that by the time you got to the cafe or the gas-pump, you'd be too broke to actually complete the transaction.

This comes up a lot in discussions of tech policy, because once you computerize something, you can start to do it very quickly, which means that policies that added, say, a 1% admin overhead to a task before it was digitized can add up to a 1,000% overhead once it's digitized.

The best example of this is copyright: copyright is the most fact-intensive doctrine you deal with on a day to day basis. Technically, conclusively determining whether you have the right to forward an email could take a lawyer a whole day. Sure, most email forwarding is "fair use" (that is, it fits into one of copyright's "limitations and exceptions"), but any decent IP law prof could come up with ten email forwarding hypotheticals in ten minutes that could occupy a whole fourth-year IP law class for an entire semester.

One of the reasons copyright is so fact-intensive is that it was designed to be invoked infrequently. We're talking about a legal regime that was designed to answer questions about book and music publishing (and then adapted for other kinds of media), and even the most prolific publisher or label is going to deal with double-digits' worth of new works per season.

Meanwhile, the people working at that same publisher are likely forwarding hundreds, if not thousands of emails per day. If the publisher's copyright lawyers had to review every one of those forwards, they would never publish another book. They would go bankrupt.

Obviously, that's not how things work.

Why not, though?

Well, mostly because we just pretend copyright law isn't there. To the extent that we do acknowledge the potential for copyright liability from everyday activities that no one ever asks a lawyer to sign off on, we manage that liability through shitty, one-sided contracts. You have undoubtably clicked on dozens of agreements this year wherein you warranted that nothing you were doing violated copyright law (a neat trick, given that you probably have no idea whether any of the activities you routinely engage in could violate copyright) and further, you indemnified someone else for "all costs arising from any claims" associated with your activity.

That's an unbelievably shitty, one-sided clause for you to have "agreed" to, since "any claims" includes claims with no merit and "all costs" includes "money we paid someone who brought a bullshit claim to just go away."

In other words, you routinely click through these nonsense "agreements" where you promise to give every cent you have to anyone who wants it, if the company that made you click through that bullshit decides to promise some deranged rando a million bucks to settle their wild accusation that you violated their copyrights.

For complicated reasons, we're not all drowning in copyright lawsuits all the time, but if someone really wanted to fuck you up and they had deep enough pockets, they could use the fact that you're a giant, routine copyright infringer (just like everyone else) to wreck your life for years.

So obviously, it would have been better if we'd done some major refactoring of copyright law once the internet came along. My preferred fix? Carve out activities unrelated to the media industry's supply chain from copyright altogether:

https://pluralistic.net/2023/10/21/the-internets-original-sin/

Copyright isn't the only fact-intensive doctrine that's challenged by the cadence of digital life. The internet lets us do a lot of things, very quickly, meaning that even small factual questions pile up beyond any reasonable capacity to resolve them.

Take the debate over content moderation and hate speech. Hate speech and harassment online are serious problems and they disproportionately affect people who are getting the shitty end of the stick in the offline world, too. The legacy platforms obviously don't give a damn about these people, either.

So it's tempting to attempt to use policy to solve this real problem. Even if the US wasn't being run by a trollocracy, this would probably be a nonstarter in America, because hate speech is protected by the First Amendment, and purely speech-based harassment is hard to punish without falling afoul of 1A.

But other countries – notably the EU – are having a go at it. I think this is a doomed effort – but not because hate speech isn't a serious problem! Rather, because hate speech regulations are very fact intensive, and hate speech is very common. Frequency is the enemy of fact-intensivity.

Say the EU creates a rule requiring platforms to take reasonable measures to prevent hate speech. This requires

  1. arriving at a common definition of hate speech;
  2. adjudicating whether a given user's speech rises to that definition; and

  3. determining whether the platform's technical measures were "reasonable."

This is the work of months, if not years. And hate speech happens hundreds of times per minute on the big platforms. It's just not an administrable policy.

Now, just because policy isn't administrable, it doesn't follow that there's nothing to be done. There's other ways to give relief to the targets of harassment and hate speech. To get to those ways, we have to ask ourselves why people who are tormented by trolls stay on the platforms that expose them to abuse.

There are plenty of extremely wrong explanations for this floating around. One is that Mark Zuckerberg and Elon Musk are Cyber-Rasputins who can hypnotize us into using their platforms even if we don't like them, by "hacking our dopamine loops." This is a very silly explanation: everyone who's ever claimed to have perfected mind-control was a liar and/or deluded:

https://pluralistic.net/HowToDestroySurveillanceCapitalism

Another is that people are lying (possibly to themselves) when they say they don't like being harassed on legacy social media platforms. This theory – from neoclassical econ – is called "revealed preferences," and it holds that people whose actions go against their stated preferences are "revealing a preference" for the thing they're doing.

This is the sort of thing you end up believing in if you incur the kind of neurological injury that arises from pursuing an economics degree, which causes you to be incapable of reasoning about (or even perceiving) power. "Revealed preferences" tells you that if someone sells their kidney to pay the rent, they have a "revealed preference" for having one kidney.

Thankfully, there's a much simpler explanation for people's continued use of platforms where they are subject to abuse and harassment. It's this: the only thing worse than being a member of a disfavored minority who is subject to abuse and harassment is being a member of a disfavored minority who is subject to abuse and harassment who is also isolated from your community.

Leaving Facebook or Twitter means leaving behind the people who comfort and support you when you are subject to abuse. The more abuse and discrimination you face, the more that support matters, and the harder it is to leave that community behind. You love your community more than you hate Zuck or Musk, so you stay, because as much as you love them, it's transcendentally difficult to coordinate a mass departure for somewhere else. This is called the "collective action problem" and it's a regressive tax on the most abused platform users and communities.

This is a problem we can solve with policy! We can mandate that platforms support interoperability, so that when you leave a legacy platform like Twitter or Facebook for a modern platform like Mastodon or Bluesky, the messages addressed to you on the legacy platform are forwarded to your new home. That way you can have the people you love without the platform you hate.

This is a very administrable policy. The main lift is figuring out the nuts and bolts of interoperability, and while that's a big technical project, it's the kind of thing you only have to do once or twice. Then, if a platform fails in its duty to forward your messages after you leave, it's very easy for a regulator to determine whether it's violating the rules – they just have to send a message to your old account and see if it shows up for your new account:

https://pluralistic.net/2022/12/19/better-failure/#let-my-tweeters-go

A hate speech policy is hard to administer because it requires resolving a bunch of fact-intensive questions. A "right to exit" policy replaces all those fact-intensive questions with a bright line policy ("if you don't forward your former users' messages, you are guilty"), which can be administered at high speed.

Whenever a fact-intensive policy that regulates an infrequent activity fails because the activity becomes more frequent, you have two choices: you can either slow down the activity, or you can replace the fact-intensive questions with bright-line tests that can be resolved much more quickly.

But more often, we fail to do either, and everything goes very badly indeed.

That's more or less what's happened with "merger scrutiny," the part of antitrust law that lets competition regulators (or competitors) block or put conditions on mergers that involve large firms.

In these merger scrutiny cases, plaintiffs who challenge a merger are expected to resolve a bunch of extremely fact-intensive questions. Fail to resolve any of these questions and the merger goes ahead.

The most pernicious fact-intensive question that arises in antitrust cases is "market definition." That's pretty much what it sounds like: "What market is this company doing business in?" If you can prove that the companies in a proposed merger are in the same market, then it's a lot easier to prove that allowing the merger would reduce competition.

The problem is that "market" is a very slippery concept. As Tim Wu describes in his excellent book The Age of Extraction, "market definition" creates a near-infinite amount of wiggle-room:

https://www.wired.com/story/tim-wu-age-of-extraction/

When Wu was serving in the Obama FTC, he had a front-row seat for Google's acquisition of Waze. Now, obviously these companies are direct competitors, but the Obama administration wanted the merger to go through (it was dominated by people who thought monopolies are efficient and didn't want to do their jobs). So these officials decided that Google Maps' market was "finding out where you are" and that Waze's market was "getting you somewhere." It was really that stupid.

Writing for the Law and Political Economy project, Hal Singer explains how the fact-intensive nature of the "market definition" question makes it virtually impossible to prevent market concentration and abuse of dominance:

https://lpeproject.org/blog/the-market-definition-trap/

From Livenation/Ticketmaster to Paramount/Warner Brothers, the "market definition trap" leaves the public virtually defenseless before efforts to reorganize the economy into extractive, rapacious cartels.

In a recent interview with the Do Not Pass Go podcast, Paul Crampton (Canada's recently retired top competition judge) talks about the tsunami of mergers that Canada's Competition Bureau is expected to oversee:

https://www.donotpassgo.ca/p/inside-canadas-competition-court

Fact-intensive market definition questions can't possibly be resolved at the pace of mergers. That's because companies' preferred growth strategy is combining, rather than competing. There's plenty of political problems with merging Paramount and Warner, but there's also a huge economic problem, because these companies are direct competitors who will soon operate as a single firm.

The M&A industry has staged a denial of service attack on its regulators, accelerating the pace of mergers involving large firms far beyond the ability of a regulator to resolve the fact-intensive questions these mergers raise. They've flooded the zone, and after the mergers go through and the companies start abusing their customers, workers and competitors, these same market definition questions bedevil any attempt to rein in this abuse of dominance.

Singer makes some excellent suggestions for legal reforms to resolve this, moving some of the fact-intensive questions to bright-line ones, such as "whether the challenged conduct injured workers, consumers, or some other counterparty."

This is the right approach. As we plan for a future in which legislatures recognize the enormous harms that monopolization inflicted on our societies, we need to come up with more bright-line rules for antimonopoly rules. These will lack some of the subtlety that fact-intensive treatment affords, but you can't do fact-intensive adjudication for high frequency activities. So maybe we say that no company can acquire or merge with another company more than once in 18 months, or that companies that share more than 10% of their customers can't merge.

Some "good" mergers will fail these tests, but that's the price we pay. If you want to move mergers from a rare occurrence to an everyday, you're going to have to accept a loss of nuance in the rules for these mergers. The alternative is the ugly, self-destructive mess we have today.

(Image: Harrison Keely, CC BY 4.0; DocteurCosmos, CC BY 3.0; modified)


Hey look at this (permalink)



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

Object permanence (permalink)

#25yrsago Warner Bros v Potter fandom https://web.archive.org/web/20010331091849/http://www.potterwar.org.uk/home/index.html

#20yrsago Rant transcript from Game Developers’ Conference https://web.archive.org/web/20060404230422/http://crystaltips.typepad.com/wonderland/2006/03/gdc_game_develo.html

#20yrsago Union Pacific threatens to sue painters, model railroaders over trademark https://web.archive.org/web/20060413085045/https://www.trains.com/community/forum/topic.asp?page=-1&amp;TOPIC_ID=60666&amp;REPLY_ID=681783#681783

#20yrsago US frequent flier programs deliver less and less https://www.nytimes.com/2006/03/21/business/still-loyal-to-your-airline-you-must-be-looney-tunes.html

#20yrsago Mother Jones on IP overkill https://www.motherjones.com/politics/2006/03/intellectual-property-run-amok/

#20yrsago Comic advises women to call anti-abortion Senator to make their choices https://web.archive.org/web/20060321230542/http://minimumsecurity.net/toons2006/6034.htm

#20yrsago HOWTO become an early riser https://stevepavlina.com/blog/2005/05/how-to-become-an-early-riser/

#15yrsago Trademark thought experiment: when should intermediaries be cops? (Barista vs. Barbie) https://memex.craphound.com/2011/03/23/trademark-thought-experiment-when-should-intermediaries-be-cops-barista-vs-barbie/

#15yrsago New York Times advances weird, self-destructive trademark theory to prop up its paywall https://memex.craphound.com/2011/03/23/new-york-times-advances-weird-self-destructive-trademark-theory-to-prop-up-its-paywall/

#15yrsago LSE economists: file sharing isn’t killing music industry, but copyright enforcement will https://arstechnica.com/tech-policy/2011/03/is-file-sharing-the-global-future/

#15yrsago Anti-union group: send us secret, unlimited donations so we can bring transparency to politics! https://web.archive.org/web/20110325141411/https://www.wmc.org/MediaOutlet/display.cfm?ID=2485

#15yrsago Why Rebecca Black fascinates us, and why the mashups suck https://www.happyrobot.net/words/pony.asp?id=10233

#15yrsago Understanding the SSL security breach, preparing for the next one https://www.eff.org/deeplinks/2011/03/iranian-hackers-obtain-fraudulent-https

#10yrsago Airlines celebrate record profits, having killed bereavement fares https://www.latimes.com/business/la-fi-lazarus-20160322-column.html

#10yrsago Bake: homemade Jabba the Hutt peeps https://www.starwars.com/news/jabba-the-hutt-marshmallow-treats

#5yrsago Tories pass Grenfell costs onto tenants https://pluralistic.net/2021/03/23/parliament-of-landlords/#slow-motion-arson


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 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "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. First draft complete. Second draft underway.

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

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

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

Medium (no ads, paywalled):

https://doctorow.medium.com/
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

05:35

Russell Coker: The Death of Twitter [Planet Debian]

At the end of last year I uninstalled the Twitter app on my phone.

In the past Twitter used to be very useful for providing feedback to large organisations. I had responses from supermarkets, chain restaurants, online stores, major computer companies, and even the IT department of a court. In recent times I have had less responses from corporations which significantly reduces the value of Twitter to me and to many other users. It seems that Elon’s management style has discouraged not only advertising but also all forms of corporate interaction. Messing up the check mark on accounts to make it harder to work out which is a real corporate

Since Elon bought it Twitter has been increasingly pushing conservative Tweets and has done little to stop bot accounts. The incidence of useful discussions has steadily decreased. I know people who have quit Twitter entirely due to opposition to Elon, I am not doing that. I finally decided to stop using Twitter in any serious way when the notifications on my phone about popular Tweets started only being about Tweets from conservative influencers and Elon. This was obviously not any algorithm based on Tweets I was liking, it was based on political decisions. I didn’t uninstall the app due to political disagreement, I uninstalled it because it was through deliberate design promoting material that any algorithm would know was something I wouldn’t either like or “like”.

I still announce new blog posts on Twitter for my 198 followers at the same time as announcing them on Mastodon and Facebook. I get the most reactions to such announcements on Mastodon, the second most on Facebook, and hardly any on Twitter. I’m wondering how long it will be worth announcing blog posts on Twitter or whether I should stop now.

I am sure that many other people are making similar decisions and this is going to affect Twitter overall.

The web site www.russellcoker.com has information on all the ways of following me.

04:49

John Goerzen: Artificial Intelligence: Shades of Gray [Planet Debian]

AI sure is a hot topic right now, and I see a lot of people arguing about it. To a lot of people around here, I’m the “computer person” they know and I get asked a lot about AI.

I’m going to suggest a lot of things can be true at once. For instance:

  • LLMs are changing how we work and will continue to do so.
  • LLMs are vastly over-hyped by vested interests, and may be in a bubble.

Or how about:

  • Huge investment in GenAI is having many negative consequences, ranging from environmental to causing affordability problems in many industries that use hardware (ie, everywhere)
  • Useful results can be had from models that run on local hardware, even battery-powered hardware, which may have negligible harm or even some benefit

And:

  • GenAI is further concentrating wealth and power in megacorps, with the effect of squeezing out the smaller players even more.
  • GenAI is lowering the cost of entry for people without a lot of resources already.

I have sympathy for the naysayers; those that say it’s nothing but a stochastic parrot. But I don’t have a lot of sympathy for the naysayers that deny ever using it; you can’t form a credible argument against something without having an understanding of it informed by experience.

I also have sympathy for the cheerleaders. I have seen some impressive things from AI; for instance, a story from an engineer who has a child with a rare disease without a credible cure. The engineer did a lot of research on it, started feeding research papers into AI to analyze, and the AI started finding correlations between different areas of research that humans hadn’t yet found — leading to a positive result for the child.

To be fair, I have rarely seen an AI deliver a 100% correct answer on anything with any real level of complexity. I have seen it both waste more time than it saves, and save a ton of time.

My point here is: It is neither always fantastic nor always terrible.

Let me talk you through an example.

I am a fan of inbox zero for email. That is, the inbox should be empty. Unfortunately, mine has 8000 messages in it. According to the oldest messages in my inbox, I last had inbox zero 8 years ago. But really, only a handful are older than 2020. I guess something must have happened that year…

I’ve been chipping away at this for quite some time now. The problem is, there are certain emails in there that really do still need some action – maybe it’s photos to save off into our photo collection, for instance. But when looking at things sorted by date or thread, there are old shipping confirmations next to phishing attempts and family photos. One can’t just scan down the list.

I’ve tried all the usual tricks, most of which involve selecting groups of message that are easy to bulk erase, or at least easy to scan visually for the occasional thing worth saving. Sort by sender or subject line, for instance. Then I can, for instance, delete all the old messages from the shopping sites I commonly use all at once. But then they start using different senders and different subject lines and that doesn’t get all of them. I’ve tried keyword searches for this sort of thing too. Still, that got me down to about 8000 messages.

So I thought: why not see if an LLM could help me classify these? Maybe it could categorize them, and then I could look at emails grouped by category.

I have one machine with a discrete GPU, an Nvidia RTX 4070. It’s a desktop machine I don’t use all that often. But I set up Ollama on it, running in a Docker container. Ollama runs models locally.

I should also mention at this point that we are solar-powered, and this time of year is a time of peak production of excess solar, because it is sunny and not much heat or AC is required. So that machine is solar-powered and isn’t causing environmental harm. In any case, charging the EV uses much more power than that GPU.

I figured I would do this in two passes. First, ask the LLM to classify each message (or a sampling of them would probably work too), letting it pick its own categories for each. Then, look at the patterns that emerge and give it a single, much smaller, set of broad categories to use and rerun it over that.

Then I can easily select messages from my Maildirs by category and process them in bulk.

I used open-interpreter pointing to that GPU on my network to help me write the scripts for this. It didn’t get things right on its own; for instance, it didn’t call the Ollama API correctly, and insisted on appending “/cur” to the path to the Maildir (which was not going to fly with Python’s maildir module). It took roughly an hour to classify those 8000 messages (or, as I had it do, the first 2000 characters of them), and then the same to do it a second time. I had it output lines in the form of “filename\tcategory” and hand-wrote the shell script that processed those.

In the end, was it useful? Yes, quite. Its classifications weren’t perfect (and it didn’t even follow my prompt perfectly; sometimes it would give me a long discussion on why it picked a certain category rather than just that category, and occasionally it picked categories not on the list). But then, neither were my manual keyword searches. So far I’ve gotten rid of nearly 1000 more messages. Several categories were a “visual scan for sanity and then delete all” sort of thing.

My emails never left my network. I didn’t rely on a cloud AI to process them. I didn’t contribute to global warming (this may have even been a case of saving energy, since it no doubt will offset quite a bit of manual time that would keep screens and room lights energized and so forth). I used about as much energy as watching a movie on a TV.

Did it complete the task for me entirely autonomously? Also no. AI isn’t a mind reader and it can’t possibly evaluate exactly what my thought process would be for a given task. But it can do a decent enough job to save me some time.

Still, this didn’t require hyperscaler datacenters. AI even runs on-phone (Google Translate being one of the most useful AI-driven apps I’ve ever seen, and it can run on-device).

Girl Genius for Wednesday, March 25, 2026 [Girl Genius]

The Girl Genius comic for Wednesday, March 25, 2026 has been posted.

01:49

Seabreeze No! [QC RSS]

a thousand beaks, a million talons, ten billion eyes. RIP Ms. Beakman, you beautiful bird

01:42

00:56

Seattle Central College’s Wood Technology Center May Be on the Chopping Block [The Stranger]

Reached by phone on Tuesday, a spokesperson for the college said that while they couldn’t name specific properties they were considering selling, the college is currently looking at all of their properties. This includes the block that contains the historic Egyptian Theater. by Chase Hutchinson

Seattle Central College’s Wood Technology Center, the home to carpentry, boat-building, and pre-apprenticeship construction programs that train students for skilled trades, is at risk of closing as the college explores selling the building where it’s housed. 

Reached by phone on Tuesday, a spokesperson for the college said that while they couldn’t name specific properties they were considering selling, the college is currently looking at all of their properties. This includes the block that contains the historic Egyptian Theater, which concluded operations under SIFF last October

Multiple students and staff spoke to The Stranger and expressed concerns about the loss of the programs. These closures will impact a region that desperately needs them.

“Losing this for Seattle is a huge loss. It’s a huge loss for the local economy, it’s a huge loss for our industry,” says Catie Chaplan, a Seattle Central College Wood Technology instructor named 2017’s Instructor of the Year by the Washington Women in the Trades. “With the need for housing in Seattle, it’s a loss of one of the few places that trains carpenters to build houses.”

Staff and students say they learned of the potential closure from college leadership on Monday, including interim president Chantae Recasner. As reported by The Seattle Times, students protested outside a conference room where a meeting was taking place, wearing belts and toolbelts while chanting as administrators departed, hoping pressure would lead to a different outcome.

Much remains unknown. Staff say they intend to honor all currently enrolled students. Staff said they’ve been told that they could continue to enroll cohorts in the spring quarter. However, they could be prohibited from enrolling new students in the five-quarter program by fall. There are approximately 70 students on a program waitlist.

It’s important to staff to keep enrolling for as long as they can rather than have the building sit empty while awaiting a potential sale, staff say. More details about enrollment will come in the next week. 

The Stranger asked about the looming closure, the financial health of the college, and whether instructors would be given more time to find a different solution. Barb Childs, Seattle Central College’s associate vice chancellor of public relations and strategic initiatives, sent the following statement: 

“We are considering the sale of Seattle Colleges' properties, including Seattle Central's Wood Technology property, and relocating the programs, where applicable, to sister colleges. As we consider the sale of properties, we are seeking the most seamless and softest landing for our students and employees. We are exploring this decision due to structural funding challenges facing community colleges across our state, including declining state funding and rising operating costs.”

In addition to concerns about losing what they called “vital programs,” students and staff said the closure leaves fewer opportunities for unrepresented groups to break into the woodworking field. 

“These programs are one-of-a-kind programs that provide access and equity in the trades. They’re the only programs of their kind in Seattle and in the vicinity,” says Chaplan. “My program right now is over 50 percent women. We have a lot of queer, nonbinary, trans students. … We have people from all walks of life coming here to get training and build confidence to get living wage jobs and careers in industries that are desperate for skilled workers.” 

Stephan Anderson is one of those trans students. The possibility of cuts has haunted the building, they say. The loss would be significant for Anderson.

“As a trans person of color at this school, being supported and gassed up every day has been unforgettable,” they say. “I’ve never experienced an education like this.”

Chaplan argues more grants and partnerships could allow the program to continue. It’s happened before. The over-80-year-old institution received a $750,000 grant from the Lowe’s Foundation in 2024

“To lose the campus and lose the property is a huge loss that, in my opinion and our opinion here, is really a short-sighted loss,” Chaplan said. “We understand there’s a budget crisis and community colleges are in a world of hurt, but the years of financial decisions that got us here shouldn’t be balanced on selling an irreplaceable campus.” 

Tuesday, 24 March

22:49

Urgent: No funding for Iran war [Richard Stallman's Political Notes]

US citizens: call on Congress to reject the $200 billion funding request for the war with Iran.

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: Unwanted pro-war propaganda [Richard Stallman's Political Notes]

US citizens: call on Congress to investigate FCC Chairman Carr's threats to silence news media that report on the Iran war without slanting it to favor the war-starter.

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: Families, child care unfunded [Richard Stallman's Political Notes]

US citizens: call on your federal legislators to stop the bully's attack on child care and families.

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: No Kings [Richard Stallman's Political Notes]

On March 28, or a date close to that, join one of the No Kings protests.

22:35

Much Obliged [The Stranger]

Got problems? Yes, you do! Email your question for the column to mailbox@savage.love! by Dan Savage I’m a happily married pregnant woman. My wife and I have had a bit of a slowdown in the sex department, but nothing too worrying considering my “condition.” During this pregnancy I’ve had an increase in libido, but I haven’t shared that with her. We were having some conflict when I started to experience this uptick in sexual impulses. I’ve had some limitations physically, like a period of mandated pelvic rest, so “The Right Moment” has been rare. When our dry spell came up a few months ago, neither of us handled the discussion well. I was being flirtatious (or I thought) and she chose that moment to say something hurtful about how infrequently we were having sex. I don’t like feeling as though sex is an obligation, so that interaction was a big turn-off for me. I told her I felt hurt, and she apologized, but I don’t think…

[ Read more ]

22:28

Democrats could have been [Scripting News]

Democrats could run an ad that would give an estimate of how much work you'd have to do to vote if the Republican plan passes.

And roughly how many people are like you and how likely they are to vote Democratic.

People can understand March Madness, they can understand this. You have to help though. The first question could be:

The first question could be:

  1. Do you have your birth certificate or passport?

In the ad we could also estimate what the probable makeup of Congress would be if the law passed.

And keep an open mind, it's possible this move could backfire on the Republicans. Who knows how people will vote after this kind of madness becomes law.

They might want to keep things as they are.

Mozilla could have been [Scripting News]

I’ve watched Mozilla not get it for what feels like decades.

Their only legit function imho is to make the real actual web be a great platform for independent developers.

For that, start by adding user controlled storage to the web, a few standard formats, and let app devs take it from there.

21:49

21:00

Windows 95 defenses against installers that overwrite a file with an older version [The Old New Thing]

Back in the days of 16-bit Windows, many system components were redistributable, meaning that programs that used those components could include a copy of those system components and install them onto the system as part of the program’s installer. The guidance for installing the system components was that if the installer finds a copy of the system component already on the system, then they should compare the version number of the existing file with the version number of the file being installed and then overwrite the file only if the file being installed has a higher version number. if the existing file has a higher version number, then it should be left alone.

This rule relies on the fact that Windows maintains backward compatibility, so the newer version still works even if used by an older program.

This doesn’t mean that installers actually followed this guidance.

It was common for program installers to overwrite any file that was in their way, regardless of the existing file’s version number. When these installers ran on Windows 95, the replaced the Windows 95 versions of the components with the Windows 3.1 versions. You can imagine how much of a disaster this caused to the rest of the system.

Windows 95 worked around this by keeping a backup copy of commonly-overwritten files in a hidden C:\Windows\SYSBCKUP directory. Whenever an installer finished, Windows went and checked whether any of these commonly-overwritten files had indeed been overwritten. If so, and the replacement has a higher version number than the one in the SYSBCKUP directory, then the replacement was copied into the SYSBCKUP directory for safekeeping. Conversely, if the replacement has a lower version number than the one in the SYSBCKUP directory, then the copy from SYSBCKUP was copied on top of the rogue replacement.

Basically, Windows 95 waited for each installer to finish, and then went back and checked its work, fixing any mistakes that the installer made.

An earlier design simply blocked the installer’s attempt to overwrite the file, but this ended up creating more problems. Some installers declared the installation to be a failure and gave up. Otherwise displayed an error message to the user and asked the user what to do next. (Like the user knows what to do next.) You even had installers that took even more extreme measures and said, “Okay, fine, I can’t overwrite the file, so I’m going to reboot the system and then overwrite the file from a batch file, see if you can stop me.”

Redirecting the write to a dummy file didn’t work because some installers had a validation step where they checked that the files on disk have the correct checksum, so they would notice that their attempt to overwrite the file was unsuccessful and error out.

The way that worked best was to let the installer overwrite anything it wanted and then go back and try to clean up the mess.

Bonus chatter: Some components addressed this problem by providing their own installer for the component, and telling installers, “You are not allowed to install these component file directly. Instead, you must run our custom installer. Yes, this disrupts your installer’s UI, but you installer authors have shown that you can’t be trusted to install files on your own. It’s your own fault.”

The post Windows 95 defenses against installers that overwrite a file with an older version appeared first on The Old New Thing.

20:14

Letters Pray – DORK TOWER 23.03.26 [Dork Tower]

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

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

18:35

Firefox 149.0 released [LWN.net]

Version 149.0 of the Firefox web browser has been released. Notable features in this release include a new split-view feature for viewing two web pages side-by-side, a built-in VPN for browser traffic only, and more.

18:28

The Big Idea: Tiffani Angus & Val Nolan [Whatever]

You know ’em, you love ’em, authors Tiffani Angus and Val Nolan are back again with another installment of their speculative fiction guidebooks. Hop on board the Big Idea to see how they’ve done it again in Spec Fic for Newbies Vol. 3: A Beginner’s Guide to Writing Even More Subgenres of Science Fiction, Fantasy, and Horror.

TIFFANI ANGUS & VAL NOLAN:

Imagine a classic scene: A car driving down a lonely rural road… a bright light overhead… an examination table aboard an alien spacecraft… and then, instead of the typical medical business, our protagonist—let’s call her Sally—finds herself sitting across from an extraterrestrial. This being communicates with a curious thought-to-text translator device it places on the table. When the entity speaks, its words appear in the air between them:

“My species has learned all we can about your physiology. Now we wish to know about your culture. Does your society… tell stories?”

Sally, who’s been studying Creative Writing, is only too happy to discuss this. “We sure do,” she says. “Lots of different kinds! Science Fiction stories, Fantasy, Horror. And they take all sorts of different forms, like written fiction, TV shows, comics books…”

The alien’s already wide eyes expand even further. “And your species just instinctively understands how to tell these stories?”

“I mean, kinda. We’ve been doing it since we sat around campfires in the Ice Age. But we benefit from practice, you know? Plus, it helps to have guidance from enthusiastic instructors. Not literary snobs who want to make everyone write the same way as them but people sympathetic to the kinds of stories you want to tell.”

“And does one need to go to a school or university for this?”

“Not necessarily. Some people who’ve taught Creative Writing at universities have written books about it.” Sally looks around, finds her backpack (which conveniently materialized beside her), and pulls out a copy of Spec Fic for Newbies Vol. 3: A Beginner’s Guide to Writing Even More Subgenres of Science Fiction, Fantasy, and Horror by Tiffani Angus and Val Nolan. “This, for example, helps novice scribblers and even more seasoned writers learn how to write thirty different subgenres and major tropes. It gives deep dives into the history and development of each subgenre or trope, offers spotter’s guides to their typical manifestations, and provides writing exercises to get you started. Plus, it’s all based on real classroom experience!”

“Subgenres…” The alien’s word floats in the air. “We have heard of these. So many to keep track of.”

Sally thinks about this for a moment. She reaches for the translator. “Can I…?”

The alien nods.

Sally quickly finds the translator’s settings and alters a couple of font choices. “There,” she says, returning the device, “I’ve set it so that when I mention a subgenre that’s in Spec Fic 3, it will appear in bold. That’s what they do in the book. Like all this”—she gestures around the silver room—“is a recognizable Alien Abduction narrative. But the book covers everything from Dinosaur Tales to Swashbuckling Fantasy to Fungal Horror to Superheroes.”

“Fascinating.” The alien considers the book. “I wish I’d been able to study this.”

“They don’t teach Creative Writing at Space Academies?”

“Our universities mostly produce Mad Scientists,” the alien says. “Oh!” It points at the bolded word. “It did the thing!”

Sally smiles. “It’s fun, isn’t it? Plus, when Angus and Nolan discuss subgenres in the other volumes of the series, they underline its name so you can track it down easily.”

“Yes.” The alien turns Spec Fic for Newbies over in its spindly fingers. “I was wondering: can I just jump in with this third volume?”

“Oh absolutely! They’re all stand-alone books. Though if you want to know more about the previous ones…” She takes out her phone. “Have you got wi-fi here? Like, space wi-fi?”

The alien turns the translator upside down and shows her the password.

“Okay, cool,” Sally says, logging on. “So, Angus and Nolan have written about the previous volumes on Scalzi’s blog. You can read about Volume One here and Volume Two here.” She passes her phone to the alien, who reads the blog posts with interest.

“And people find these guides useful?” it asks.

“Useful and enjoyable,” Sally says. “The first two volumes were included on the Locus Recommended Reading List and shortlisted for the British Science Fiction Association Awards and British Fantasy Awards. Those are, like, big deals on our planet.”

“The section on Magic Schools and Dark Academia sounds interesting,” says the alien, now looking through the table of contents. “As does the section about Magical Realism.”

“I like some of the horror stuff myself,” Sally says. “I’ve lately given a go to writing about Near Death Experiences and Urban Gothic and Weird Fiction.”

“And?”

“And I’ve been trying lots of things that I never thought I’d try. The book is really encouraging that way. Angus and Nolan don’t believe in gatekeeping. The whole ethos of Spec Fic for Newbies revolves around bringing people into the realms of Science Fiction, Fantasy, and Horror by giving them the tools to explore these really rich and rewarding imaginary worlds.”

“I see there’s lots of jokes, too,” the alien says, the translator registering its chuckles as a series of curious emojis. 

Sally makes an affirmative noise. “Yeah, the authors have a really snarky sense of humor. Angus and Nolan don’t take themselves too seriously, which is another thing that separates this book from the really dry, old-school academic writing guides. Though, of course, that doesn’t mean the book isn’t smart—”

The alien holds up the section on End of the Universe stories. “I can see that.”

“—but it does mean it’s approachable. Anyone can read Spec Fic for Newbies. Anyone can learn from this book. That’s their big idea!”

Bugs!!!” the alien suddenly shouts.

“Where?!”

“Page 229!”

Sally laughs. “I haven’t got to that part yet!”

“This book tells us much about humanity,” the alien says, “as well as things about Elves and Kaiju.”

“And we’ve barely even covered half of the subgenres here!”

The alien returns the book to Sally. “Where can I get my own copy?”

“Direct from Luna Press.” She opens up the website. “Or from any of your usual retailers.”

“I think I would like to beam down and pick one up right away!”

“Great,” says Sally, “let’s go get you writing!”


Spec Fic For Newbies Vol. 3: Amazon|Barnes & Noble|Amazon UK|Blackstone UK|Waterstones UK

Author socials: Tiffani’s Website|Val’s Website|Tiffani’s Bluesky|Vals’ Bluesky

17:56

Slog AM: ICE Is in the Airports, a Meddlin’ Saudi Prince, Snowpack Pays for Warm Winter [The Stranger]

The Stranger's morning news roundup. by Vivian McCall

Fartin’ Around: The ICE agents sent to supposedly help TSA manage snarling lines at 14 airports—hundreds of its officers have quit or called out sick because they’re not being paid during this partial government shutdown—are just … standing around and pissing people off, writes Defector. Unsurprisingly, airport wait times haven’t magically improved overnight.

This Guy Is Definitely Going to Figure It Out: The Senate confirmed Markwayne Mullin to lead homeland security on a largely party-line vote Monday. The Republican Senator from Oklahoma and friend to President Donald Trump replacing Kristi Noem says his goal is to get the department off the front page of the news.

ICE in the News 2: ProPublica reports that Trump has arrested and detained the parents of at least 11,000 US citizen kids in the first seven months of his second term. That’s affecting roughly 50 kids a day; if the administration held that pace, the number would be about 22,000 by now.

ICE in the News 3: KUOW interviewed a couple from Oaxaca who’ve spent their adult lives working the crop and flower fields in the Skagit Valley. Their employer tells them they’re protected from federal agents at work, but there is no protection when they come and go. “Their kids beg them to leave their apartment — to walk to the nearby park and play on the playground, to go shopping for new shoes, or drive across town to get ice cream. These days, their mom and dad, who are undocumented, always say no.”

ICYMI, More ICE in the News: Last week, the Urbanist wrote about a “powerful surge” of immigration enforcement in Washington between October and December 2025. According to a report from University of Washington’s Center for Human Rights, the largest increases were in King, Yakima, and Clark Counties. The Center found repeated instances of federal agents running license plates to check immigration status before making an arrest.

Republican Sheriff/California Gubernatorial Candidate Seizes 650,000 Ballots from 2025: Riverside County Sheriff/candidate Chad Bianco says a citizen “audit” of California’s special election to re-district California allegedly showed that election workers counted 45,000 fewer ballots than the number of votes certified to the state. So… no. The citizen  “evidence” is imprecise and wrong, and even though Bianco has been “investigating” fraud in Riverside County since 2022, he hasn’t found it. Is the stolen election in the room with us, folks?

Stop, Mr. Prince, He’s Impressionable! Saudi Arabian Prince Mohammed bin Salman has been pushing Trump to continue the war in Iran because he believes it is a “historic opportunity” to remake the Middle East, reports The New York Times. He’s told Trump that he must destroy Iran’s government. Trump appears to be of two minds (or none at all). Some days the war is ramping up. Others it’s winding down.

WFH is Dying: By July 1, all Seattle Public Schools employees must return to full-time in-person work, according to a Thursday email to employees. At least 330 SPS employees work in hybrid or fully-remote jobs.

Eina Kwon Shooting Won’t Go to Trial: Prosecutors have accepted a plea of insanity from Cordell Goosby, who, according to court filings, was in severe psychosis when he shot into the pregnant Kwon’s car in 2023, killing her and injuring her husband. After Goosby’s attorneys suggested he was insane at the time of the crime, prosecutors sought independent evaluation. Their expert agreed that he was insane. Under the plea, he could be held at a state psychiatric hospital for life.

Beautiful, Unseasonable Weather We’ve Been Having: This month’s snowy surprise was no match for climate change. Sorry to remind you of The End, but that abnormally mild winter cost us our precious snowpack. Usually at its highest point this time of year, Washington’s mountaintops currently “sit at or below half their normal levels,” writes The Seattle Times. After a brief hope for more snow, scientists, or the groundhogs of climate, are back to predicting the fourth severe summer drought in a row.

The Monster We’ve Created: His enjoyment is sickening.

Weather: It’s wet and grey, but we should be thankful for rain while it's still with us.

The Golden Hour at Roquette [The Stranger]

Roquette's Hour is a luminous treat. by Meg van Huygen

With an hour to kill before my birthday party, I was walking around Belltown in my silly dress in the freezing rain. I rarely drink alone, but…maybe that’s the move here? To celebrate myself on a date with myself?

It’s not hard to figure out how to spend the most luxurious possible solo hour in Belltown. Despite the attention it gets from both national food media and snobby listicle sites, Roquette’s somehow maintained a real-ones-know reputation in this city. Surrounded by oontzy dance clubs and yelly sports bars, this sleek, French-inspired cocktail lounge frequently sails under even my own radar, and definitely others’. A shame, considering its cool combo of elegant and chummy—Roquette’s unlikely to disappoint anyone who visits, even unreal ones who do not know.

What a perfect secret hideaway for an intimate little date with yourself, though. Self, we really must do this.

Fresh off its second James Beard nom, Roquette is standing room only on a blustery Friday. Ah, it’s so pretty and plush inside, with its cobalt velvet and palmy murals. They’ve got an ensemble cast tonight: Kyton Blair from Roquette’s original 2019 opening team—who’s also the StarChefs Seattle 2025 Rising Stars Award winner for his work there—as well as Chelsea Mathews (The Doctor’s Office) and Parker “Top Shelf” Knowles (Oyster Cellar). All major players in Seattle’s beverage programs.

From Roquette’s book of spectacular, world-class cocktails, I choose a Golden Hour: George Dickel Rye, Calvados Coquerel, Amaro Nonino, Giffard Piment d’Espelette, and apricot. The name was like a lovely personal welcome; in my wet scarf and drippy hair, I thought a sunny-golden hour spent in here just might break through the winter chill.

I like to smell the fruit before I take a sip—here, a swath of orange peel—and doing this adds enormously to the experience. Always a fan of gingerbready Dickel Rye. Calvados Coquerel is from Normandy, an oak-barrel cider brandy with farmy notes. Amaro Nonino is Italian and reminds me of MarketSpice tea: orange, cinnamon, chamomile, thyme, with a fruity grappa base. Also French, Piment d’Espelette’s a spicy, intense liqueur made by macerating espelette peppers in rhum agricole. And the sweet zang of the apricot juice unites everything, like hot honey on an experimental pizza.

This cocktail has always known me and is, in fact, my date tonight. We understand each other. We’re in love.

Before I go, Mathews sends me a Disco Ball—green AND yellow Chartreuse, mezcal, and “sparkles,” served in a disco ball-shaped shot glass. She’s “made it skate” with floaty ice slivers. In comparison, this tiny drink’s a flamboyant stranger who doesn’t know me at all, and it’s dazzling. I want a big version.

The karaoke party later is chaotic and fun, if exhausting, and I feel celebrated. It’s a privilege. But when the day is over, I’m deeply thankful for my meditative golden hour with the Golden Hour beforehand, hidden in plain sight at a svelte little lounge. This is the frequency I want this year. Age 46: I totally hang out at Roquette all the time now.

17:07

Leave Tyrants in the Ground [George Monbiot]

By unhooking ourselves from fossil fuels, we release ourselves from a world of harm.

By George Monbiot, published in the Guardian 19th March 2026

I realise this is a serious breach of etiquette. But could we perhaps abandon good manners and contextualise Donald Trump’s attack on Iran? The intense western interest in the Middle East and west and central Asia, sustained for more than a century, and the endless attempts by foreign governments to shape and control these regions, are not random political tics. They are somewhat connected to certain fuel sources situated beneath the ground.

Trump’s war aims are typically incoherent: apparently incomprehensible even to himself. But Iran would not be treated as an “enemy of the west” were it not for what happened in 1953, when Winston Churchill’s government persuaded the CIA to launch a coup against the popular democratic government of Mohammad Mossadegh. The UK did so because Mossadegh sought to nationalise the Anglo-Iranian Oil Company: to stop a foreign power from stealing the nation’s wealth. The US, with UK support, tried twice to overthrow him, and succeeded on the second attempt, with the help of some opportunistic ayatollahs. It reinstated the shah, Mohammad Reza Pahlavi. In 1954, the Anglo-Iranian Oil Company became British Petroleum, later BP.

Fury about the 1953 coup, combined with ever-more vicious repression under the shah’s dictatorship, triggered the revolution of 1979, which was captured by the ayatollahs, with horrible consequences for many Iranians. They would not be running the country were it not for our governments’ violent crushing of democracy for the sake of oil.

Take a step back from this history, and you see something else that should be obvious. The conflation of capitalism with “free markets” is one of the most successful lies in human history. The historical and ongoing plunder of resources; the police, armies and death squads deployed against those who resist; the shifting of profits from less powerful nations to the major powers; the intimidation of labour; the conning of consumers; the extraction of rent; the dumping of costs on the living planet: all this is the opposite of “free”. It’s highly coercive and extremely expensive.

Much of the time there’s little sign of a market, either. Land, commodities and labour are, in many cases, simply stolen. Public resources, whether oil reserves, forests, water systems or railways are given (or sold at a fraction of their value) to private monopolists. The rich are bailed out by the state when they run into trouble, while the poor must sink or swim. “Free market capitalism” is a contradiction in terms.

The world’s military power exists in large part to deliver the profit from resources – especially oil – to banks and shareholders, commodity traders and asset managers, hedge funds and private equity companies. For the same purpose, the infrastructure of persuasion – lobbyists, media, social media algorithms – is mobilised to ensure the most amoral, sadistic and bellicose people are selected as leaders, as they will keep oil and other commodities flowing for the benefit of capital, whatever the human cost may be. Their opponents are demonised, alternatives dismissed as “unrealistic”, “unpopular” and “unaffordable”.

This is why we consistently underestimate other people’s desire for change. For example, one study shows that 89% of the world’s people want more action to stop climate breakdown. Yet the same people believe they’re a minority. At the height of the Covid-19 pandemic, surveys consistently showed that a vast majority hoped to emerge into a better world, where health, wellbeing and environmental protection took precedence over economic growth. But governments spent billions on restoring our dysfunctions.

As the hydrocarbon industries and their financial backers find themselves threatened by green technologies, their grip on governments and the media has tightened. They’ve poured vast sums into climate denial and public dissuasion campaigns. Politics has become harsher, less open and less tolerant. The democratic recession is in large part driven by fossil fuel interests. The entire planet suffers from the resource curse.

Oil did not cause capitalism, but it has massively extended and empowered it. Reduce our dependency on oil, and we disrupt some of the world’s most violent and exploitative relations. We defuel dictators and war machines, coups and assassinations, invasions and nuclear threats. It’s not everything of course: there will still be water wars, land wars and mineral wars to be fought: after all, the military machine can’t just sit there rusting. But it’s a lot.

We would also defuel the greatest violence human beings have ever waged against each other: the degradation of all our lives through climate breakdown. The two emergencies – political and environmental – are one. We need to put ourselves on an anti-war footing with the urgency that nations have traditionally put themselves on war footings: an emergency programme to get fossil fuels out of our lives, faster and further than any government is currently planning.

A crucial intervention is the National Emergency Briefing, whose forthcoming film, hosted in cinemas by volunteers across the country, will press the government to explain our predicament properly, and mobilise for full-scale action. If you worry about the cost, consider this. The government’s Climate Change Committee estimates that the additional expense of a single fossil-fuel price spike on the scale of 2022’s is roughly the same as the entire cost of net zero by 2050. The price shock caused by Trump’s attack on Iran is likely to be even greater. We get nothing in return for oil spikes, but we get a new, more secure and cheaper energy system in return for the net zero programme.

I don’t mean to suggest that defeating the fossil fuel machine is easy. Capital will use everything it has to stop us. This is what Extinction Rebellion discovered in the UK, as vicious new protest laws were drafted to shut it down. This is what the Standing Rock campaigners in the US found, when they sought to stop an oil pipeline from crossing their land. It’s what Earth defenders in the global south discover even more brutally, as paramilitaries gun them down. Control over resources is the driving force of politics. Democracy, at the moment, is the lightshow played on the castle walls.

Concentrated fossil power leads to concentrated political power. Had we been less dependent on fossil fuels, there might have been no President Trump, no President Putin, no ayatollahs, no Prime Minister Netanyahu. Fossil fuels push the world towards autocracy. Overthrow our demand for them, and we overthrow much of the current tyranny. Greener, cleaner, cheaper, kinder, fairer: what a beautiful world we could have.

www.monbiot.com

16:28

Memory lane for Frontier users [Scripting News]

I had to find out which domains being served by a problem server were still mapping to its domain. This server had been running for six years, and I was pretty sure some of the apps had moved.

So I wrote a script in Frontier, it was the best tool available to me, and got my answer in 20 minutes, code written from scratch.

The script visited each subfolder, the filename is the domain of the folder, finds out which server it's supposed to be running on, based on a DNS lookup, and adds a line to a list.

Here's a screen shot of the domains folder.

Here's the script as a screen shot and GitHub doc.

This is just a way to preserve a little of the Frontier culture. Hard to explain in words. Easier to show as screen shots.

16:21

[$] A PHP license change is imminent [LWN.net]

PHP's licensing has been a source of confusion for some time. The project is, currently, using two licenses that cover different parts of the code base: PHP v3.01 for the bulk of the code and Zend v2.0 for code in the Zend directory. Much has changed since the project settled on those licenses in 2006, and the need for custom licensing seems to have passed. An effort to simplify PHP's licensing, led by Ben Ramsey, is underway; if successful, the existing licenses will be deprecated and replaced by the BSD three-clause license. The PHP community is now voting on the license update RFC through April 4, 2026.

15:35

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

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

14:07

LiteLLM on PyPI is compromised [LWN.net]

This issue report describes a credential-stealing attack buried within LiteLLM 1.82.8 in the PyPI repository. It collects and exfiltrates a wide variety of information, including SSH keys, credentials for a number of cloud services, crypto wallets, and so on. Anybody who has installed this package has likely been compromised and needs to respond accordingly.

Update: see this futuresearch article for some more information. "The release contains a malicious .pth file (litellm_init.pth) that executes automatically on every Python process startup when litellm is installed in the environment."

Down: Debunking zswap and zram myths [LWN.net]

Chris Down has posted a detailed look at how the kernel's zswap and zram subsystems work — and how they differ.

Most people think of zswap and zram simply as two different flavours of the same thing: compressed swap. At a surface level, that's correct – both compress pages that would otherwise end up on disk – but they make fundamentally different bets about how the kernel should handle memory pressure, and picking the wrong one for your situation can actively make things worse than having no swap at all

Krita 5.3.0 and 6.0.0 released [LWN.net]

The Krita project has announced the release of Krita 5.3.0 and 6.0.0:

Krita 5.3/6.0 is the result of many years of work by the Krita developers. Some features have been rewritten from the ground up, others make their first appearance.

Enjoy the completely new text feature: on canvas editing, full opentype support, text flowing into shapes. It is now easier than ever to create vector-based panels for comic pages. Tools got extended: for instance, the fill tool now can close gaps. The liquify mode of the transform tool is much faster. There are new filters: a propagate colors filter and a reset transparent filter. Support for HDR painting has been improved. The recorder docker can now work in real time. There is improved support for file formats, like support for text objects in PSD files. And much, much, much more!

According to the announcement, the versions are almost functionally identical. However, the 6.0.0 release is the first based on Qt 6; it has more Wayland functionality but is considered experimental. It cautions that users should stick to 5.3.0 for real work. See the release notes for a full list of changes.

13:21

Security updates for Tuesday [LWN.net]

Security updates have been issued by Debian (strongswan and vlc), Fedora (cmake, giflib, and python-diskcache), SUSE (curl, docker-stable, freeciv, freerdp, freerdp2, freetype2, go1.25-openssl, go1.26-openssl, GraphicsMagick, gvfs, harfbuzz, kernel, lemon, libpng16, librsvg, libsodium, libsoup, net-snmp, protobuf, python-Authlib, python-maturin, python-tornado6, python310, python311-pypdf, python311-PyPDF2, python314, python39, rust-keylime, strongswan, systemd, ucode-intel, util-linux, and vim), and Ubuntu (gvfs, linux-aws-6.8, linux-azure, linux-azure, linux-azure-4.15, linux-azure-fips, linux-hwe-5.4, linux-ibm, linux-intel-iot-realtime, linux-nvidia-tegra-igx, linux-realtime-6.17, pyopenssl, rust-sized-chunks, strongswan, systemd, and tiff).

13:14

Late Payments [RevK®'s ramblings]

I don't know how I missed this consultancy, but they had said they are happy for me to send in comments.

https://www.gov.uk/government/consultations/late-payments-tackling-poor-payment-practices/outcome/late-payment-consultation-time-to-pay-up-government-response-web-version

Proposed changes to Late Payment of Commercial Debts (Interest) Act 1998

Thank you for providing contact details - I somehow missed the consultation on this, though I have been very much an advocate of this legislation since it was created, and have a web site dedicated to it paylate.co.uk

The press release led me to more concerns, but I have now read the consultation response in more detail, so these are comments on that.

Who are we?

We are an internet provider and equipment manufacturer. We turn over around £xm, have around x staff, and have thousands of customers. We sell items from as little as a £1/month, to equipment costing tens of thousands. We have commercial customers ranging from sole traders to very large corporation and even government bodies. We have been charging late payment penalties since the legislation was introduced and have experience of pursuing charges via county court as well.

Summary

We actually find the existing legislation to be very effective, and feel that the main issue is that so many small companies are still unaware that they can charge these penalties and interest. I don’t think these proposals address that. There is also a feeling that doing so risks losing important customers (something our experience says is not the case). As such we are surprised that these proposals are happening.

However, I can see some of the logic. Some proposals seem reasonable sensible, but I do have some specific comments.

Our experience

I think our experience is relevant as I am not aware of other smaller businesses fully automating late payment penalties, which we did from the start of this legislation (do look at paylate.co.uk for more).

This meant that the day a payment was late we would send an invoice for the penalty (interest was invoiced once paid). We chose to send an invoice as our experience is that any sort of payment demand or note, or polite email, would be ignored. One has to be careful to ensure no VAT nor late payment charges apply to such an invoice, but a real invoice is generally effective at getting a response.

The impact of this varied - some customers horrified (especially in the early days of the legislation). Some annoyed. We adopted a simple policy of crediting the first invoice. But it got the message across, and created some good will with the credit, and ensured we retained the customer, but that they know they would have to pay on time, and this generally works. Our accounts staff would even blame the computer - it is an automated process. But we did not lose customers over this.

Some customers had old school accounts departments that paid late as a matter of course. The actual customers, specifically the individuals we deal with, are happy with our service and exasperated with their accounts departments. The result is that we would charge, and collect, tens of thousands of pounds a year in late payment penalties - often from people persisting in paying only a few days late each month. We later started taking Direct Debit and this meant these charges dried up, a lot. Direct Debit collection is a massive benefit for getting paid on time. But we do have the occasional customer paying late and being charged every month, even now.

We also had a handful of cases of, typically smaller companies, insisting they would not pay penalties, and we took some to court and won with no problem whatsoever. That generally does not happen now as people are more aware.

It is also worth noting that one huge corporation was somewhat intractable, and we took the pragmatic decision (because of the value of the business) not to charge penalties. We left the system adding a note on each statement indicating how much they had accumulated to date (they ignored this). After many years they moved to a new supplier for unrelated reasons (which we expected would happen eventually), but they had paid every invoice a few days late. We send a final invoice for all of the late payment penalties. Many thousands of pounds, and they had no choice but to pay, which they did.

One interesting comment we have had, in light of comments on your proposal about small businesses asking for the interest - we have had customer say it is not good business practice to ask for the interest! We have replied that it is not good business practice to pay late. Others may feel intimidated.

Specifics of your proposals

New powers and reporting

These seem good in principle, and I guess making it part of large company audits makes sense. New reporting burdens are never nice, if it is simply reporting what the auditors have found, it should not be too bad.

Penalties

As for powers for imposing additional penalties: As the legislation makes this part of the terms, paying late and then paying the interest and penalties as required, is complying with the terms, ultimately? And has already imposed penalties. I can understand penalties for not paying the late payment penalties and interest, but also, is that not what county court is for? It just sounds legally a little odd (I am not a lawyer). The terms are in effect pay by this date or else if you choose to pay later then pay this extra money, in effect a choice, and compliance with either is compliance with the contract terms as such. Indeed a customer might explicitly word a contract exactly in those terms and be compliant with the Act.

In practice, if somehow it could be that everyone who is paid late actually charged the penalties and interest, that would be an administrative and financial burden on those that pay late and change their ways. At present this does not happen. I am not sure these proposals change that. I do not see customers negotiating contracts with no penalties, I see suppliers unaware or too scared to charge what is already the legally required penalties and interest.

One thought on penalties, if a business identifies through audits that it has paid suppliers late, can it not be forced to calculate and send the due penalties and interest to those suppliers that have not already demanded it - that would also be a notable disincentive and effective penalty but also benefit those that have been paid late rather than a fine paid to the government.

Personally I have always said that a company that knows it is paying late should be accounting for the accumulated debt they legally owe (even if not requested by suppliers) on its accounts, and that failing to do so is already fraudulent accounts.

Maximum payment terms

I feel the press release is somewhat misleading on this…

Re-reading the latest version of the existing Act, I see 30 day (public authority) and 60 day (other) limits already in place. I suppose the 5D(b) and 7A does allow for longer terms if not grossly unfair and I can only assume this proposal is simply to remove that option. The consultation and press release do not make it clear that it is just the removal of not grossly unfair longer terms. I hope it is not extending the 30 day limit on public authorities to 60 days. But the wording does suggest exceptions may still exist, so this is really not a significant change at all.

Personally I would be happy with something that makes 30 days much more of a default, and up to 60 days some sort of exception needing some specific justification or perhaps common established industry practice. I can see that some large customers might even now point to the Act and say that 60 days is clearly reasonable as it is allowed by the Act - however as it is already in the Act, and has not changed what we see from customers, maybe that is not such a concern.

Construction contracts

I have no experience of such.

Deadline for disputing invoices.

This does concern me. It was not that clear until I read the more detailed response what the purpose was. I do see the basic logic.

Even when a dispute is raised promptly, it needs to be clear that the undisputed amount must still be paid within terms and penalties and interest apply to that.

Also, once a dispute is raised the process for ensuring a supplier refunds a customer for the correctly disputed amount is probably important as well. This would not count for late payment penalties the other way around, and perhaps it should.

Also, what is to stop a customer simply generally disputing every invoice, so as to stop the clock? Or a supplier deliberately making it hard to understand an invoice so is can’t easily be disputed in time. Slip in some errors that won’t be spotted until too late?

A general limit on raising disputes is a concern, e.g. disputes on invoices already paid. This whole process needs to relate only to the application of late payment penalties, and not disputes in general.

For example, we deal with BT as a supplier, and the invoices each month have tens of thousands of line items. We have staff that spend time checking for errors, and there are usually some. We obviously pay the undisputed amount within terms - we pay all suppliers within terms. But the process of identifying an error can be time consuming. We also have the fact that an error might not be apparent until one of our retail/consumer customers queries something with us, and that may relate to previous invoices or even go back years. We recently found a case of a circuit for which BT have been charging for around 5 years even though they ceased it, and, being within the 6 years of the Limitations Act, we have, of course disputed the (paid) invoices, and now got a refund. Limiting our ability to dispute genuine errors is not good, in my view. I really hope that is not what is being proposed.

Mandatory interest

Again, I feel the press release is misleading on this… For a start, it only mentions interest and not the fixed penalty part, which I hope is retained.

Interest (and penalties) are in effect mandatory already. The exception is where a substantial contract remedy is agreed. I can only assume you are simply removing that option. The press release made it sound like interest was a new thing. Our experience is we have not seen any customer try and negotiate an alternative substantial remedy.

However, as a customer of BT, it happens that BT have a long standing clauses (which may even pre-date the Act) for late payment interest (not fixed penalty) which is lower than the current +8% in the Act. This change would actually make us, as a small business worse off (though, as I say, we do not pay anyone late) by making it the statutory amount.

So in our experience this is a pointless change. But I can see the logic. Maybe where the supplier is a large company and they propose in their standard terms a lower late payment penalties, that would make sense as an exception.

The consultation comments on this make little sense to me - small businesses would still have to ask for the penalties and interest (I hope the penalty aspect is retained), obviously, just like now. If the customer does not think they paid late, they are not going to work out the interest and send it! I say that the customer may not realise they paid late - and this relates not only to things like old BACS taking two days, bank holidays, wilful ignorance, etc, but companies that genuinely think that they are not getting their 30 days credit if they send payment before it is overdue, so they wait 30 days and then send, indeed feeling it is unreasonable to expect them to “do a BACS run every day”. So it is sent on the next BACS run after the payment is overdue. In that case we agreed 40 day terms to allow them time, and as predicted they started sending on the BACS run after 40 days!

No big change?

Overall this is not a big change - in effect (from our experience) the interest and penalties are a mandatory part of every commercial contract, and 60 days is a hard limit (30 for public authority). The changes remove some existing exceptions which already have wording to make them difficult (substantial remedy, grossly unfair), and we see no examples of these being used. Perhaps other industries do see them used.

Yes the auditing and reporting is new, but does that actually get small businesses actually charging the penalties and interest due? Surely many will still be either unaware, or scared to apply these charges to big customers, as now. Nothing much has changed there.

The dispute timeframe changes are a slight concern if not worded very carefully.

Suggestion

A big change would be customers that pay late having to allow for the debt due on their accounts (they probably already should), as well as include it in auditing, and report it. Then the possibility that they can be ordered to calculate and pay suppliers (that have not demanded it) what is due. A few high profile cases of that and it would scare large late payers in to action, and also make the smaller suppliers aware of what they should have already been charging.

I hope that is useful feedback.

12:35

Link [Scripting News]

You can't really use Claude to do research. It always assumes you're trying to do something. If you don't tell it what you're trying to do it guesses, and then starts telling you what to do. Its guesses are always wildly wrong. How do you tell it to stop telling you what to do? It totally disrupts your train of thought. But it makes me miss the days of Stack Exchange and Google search.

Online suckage is everywhere [Scripting News]

The 300 char limit here has as much suckage as Claude pretending you want to know what it thinks you're trying to do.

It's another freaking algorithm.

Bluesky assumes you can say whatever you have to say in 300 characters. It's a fucking machine, how could it possibly know.

Claude thinks it can tell me what to do, but it's a fucking machine. it has no idea what i'm doing.

First we need freedom from billionaires. Then we need freedom from character limits. And finally we need freedom from machines who think they know better.

AND THE STUPID THING ABOUT CLAUDE IS IT DOESN'T EVEN SAY WHAT IT THINKS YOU'RE TRYING TO DO. YOU HAVE TO READ WHAT IT SAYS AND THEN TRY TO GUESS. YOU QUICKLY LOSE YOUR MIND THAT WAY. MAYBE THAT'S THE POINT.

And how mad can you get at a machine named Bluesky or Claude. They should call these things Mind-Killer or Soul-Sucker or You-Cuck. Then at least you'd know why you're there. :-)

BTW, as long as Bluesky has a 300 char limit and no style or links, I'm going to have to hand-translate posts there to become posts here where no such limits prevail. At some point either they give up on the limits or I give up on them.

11:49

How to Build a General-Purpose AI Agent in 131 Lines of Python [Radar]

The following article originally appeared on Hugo Bowne-Anderson’s newsletter, Vanishing Gradients, and is being republished here with the author’s permission.

In this post, we’ll build two AI agents from scratch in Python. One will be a coding agent, the other a search agent.

Why have I called this post “How to Build a General-Purpose AI Agent in 131 Lines of Python” then? Well, as it turns out now, coding agents are actually general-purpose agents in some quite surprising ways.

What I mean by this is once you have an agent that can write code, it can:

  1. Do a huge number of things you don’t often think of as involving code, and
  2. Extend itself to do even more things.

It’s more appropriate to think of coding agents as “computer-using agents” that happen to be great at writing code. That doesn’t mean you should always build a general-purpose agent, but it’s worth understanding what you’re actually building when you give an LLM shell access. That’s also why we’ll build a search agent in this post: to show the pattern works regardless of what you’re building.

For example, the coding agent we’ll build below has four tools: read, write, edit, and bash.

Watch this two-minute video to see how it can clean your desktop and why you should think of coding agents as “computer-using agents” that happen to be great at writing code:

It can do

  • File/life organization: Clean your desktop, sort downloads by type, rename vacation photos with dates, find and delete duplicates, organize receipts into folders. . .
  • Personal productivity: Search all your notes for something you half-remember, compile a packing list from past trips, find all PDFs containing “tax” from last year. . .
  • Media management: Rename a season of TV episodes properly, convert images to different formats, extract audio from videos, resize photos for social media. . .
  • Writing and content: Combine multiple docs into one, convert between formats, find-and-replace across many files. . .
  • Data wrangling: Turn a messy CSV into a clean address book, extract emails from a pile of files, merge spreadsheets from different sources. . .

This is a small subset of what’s possible. It’s also the reason Claude Cowork seemed promising and why OpenClaw has taken off in the way it did.

So how can you build this? In this post, I’ll show you how to build a minimal version.

Agents are just LLMs with tools in a loop

Agents are just LLMs with tools in a conversation loop and once you know the pattern, you’ll be able to build all types of agents with it:

Builder's playbook

As Ivan Leo wrote,

The barrier to entry is remarkably low: 30 minutes and you have an AI that can understand your codebase and make edits just by talking to it.

The goal here is to show that the pattern is the same regardless of what you’re building an agent for. Coding agent, search agent, browser agent, email agent, database agent: they all follow the same structure. The only difference is the tools you give them.

Part 1: The coding agent

We’ll start with a coding agent that can read, write, and execute code. As stated, the ability to write and execute code with bash also turns a “coding agent” into a “general-purpose agent.” With shell access, it can do anything you can do from a terminal:

  • Sort and organize your local filesystem
  • Clean up your desktop
  • Batch rename photos
  • Convert file formats
  • Manage Git repos across multiple projects
  • Install and configure software

You can find the code here.

Check out Ivan Leo’s post for how to do this in JavaScript and Thorsten Ball’s post for how to do it in Go.

Setup

Start by creating our project:

Create project

We’ll be using Anthropic here. Feel free to use your LLM of choice. For bonus points, use Pydantic AI (or a similar library) and have a consistent interface for the various different LLM providers. That way you can use the same agentic framework for both Claude and Gemini!

Make sure you’ve got an Anthropic API key set as ANTHROPIC_API_KEY environment variable.

We’ll build our agent in four steps:

  1. Hook up our LLM
  2. Add a tool that reads files
    1. Add more tools: write, edit, and bash
  3. Build the agentic loop
  4. Build the conversational loop

1. Hook up our LLM

Hook up LLM 1 Hook up LLM 2

Text in, text out. Good! Now let’s give it a tool.

2. Add a tool (read)

We’ll start by implementing a tool called read which will allow the agent to read files from the filesystem. In Python, we can use Pydantic for schema validation, which also generates JSON schemas we can provide to the API:

JSON schema generation

The Pydantic model gives us two things: validation and a JSON schema. We can see what the schema looks like:

What the schema looks like JSON schema

We wrap this into a tool definition that Claude understands:

Interpret for Claude

Then we add tools to the API call, handle the tool request, execute it, and send the result back:

Add tools, handle request, execute, send result

Let’s see what happens when we run it:

Script when run

This script calls the Claude API with a user query passed via command line. It sends the query, gets a response, and prints it.

Note that the LLM matched on the tool description: Accurate, specific descriptions are key! It’s also worth mentioning that we’ve made two LLM calls here:

  • One in which the tool is called
  • A second in which we send the result of the tool call back to the LLM to get the final result

This often trips up people building agents for the first time, and Google has made a nice visualization of what we’re actually doing:

2a. Add more tools (write, edit, bash)

We have a read tool, but a coding agent needs to do more than read. It needs to:

  • Write new files
  • Edit existing ones
  • Execute code to test it

That’s three more tools: write, edit, and bash.

Same pattern as read. First the schemas:

First, the schemas

Then the executors:

Then, the executors

And the tool definitions, along with the code that runs whichever one Claude picks:

And the tool definitions

The bash tool is what makes this actually useful: Claude can now write code, run it, see errors, and fix them. But it’s also dangerous. This tool could delete your entire filesystem! Proceed with caution: Run it in a sandbox, a container, or a VM.

Interestingly, bash is what turns a “coding agent” into a “general-purpose agent.” With shell access, it can do anything you can do from a terminal:

  • Sort and organize your local filesystem
  • Clean up your desktop
  • Batch rename photos
  • Convert file formats
  • Manage Git repos across multiple projects
  • Install and configure software

It was actually “Pi: The Minimal Agent Within OpenClaw” that inspired this example.

Try asking Claude to edit a file: It often wants to read it first to see what’s there. But our current code only handles one tool call. That’s where the agentic loop comes in.

3. Build the agentic loop

Right now Claude can only call one tool per request. But real tasks need multiple steps: read a file, edit it, run it, see the error, fix it. We need a loop that lets Claude keep calling tools until it’s done.

We wrap the tool handling in a while True loop:

Wrap in a while True loop

Note that here we have sent the entire past history of accumulated messages as we progress through loop iterations. When building this out more, you’ll want to engineer and manage your context more effectively. (See below for more on this.)

Let’s try a multistep task:

Multistep task

4. Build the conversational loop

Right now the agent handles one query and exits. But we want a back-and-forth conversation: Ask a question, get an answer, ask a follow-up. We need an outer loop that keeps asking for input.

We wrap everything in a while True:

We wrap everything in a while True

The messages list persists across turns, so Claude remembers context. That’s the complete coding agent.

Once again we’re merely appending all previous messages, which means the context will grow quite quickly!

A note on agent harnesses

An agent harness is the scaffolding and infrastructure that wraps around an LLM to turn it into an agent. It handles:

  • The loop: prompting the model, parsing its output, executing tools, feeding results back
  • Tool execution: actually running the code/commands the model asks for
  • Context management: what goes in the prompt, token limits, history
  • Safety/guardrails: confirmation prompts, sandboxing, disallowed actions
  • State: keeping track of the conversation, files touched, etc.

And more.

Think of it like this: The LLM is the brain; the harness is everything else that lets it actually do things.

What we’ve built above is the hello world of agent harnesses. It covers the loop, tool execution, and basic context management. What it doesn’t have: safety guardrails, token limits, persistence, or even a system prompt!

When building out from this basis, I encourage you to follow the paths of:

  • The Pi coding agent, which adds context loading AGENTS.md from multiple directories, persistent sessions you can resume and branch, and an extensibility system (skills, extensions, prompts)
  • OpenClaw, which goes further: a persistent daemon (always-on, not invoked), chat as the interface (Telegram, WhatsApp, etc.), file-based continuity (SOUL.md, MEMORY.md, daily logs), proactive behavior (heartbeats, cron), preintegrated tools (browser, subagents, device control), and the ability to message you without being prompted

Part 2: The search agent

In order to really show you that the agentic loop is what powers any agent, we’ll now build a search agent (inspired by a podcast I did with search legends John Berryman and Doug Turnbull). We’ll use Gemini for the LLM and Exa for web search. You can find the code here.

But first, the astute reader may have an interesting question: If a coding agent really is a general-purpose agent, why would anyone want to build a search agent when we could just get a coding agent to extend itself and turn itself into a search agent? Well, because if you want to build a search agent for a business, you’re not going to do it by building a coding agent first… So let’s build it!

Setup

As before, we’ll build this step-by-step. Start by creating our project:

Start by creating our project

Set GEMINI_API_KEY (from Google AI Studio) and EXA_API_KEY (from exa.ai) as environment variables.

We’ll build our agent in four steps (the same four steps as always):

  1. Hook up our LLM
  2. Add a tool (web_search)
  3. Build the agentic loop
  4. Build the conversational loop

1. Hook up our LLM

Hook up our LLM, again Who is Doug Turnbull?

2. Add a tool (web_search)

Gemini can answer from its training data, but we don’t want that, man! For current information, it needs to search the web. We’ll give it a web_search tool that calls Exa.

web_search tool

The system instruction grounds the model, (ideally) forcing it to search instead of guessing. Note that you can configure Gemini to always use web_search, which is 100% dependable, but I wanted to show the pattern that you can use with any LLM API.

We then send the tool call result back to Gemini:

Tool call result back to Gemini

3. Build the agentic loop

Some questions need multiple searches. “Compare X and Y” requires searching for X, then searching for Y. We need a loop that lets Gemini keep searching until it has enough information.

Build the agentic loop Build the agentic loop 2

4. Build the conversational loop

Same as before: We want back-and-forth conversation, not one query and exit. Wrap everything in an outer loop:

Build the conversational loop

Messages persist across turns, so follow-up questions have context.

Extend it

The pattern is the same for both agents. Add any tool:

  • web_search to the coding agent: Look things up while coding
  • bash to the search agent: Act on what it finds
  • browser: Navigate websites
  • send_email: Communicate
  • database_query: Run SQL

One thing we’ll be doing is showing how general purpose a coding agent really can be. As Armin Ronacher wrote in “Pi: The Minimal Agent Within OpenClaw”:

Pi’s entire idea is that if you want the agent to do something that it doesn’t do yet, you don’t go and download an extension or a skill or something like this. You ask the agent to extend itself. It celebrates the idea of code writing and running code.

Conclusion

Building agents is straightforward. The magic isn’t complex algorithms; it’s the conversation loop and well-designed tools.

Both agents follow the same pattern:

  1. Hook up the LLM
  2. Add a tool (or multiple tools)
  3. Build the agentic loop
  4. Build the conversational loop

The only difference is the tools.

Thank you to Ivan Leo, Eleanor Berger, Mike Powers, Thomas Wiecki, and Mike Loukides for providing feedback on drafts of this post.

Pluralistic: Goodhart's Law vs "prediction markets" (24 Mar 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links



A photo of people crowded around a craps table, shot with a low POV, where the dice would end up after a throw, looking back towards the players. The table is dotted with rising mushroom clouds, and at the head end of the table yawns the smoking mouth of a cannon.

Goodhart's Law vs "prediction markets" (permalink)

The most selectively believed-in verse in the conservative catechism is the idea that "incentives matter."

Sure, "incentives matter" if you're seeking healthcare. That's why you're nibbled to death by co-pays and deductibles – if you could get healthcare whenever you felt like it, you might get too much healthcare. "Incentives matter," so we have to make sure that you only seek care when you really need it:

https://pluralistic.net/2025/04/14/timmy-share/#a-superior-moral-justification-for-selfishness

But rich people don't need to be disciplined by incentives. They can get no-bid contracts with Uncle Sucker without being tempted to rip off the USA. They can force their workers into nondisparagement clauses without being tempted to act like a colossal asshole, secure in the knowledge that they can sue workers who tattle on them. They can force their workers into noncompete clauses without being tempted to underpay and abuse their workers, secure in the knowledge that they can sue workers who take their labor elsewhere. They can force their workers into binding arbitration clauses without being tempted into maiming or killing them, secure in the knowledge that the workers can't sue them.

So incentives matter…when you're fucking over working people. But incentives don't matter, when you're gilding the Epstein class's lilies.

But incentives really do matter. That's the premise of Goodhart's law: "When a measure becomes a target, it ceases to be a good measure." This comes up all the time. Google got its start by observing that people who made websites linked to other websites that they found important or worthy or informative. With this insight, Google repurposed the academic practice of "citation analysis" to predict which pages on the internet were most authoritative, calling it Pagerank.

Google Search, powered by Pagerank, was vastly superior to any search engine in history. But as soon as Google became the most popular search engine, people started making links to bad websites – sites filled with spam and malware and junk – in order to game the results. The metric – inbound links – became a target – get inbound links – and stopped being a useful metric.

There is something quite wonderful and life affirming about the idea of Pagerank: the idea that people are, on average, pretty good at figuring out what's good. Rather than taking Yahoo's approach of having experts rank and categorize every website on earth, Google trusted "the wisdom of crowds" and it worked (until they created an incentive to subvert it).

"The wisdom of crowds" was in the air in those days. James Surowiecki had a massive bestseller with that title in 2004, expounding on the idea that people were, in aggregate, good at figuring stuff out:

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

Surowiecki's book revolved around a famous anecdote from 1906, when 800 people at the Plymouth county fair were invited to guess at the weight of a slaughtered and dressed ox. Statistician (and eugenicist creep) Francis Galton noted that the average guess of 1207 lbs was within 1% of the actual weight, 1198 lbs. This turns out to be a repeatable phenomenon: if you get a lot of people – non-experts, experts, people paying close attention, people who barely think about it – to guess about something, the average is surprisingly accurate. Importantly, it's often more accurate than the best guess of experts.

This idea of the wisdom of crowds inspired a lot of 2000s-era internet projects. Some of them (Yahoo Answers) were pretty bad. Others (Wikipedia) were astounding. Of course, economists observed that "the wisdom of crowds" sounds a lot like the idea of "price discovery" – the idea that markets are a way of processing widely diffused information about desires and capacity in order to derive and emit signals about what should be produced.

Economists have long spoken of future events being "priced in" to markets – for example, the price of oil today reflects more than the diminished supply resulting from Trump's military blunders, it also reflects "the market's" belief that oil production capacity will be disrupted for a long time to come. Add up all the different buyers' and sellers' guesses about the future of oil (incorporating diffuse knowledge about damage to infrastructure, capacity to rebuild, and intentions of the actors) and (we're told) we'll get a number that accurately reflects the real situation.

And, unlike Pagerank, this number can't be manipulated by flooding the system with spurious, self-serving inputs. If you want to move this price, you have to buy or sell something, which costs money. And because the market is "deep" (with a lot of participants), the sums you'd have to inject into the system to alter its consensus is incredibly large – more than you could possibly stand to make by manipulating the price itself. Incentives matter.

Put "markets," "the wisdom of crowds" and "incentives matter" together and you get "prediction markets." Just create a market where people can bet real money on the outcomes of events and you can recreate Galton's ox-guessing miracle, but for everything – how much new solar capacity will come online in Pakistan next year; the likelihood that the Toronto Transit Commission will finish the Ontario Line this year; whether a biotech firm will ship an AIDS vaccine before 2040.

This is where Goodhart's law comes in. The idea that betting markets improve the wisdom of crowds because participants have "skin in the game" only works if the cheapest way to win a bet is to be right. If it's cheaper to win by cheating, well, "incentives matter," and you'll get cheating.

Any prediction market needs an "oracle" – a decisive source of truth about how an event turned out. "How much new solar capacity came online in Pakistan" this year sounds like an empirical question, but unless every bettor agrees to travel to Pakistan together and walk the land, counting solar panels and checking proof of their installation dates, these bettors need to agree on some third party assessor as authoritative and trust whatever they say.

Which means that the single most important factor in any prediction market is the quality of the oracle. If you let Trump be your oracle, he'll insist (on a daily basis) that his war in Iran is over, and that he had bigger crowds for his inauguration than anyone in history, and that every criminal is Somali, and on and on and on.

So you need to get someone trustworthy and diligent to serve as your oracle. But that person also has to be incorruptible, because otherwise a bettor will offer them a bribe to lie about the outcome of a bet. And if the oracle can't be bribed, they can be coerced.

That's just what's happened. Times of Israel war correspondent Emanuel Fabian didn't know that he was serving as an oracle for a bunch of degenerate gamblers on Polymarket – until he wrote a 150 word blog post that made a bunch of bettors in a $14m wager very, very angry:

https://www.timesofisrael.com/gamblers-trying-to-win-a-bet-on-polymarket-are-vowing-to-kill-me-if-i-dont-rewrite-an-iran-missile-story/

The $14m was riding on a bet about when Iran would successfully strike Israel, with "success" defined as a missile getting through without being intercepted. Fabian filed a routine report that a missile had struck an open area in Jerusalem without hurting anyone. That's when the degenerate gamblers found him.

At first, they sent thinly veiled threats, demanding that Fabian revise his reporting to say that the missile had been intercepted and that the impact was just wreckage from the interception. When Fabian did not revise his article, the gamblers tracked down his messaging IDs – Whatsapp, Discord, X – and bombarded him with escalating threats. A journalistic colleague contacted Fabian with the lie that his boss wanted Fabian to change the story, then admitted that he was actually invested in the wager, and offered to split the money with Fabian.

Then, a gambler calling himself "Haim" sent Fabian a new series of blood-curdling threats, including a promise to spend at least $900,000 (the money Haim said he stood to lose) on a hit-man to kill Fabian. Haim threatened Fabian's "lovely parents" and "brothers and sisters" too. The threats continued until Fabian published his article about the threats, then Haim disappeared.

Speaking to Charlie Warzel, Fabian said that he would never be able to report the same way again, because from now on, he'd be worried that some gambler would threaten to kill him if they didn't like what he wrote:

https://www.theatlantic.com/technology/2026/03/emanuel-fabian-threats-polymarket/686454/?gift=nwn-guseqS6cY1kVeEKZAY9_c8Sv4UbJoz5hAUuU8YE&amp;utm_source=copy-link&amp;utm_medium=social&amp;utm_campaign=share

It's sadly not unusual for journalists to receive death threats for reporting the truth, and Israel is the most dangerous country in the world to be a journalist. The IDF has murdered at least 274 journalists to date:

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

But those journalists are being murdered for political reasons, because someone has an ideological stake in suppressing the truth. Fabian's talking about an entirely novel – and far less predictable – threat; namely, that you will piss off someone who guessed wrong about the outcome of some arbitrary event and who thinks that they can salvage their bet by intimidating you.

Writing for Techdirt, Mike Masnick talks about the sheer perversity of this: that prediction markets, far from being a means of surfacing hidden information, have become a system for distorting information:

https://www.techdirt.com/2026/03/19/prediction-markets-promised-better-information-instead-theyre-creating-powerful-incentives-to-corrupt-information/

As Masnick says, this is no routine proof of Goodhart's law, where a metric becomes a target. In this case, participants can "put a gun to the metric's head." And of course, not every journalist is as incorruptible as Fabian – think about Fabian's colleague who offered to split the take if Fabian would lie about the missile strike. So there's plenty of incentive to publish lies – and incentives matter, right?

Now, "prediction markets" are big business and they have plenty of apologists (incentives matter). These apologists will say that the corruption is a feature, not a bug, because prediction markets will attract insiders who cheat on the bets by using their insider knowledge, and that means that looking at the moving odds of an event can help everyone else figure out what's about to happen. If military insiders who know that Trump is about to kidnap the president of Venezuela and steal its oil start laying big bets that this is going to happen, the shifting odds are a signal about a true future event.

But even if you buy this perverse argument, it doesn't offset the even more perverse effect – that prediction markets create an incentive to corrupt our best sources of information, the oracles that every prediction market absolutely requires if it is going to hope to function.

Meanwhile, Polymarket and Kalshi suck at predicting things. As Molly White points out, the predictions in the recent Illinois 2nd District Congressional race weren't just incredibly wrong, they also precisely tracked the sums flooded into the election by cryptocurrency Super PACs, who tried (unsuccessfully) to buy the race. Polymarket and Kalshi are heavily crypto-coded (the only things you can do with crypto is buy other kinds of crypto, launder money, and make wagers) so these demonic freaks flush nearly as much money into the betting markets as they do into the elections they seek to corrupt:

https://bsky.app/profile/molly.wiki/post/3mhch3ze5nc2z

Prediction markets aren't good at producing information, but they're amazing at producing corruption. Polymarket and Kalshi have at last realized the unhinged fantasy of "assassination markets" – where you stochastically murder someone by putting up huge wagers at favorable odds that your target will be killed. Anyone can collect the wager by putting up a small counterwager and then bumping off the victim. But, as Protos's Cas Piancey and Mark Toon note, Polymarket and Kalshi know what side their bread is buttered on – they have banned bets on Trump's death (Trump's sons are heavily invested in both Polymarket and Kalshi):

https://protos.com/assassination-markets-are-legal-now-but-trump-doesnt-have-to-worry/

Incentives do matter. These are the foreseeable and foreseen outcomes of prediction markets. Many science fiction writers (Charlie Stross, Ted Chiang, me, and others!) have noted that long before the current AI bubble, our society was dominated by artificial life forms: the limited liability corporation, a "slow AI" that is an immortal colony organism that uses human beings as a form of inconvenient gut flora:

https://pluralistic.net/2023/03/09/autocomplete-worshippers/#the-real-ai-was-the-corporations-that-we-fought-along-the-way

Anyone who's worked with machine learning systems knows that they're prone to "reward hacking," like the ML-guided Roomba that was programmed to avoid collisions with walls and furniture as it found the quickest path around the room. The Roomba's collision sensor was on its front face, so the Roomba started moving around the room in reverse, smashing the hell out of the furnishings and walls, but never registering a hit:

https://web.archive.org/web/20190109142921/https://twitter.com/smingleigh/status/1060325665671692288

Markets are absolutely capable of inducing reward hacking in participants. The metric becomes a target. You think you're betting on the outcome of an event, but what you're really betting on is what an oracle will say the outcome was. No matter what the outcome is or how robust it is against outside influence, the oracle can be influenced with a gun to the temple. Sure, we all want "number go up," but why bother increasing the thing the number measures, when it's so much easier to threaten to dismember the person who publishes the number if they don't publish a higher number?


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 Airport screening doesn’t stop knives, bombs, or guns https://www.schneier.com/blog/archives/2006/03/airport_passeng.html

#20yrsago Apple’s hypocritical slam against French DRM-interop law http://news.bbc.co.uk/2/hi/technology/4833010.stm

#20yrsago Vinge’s scientific computing Nature article about MMORPGs https://web.archive.org/web/20060411235146/http://www.nature.com/news/2006/060320/full/440411a.html

#20yrsago Yahoo: if you use our ads, you have to block non-US visitors https://memex.craphound.com/2006/03/22/yahoo-if-you-use-our-ads-you-have-to-block-non-us-visitors/

#20yrsago Stand-up comic gets his material from dumb patents https://web.archive.org/web/20060613212120/https://www.wired.com/news/technology/0,70368-0.html?tw=rss.index

#15yrsago Chinese censorware nukes any voicecall that contains the word “protest” https://www.nytimes.com/2011/03/22/world/asia/22china.html?_r=2&amp;ref=world

#15yrsago Why Rasputin isn’t in the Haunted Mansion https://longforgottenhauntedmansion.blogspot.com/2011/03/famous-ghosts-and-ghosts-trying-to-make.html

#15yrsago HOWTO play the opening chord from ‘A Hard Day’s Night’ https://www.beatlesbible.com/features/hard-days-night-chord/

#15yrsago Google Book Search rejected: why not try fair use instead? https://arstechnica.com/tech-policy/2011/03/judge-rejects-google-book-monopoly/

#10yrsago Harvard Blue Book: peace in our time? https://web.archive.org/web/20160322020137/https://hlrecord.org/2016/03/the-blue-wars-a-report-from-the-front/

#10yrsago Mondrian pong https://b3ta.com/board/11191694

#10yrsago Silverpush says it’s not in the ultrasonic audio-tracker ad-beacons business anymore https://web.archive.org/web/20160324110815/https://motherboard.vice.com/read/silverpush-ftc-stop-eavesdropping-with-audio-beacons

#10yrsago Nixon started the War on Drugs because he couldn’t declare war on black people and hippies https://harpers.org/archive/2016/04/legalize-it-all/?single=1

#10yrsago Anti-DRM demonstrators picket W3C meeting https://www.eff.org/deeplinks/2016/03/scenes-anti-drm-protest-outside-w3c

#10yrsago Student loan garnisheeing topped $176M in three months https://web.archive.org/web/20160322023207/https://consumerist.com/2016/03/21/176m-in-wages-garnished-for-unpaid-federal-student-loans-in-just-three-months/

#10yrsago Dozens of car models can be unlocked and started with a cheap radio amp https://www.adac.de/rund-ums-fahrzeug/ausstattung-technik-zubehoer/assistenzsysteme/keyless/

#10yrsago US Embassy staffer ran a sextortion racket from work computer for 2 years https://arstechnica.com/tech-policy/2016/03/former-us-embassy-staffer-sentenced-to-nearly-five-years-for-sextortion/

#5yrsago Patent troll IP is more powerful than Apple's https://pluralistic.net/2021/03/22/gandersauce/#petard


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 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "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 (646 words today, 55270 total) FIRST DRAFT COMPLETE

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

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

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

Medium (no ads, paywalled):

https://doctorow.medium.com/
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

11:35

CodeSOD: The Barren Fields [The Daily WTF]

Today, it's not exactly the code that was bad. For some time, a government agency had been collecting information from users using fillable PDF forms. The user would submit the form, and then a data entry clerk would copy the text from the form into a database. This, of course, raised the question: why was someone manually riding the copy/paste button?

Sally was tasked with automating this. The data is already in a digital format, so it should be easy to use a PDF library to parse out the entered data and insert it into the database. And it almost was.

Sally shares with us, not code, but the output of her program which scanned the fields, looking for their names:

FieldType: Text
FieldName: T5ZA1
FieldNameAlt: T5ZA1
FieldFlags: 25165824
FieldJustification: Left
FieldMaxLength: 3
---
FieldType: Text
FieldName: T5ZA2
FieldNameAlt: T5ZA2
FieldFlags: 25165824
FieldJustification: Left
FieldMaxLength: 2
---
FieldType: Text
FieldName: T5ZA3
FieldNameAlt: T5ZA3
FieldFlags: 25165824
FieldJustification: Left
FieldMaxLength: 4

I could go on, Sally certainly shared many more examples, but you can get the gist. The names were all cryptic five character blobs. They all start with T5Z, and followed by "letternumber": A3, B9, C2, etc. It has the vibe of being autogenerated; someone just never considered that they might want clear names for the fields, and just let their editor autonumber them, but that has one counterpoint to it: the letter "O" is never used. T5ZN9 is followed by T5ZP1.

Sally was left scratching her head. Of course, she was going to have to write some sort of lookup that would convert the PDF's field names into database field names, but she expected that the PDF would provide at least some sort of guidance on that front.

I really enjoy that the alt-text for every field is also the field name, which is a clear accessibility "win".

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

11:07

Team Mirai and Democracy [Schneier on Security]

Japan’s election last month and the rise of the country’s newest and most innovative political party, Team Mirai, illustrates the viability of a different way to do politics.

In this model, technology is used to make democratic processes stronger, instead of undermining them. It is harnessed to root out corruption, instead of serving as a cash cow for campaign donations.

Imagine an election where every voter has the opportunity to opine directly to politicians on precisely the issues they care about. They’re not expected to spend hours becoming policy experts. Instead, an AI Interviewer walks them through the subject, answering their questions, interrogating their experience, even challenging their thinking.

Voters get immediate feedback on how their individual point of view matches—or doesn’t—a party’s platform, and they can see whether and how the party adopts their feedback. This isn’t like an opinion poll that politicians use for calculating short-term electoral tactics. It’s a deliberative reasoning process that scales, engaging voters in defining policy and helping candidates to listen deeply to their constituents.

This is happening today in Japan. Constituents have spent about eight thousand hours engaging with Mirai’s AI Interviewer since 2025. The party’s gamified volunteer mobilization app, Action Board, captured about 100,000 organizer actions per day in the runup to last week’s election.

It’s how Team Mirai, which translates to ‘The Future Party,’ does politics. Its founder, Takahiro Anno, first ran for local office in 2024 as a 33 year old software engineer standing for Governor of Tokyo. He came in fifth out of 56 candidates, winning more than 150,000 votes as an unaffiliated political outsider. He won attention by taking a distinctive stance on the role of technology in democracy and using AI aggressively in voter engagement.

Last year, Anno ran again, this time for the Upper Chamber of the national legislature—the Diet—and won. Now the head of a new national party, Anno found himself with a platform for making his vision of a new way of doing politics a reality.

In this recent House of Representatives election, Team Mirai shot up to win nearly four million votes. In the lower chamber’s proportional representation system, that was good enough for eleven total seats—the party’s first ever representation in the Japanese House—and nearly three times what it achieved in last year’s Upper Chamber election.

Anno’s party stood for election without aligning itself on the traditional axes of left and right. Instead, Team Mirai, heavily associated with young, urban voters, sought to unite across the ideological spectrum by taking a radical position on a different axis: the status quo and the future. Anno told us that Team Mirai believes it can triple its representation in the Diet after the next elections in each chamber, an ostentatious goal that seems achievable given their rapid rise over the past year.

In the American context, the idea of a small party unifying voters across left and right sounds like a pipe dream. But there is evidence it worked in Japan. Team Mirai won an impressive 11% of proportional representation votes from unaffiliated voters, nearly twice the share of the larger electorate. The centerpiece of the party’s policy platform is not about the traditional hot button issues, it’s about democracy itself, and how it can be enhanced by embracing a futuristic vision of digital democracy.

Anno told us how his party arrived at its manifesto for this month’s elections, and why it looked different from other parties’ in important ways. Team Mirai collected more than 38,000 online questions and more than 6,000 discrete policy suggestions from voters using its AI Policy app, which is advertised as a ‘manifesto that speaks for itself.’

After factoring in all this feedback, Team Mirai maintained a contrarian position on the biggest issue of the election: the sales tax and affordability. Rather than running on a reduction of the national sales tax like the major parties, Team Mirai reviewed dozens of suggestions from the public and ultimately proposed to keep that tax level while providing support to families through a child tax credit and lowering the required contribution for social insurance. Anno described this as another future-facing strategy: less price relief in the short term, but sustained funding for essential programs.

Anno has always intended to build a different kind of party. After receiving roughly $1 million in public funding apportioned to Team Mirai based on its single seat in the Upper Chamber last year, Anno began hiring engineers to enhance his software tools for digital democracy.

Anno described Team Mirai to us as a ‘utility party;’ basic infrastructure for Japanese democracy that serves the broader polity rather than one faction. Their Gikai (‘assembly’) app illustrates the point. It provides a portal for constituents to research bills, using AI to generate summaries, to describe their impacts, to surfacing media reporting on the issue, and to answer users’ questions. Like all their software, it’s open source and free for anyone, in any party, to use.

After last week’s victory, Team Mirai now has about $5 million in public funding and ambitions to grow the influence of their digital democracy platform. Anno told us Team Mirai has secured an agreement with the LDP, Japan’s dominant ruling party, to begin using Team Mirai’s Gikai and corruption-fighting Mirumae financial transparency tool.

AI is the issue driving the most societal and economic change we will encounter in our lifetime, yet US political parties are largely silent. But AI and Big Tech companies and their owners are ramping up their political spending to influence the parties. To the extent that AI has shown up in our politics, it seems to be limited to the question of where to site the next generation of data centers and how to channel populist backlash to big tech.

Those are causes worthy of political organizing, but very few US politicians are leveraging the technology for public listening or other pro-democratic purposes. With the midterms still nine months away and with innovators like Team Mirai making products in the open for anyone to use, there is still plenty of time for an American politician to demonstrate what a new politics could look like.

This essay was written with Nathan E. Sanders, and originally appeared in Tech Policy Press.

09:07

Numbers and the human/computer interface [Seth's Blog]

If you tell me your ID number, your phone number or the wiring instructions for your bank account, not only will I forget them, I’ll need you to repeat it a few times so I write it down without making a transcription error.

When we first started using serial numbers (the Roman Legion did this thousands of years ago, and the British Board of Ordnance required it by law in the 1700s), it made perfect sense. Issue the next number on the list and move on.

But numbers alone are difficult for humans to error check and handle. So we use computers to help. The problem lies in the pesky humans who are still part of the chain.

So, here’s a simple hack. It’s unlikely to catch on worldwide, but I think it’s fascinating enough to consider…

If you had a list of 150 three letter words, all selected to be easy to say, spell and discern, you could use them to replace numbers in a productive and useful way.

So, big bob zap car cat is five words next to each other. There are 75 billion combinations of five words, which means that it replaces a number like 4839450381 with room to spare.

For ATMs that are four or five digits, you only need three words.

Think about that the next time you need to tell a customer service person your order number or serial number, or share a wifi password.

Let the computer do the work.

07:49

Let’s Get Tested by Hien Pham [Oh Joy Sex Toy]

Let’s Get Tested by Hien Pham

What does STI testing look like in Australia? Why would I want to get tested? Why wouldn’t I? This story is my thank-you letter to sexual health clinics, nurses, and doctors everywhere! And more specifically: thank you to Peter from Perth’s own M Clinic and Stewart from WAAC for their time, patience, and expertise for […]

05:28

Russ Allbery: Review: A Shadow in Summer [Planet Debian]

Review: A Shadow in Summer, by Daniel Abraham

Series: Long Price Quartet #1
Publisher: Tor
Copyright: March 2006
ISBN: 0-7653-1340-5
Format: Hardcover
Pages: 331

A Shadow in Summer is a high fantasy novel, the first of (as the name implies) a completed four-book series. Daniel Abraham is perhaps better known as half of the writing pair behind James S.A. Corey, author of the Expanse series. This was his first novel.

Otah was the sixth son of a Khai, sent like many of the unwanted later children of the powerful to learn the secrets of the andat and be trained as a poet. He learned his lessons well enough to reject the school and its teachings and walk away.

Amat Kyaan has worked her way up from nothing to become the senior overseer of the foreign Galtic House Wilsin in the sun-drenched port city of Saraykeht. Liat is her apprentice, distracted by young love. Maati is a new apprentice poet, having endured his training and sent to learn from Heshai how to eventually hold the andat Removing-The-Part-That-Continues, better known as Seedless. None of them know they will find themselves entangled in a plot to destroy the poet of Saraykeht and, through him, the city's most potent economic tool.

A poet in this world is not what we would think of a poet. They are, in essence, magical slave-drivers who capture the essence of an andat, a spirit embodying an idea that is coerced into the prison of volition and obedience by the poet. The andat Seedless, the embodiment of the concept of removing the spark of life, is central to the economic wealth of Saraykeht in a way that is startling in its simplicity: Seedless can remove the seeds from a warehouse full of cotton at a thought. This gives Saraykeht a massive productivity advantage in the cotton trade.

Seedless is also a powerful potential weapon. What he can do to cotton, he could as easily do to any other crop, or to people. The Galts are not fond of the independence and power of Saraykeht, but as long as the city controls a powerful andat, they do not dare to attack it directly. Indirectly, though... that's another matter.

This is one of those fantasy novels with meticulous and thoughtful world-building, careful and evocative prose, and a complex ensemble cast of interesting characters that the novel then attempts to make utterly miserable and complicit in their own misery. There should be a name for this style of writing. It's not tragedy because the ending is not tragic, precisely. It's not magic realism; the andats are openly magical, which makes this clearly high fantasy. But Abraham approaches the story from the type of realist frame that considers the pain and desperation of the characters to be more interesting than their ability to overcome challenges.

Amat starts the story as an admirable, sharp-witted expert manager, so her life is destroyed and she's subjected to sexual violence. Heshai loathes himself and veers between a tragic figure and a wastrel as the story systematically undermines opportunities for redemption. Maati is young and idealistic, so of course every character in the book sets out to crush his idealism under the weight of unforeseen consequences. There is a sad and depressing love triangle, because this is exactly the sort of book that has a sad and depressing love triangle. At the end of the novel, everyone who survives is older and wiser in the sense that some stories seem to think wisdom comes from the accumulation of trauma.

I find books like this so immensely frustrating because their merits are so clear. The world-building is careful and detailed in a way that includes economic systems, unlike so much fantasy. It is full of small, intriguing touches, such as the use of posture and gesture to communicate the emotional valence of one's words. Abraham understands the moral implications of poets and andats and the story tackles them head-on. The writing flows beautifully and gave me a strong sense of the city. I wanted to like this book for the obvious skill that went into it, and sometimes I even managed.

And yet, it's taken me three months to finish A Shadow in Summer because I simply do not want to spend this much time around miserable people. I would get through one or two chapters in a night and then wanted to read something happy or defiant or heroic, rather than watching slow-motion train wrecks intermixed with desperate attempts to navigate stifling layers of immoral systems. It's not that the story lacks a moral compass. The characters are sincerely trying to make the world a better place, with some success. It even delivers a happy ending of sorts. But so much of the journey was watching the lives of the characters fall apart.

I am completely unsurprised that some people loved this book. I'm still intrigued enough by the world-building that I'm half-tempted to try to read the sequel even after having to drag myself through this one. I had a similar reaction to Abraham's The Dragon's Path, though, so I think Abraham is just not for me. I may get back to the Expanse at some point, but having to drag myself through both of his solo novels I've tried, in two different series, probably indicates an incompatibility between author and reader. That's a shame, given the quality of the writing.

Followed by A Betrayal in Winter.

Content notes: Sexual and reproductive violence as significant plot elements.

Rating: 6 out of 10

04:14

The Circle Of Something Or Other [Penny Arcade]

There has been a strange uptick in interest, worship, and… pornography, I guess you would say, related to my compatriot Gabriel and I. Poker Night At The Inventory, made by our Telltale friends of long ago and resuscitated by the redolent Skunkape, has unearthed a very particular era of the Internet. Tumblr has been stoked and self-described "gay autists" are roasting in the hot heat. I've got great news, you Goddamn perverts. To the elders, we haven't gone anywhere. To the new initiate - those untouch'd by years or, indeed, taste - there are nearly thirty years of indiscretions for you to tilt and turn in your hand. It may be the most robust archive of its kind, because it encodes with it the feelings present as they happened. And, yes. As you will learn: I talk like this all the time.

01:21

In The "Flesh" [QC RSS]

Stretchy friend...

00:56

A Bacon Taste Test: Because That’s What The Internet Is For [Whatever]

Today I was ordering a panini from the local sandwich joint, when I saw behind the counter that they had individually packaged slices of bacon. Though I have tried many a cured meat throughout the years, including dubious meat sticks, I have never seen individually packaged, fully cooked, flavored bacon. Of course, I knew I had to try every flavor they had available, especially since they were only a buck a piece.

Check these bad boys out:

Four individually packaged pieces of fully cooked bacon, each in their respectively colored packages based on the flavor.

These bacons come to us from Riff’s Smokehouse, creator of hot sauces and bacon, apparently. Here we have four out of their five flavors, as the fifth flavor was not available to me.

Each piece is 110 calories, and has 5g of protein per slice. When selecting my pieces, I actually rifled through the shop’s selection a good bit to find some sizeable pieces, as slice sizes were not all that consistent, funny enough. There were some skinny mini pieces of bacon! So, if you find these in the wild, find yourself a thicc slice.

Thankfully, you can see through the back to the full picture of what you’re getting into:

The four packages of bacon, flipped over so you can see each piece in its entirety through the clear plastic.

Anyways, the package says to microwave them for 5 seconds, but I figured most people who are buying these “on-the-go” bacons will not have immediate access to a microwave, so I actually tasted each piece right out the package first, and then microwaved them and tried them all again. Science!

I started with the Sweet flavor. The bacon was sort of stiff, like a bit hard to chew through. It was a little sweet but not as sweet as I would’ve imagined the flavor “Sweet” to be. Definitely not overwhelming if you’re not the biggest fan of overly sweet meats. After microwaving it for five seconds, it didn’t seem all that warm, so I microwaved it for another five (ten total, for those counting along at home), and promptly burned my mouth on the literally sizzling piece of meat. So, don’t do ten seconds.

For the Sweet & Spicy flavor, it was actually a little bit tougher than the previous piece. Reminded me a lot more of something like a jerky. Jerky-esque, if you will. Initially, I didn’t think it was spicy at all. It just had sort of a more savory, smoky flavor, but after microwaving it it actually got more of a kick to it, leaving a touch of heat in the back of my throat.

For the Red Curry, I was sure this one would be spicier than the rest, but it was oddly sweet. The spices involved gave it a nice complexity that the regular “Sweet” didn’t have to it. This piece had a really good texture with lots of fattiness throughout (I like chewy, fattier bacon). After microwaving it, it crisped up just a little bit and tasted even better warm.

Finally, for the Raspberry Chipotle, I once again expected heat what with chipotle being in the name. No heat came, but it had an excellent raspberry flavor that wasn’t artificial tasting or too overwhelming. This piece had a nice, softer texture and was the thickest cut out of all the pieces I’d had. This was my favorite of the four.

If you go on Riff’s website, you can buy a variety pack of all five flavors, with three pieces of each, for a little less than $33. This comes out to about $2.15 a slice. If you commit to just one flavor, you get 12 pieces for $23 bucks, which comes out to $1.91 a slice. So, pick your poison! I’d go for the variety pack, because variety is the spice of life. If you get it and try the fifth flavor I didn’t get to, let me know how it is.

Are you a crispy bacon or chewy bacon person? Do you like maple syrup with your bacon? Let me know in the comments, and have a great day!

-AMS

00:07

Alzheimer's drug that occasionally kills patients [Richard Stallman's Political Notes]

A drug that is used to slow Alzheimer's disease occasionally kills patients. This article reports on an alleged conspiracy to get the drug wrongfully approved, and threats against someone who wrote about deaths that it caused.

Corruption of the medical system by Big Pharma is rife, and it does a lot of harm. Threats of violence against journalists are part of the evil of fascism.

But this drug raises an deeper question. Can a treatment for Alzheimer's disease be beneficial for patients, and thus morally deserve approval, despite killing a small fraction of the patients who take it?

Alzheimer's disease turns its victims slowly into zombies. Although the patient's body continues to live, the person who became a zombie is dead. This begs the question, if a certain drug gives a large fraction of patients several more years of non-zombie life, but kills a small fraction of them, does that make it a failure? If on the average it extends patients' non-zombie life, does that make it a bet worth making, one that drug regulations should allow people to make?

This question is important to me personally because I can envision being in that situation in a few years.

Fabrication by undercover infiltrator cop [Richard Stallman's Political Notes]

One of Britain's undercover infiltrator cops seems to have fabricated an accusation that an animal rights activist wanted to get a gun and attack someone with it. Fortunately, his handlers distrusted the accusation.

I speculate that a cop whose job includes lying as part of false friendship will tend to normalize lying to anyone else.

Falsely identified by facial recognition system [Richard Stallman's Political Notes]

A facial recognition system falsely identified a suspect as Angela Lipps, and she was jailed for 6 months; then, when she was brought to a courtroom in another state, the court noticed that the criminal could not be her. Meanwhile, she had lost her home and her car.

False identifications will always occur. Although this one used digital face matching, recognition by human witnesses makes mistakes too. But I think that the main mistake here was to wait 6 months before noticing her alibi and without granting her bail.

Charges dropped against soldiers accused of raping prisoner [Richard Stallman's Political Notes]

The Israeli army has dropped charges against soldiers accused of raping a Palestinian prisoner.

The grounds given for dropping the charges are that (1) the prisoner had been released to Gaza and (2) *the conduct of senior officials had affected the chance of holding a fair trial.* To me, this says that (1) they are exaggerating to create an excuse and (2) high officials created an excuse and have suffered no punishment for it.

Bayer's CEO met with US regulators [Richard Stallman's Political Notes]

*Top US regulators met with Bill Anderson, Bayer's CEO, last year to discuss "litigation" issues – including "supreme court action" over its glyphosate weed killer – just months before henchmen administration took a series of steps to boost Bayer's case at the high court, internal government records show.*

This sounds like a betrayal of the US — analogous to treason except that it occurred in a civil dispute rather than in a war.

Deportation thugs testified in court [Richard Stallman's Political Notes]

In a class-action lawsuit against the deportation thugs, some of them testified about their arrest quotas, and the digital tools whose vague output often leads them to arrest people who are present in the US lawfully.

Violent practices, such as breaking car windows with only a hint of an excuse, seem to be systematic. They figure they will nearly always get away with it, and for typical victims (whether unauthorized immigrants or authorized immigrants or citizens), the expense of repair will create hardship. Releasing a person hundreds of miles away from home can make it very difficult to get home.

The officials in charge of deportation agencies have the duty to stop these practices, but it is clear that they are not really trying.

Limits on no-knock warrants being cancelled by magats [Richard Stallman's Political Notes]

Breonna Taylor was shot dead by a thugs who had burst into her home without warning, and then fired wildly. Americans demanded and got policies to limit no-knock warrants. But now magats are canceling the limits.

Why do this? I don't think it will make any legitimate activities of cops significantly more effective.

I speculate that magats expect that killing people that they can demonize (for instance, blacks) will win them increased support from their base.

Lies about abandoning renewables [Richard Stallman's Political Notes]

George Monbiot: *Rightwing politicians, Tufton Street junktanks and the billionaire press tell us our energy security will be enhanced and our bills will fall if we abandon net zero policies, ditch renewables and reinvest in North Sea gas. These claims are not just a little bit wrong. They are the exact opposite of the truth.*

Wearing all black at protests [Richard Stallman's Political Notes]

*Wearing All Black at Protests Makes You Guilty of Terrorism, Prosecutors Tell Jury.*

More precisely, they claimed that wearing all black is a sign of support for the nonexistent US organization, "Antifa".

Spycops inquiry found undercover thugs snooping [Richard Stallman's Political Notes]

The Spycops inquiry in the UK found that undercover London thugs snooped on the relatives of Jean Charles de Menezes, because they had denounced thugs' murder of him.

It is impossible not to suspect that they did this because they wanted to prevent his relatives from making the thug department look bad by teaching people about the killing by exposing its cover-up.

Threats to shut down broadcasters [Richard Stallman's Political Notes]

A henchman threatens to shut down broadcasters for saying things that the bullshitter chooses to call "hoaxes".

This is a threat of arbitrary censorship, and I'm sure the TV news broadcasters understand it as such. Many have already bent the knee to the bullshitter; they have nothing to worry about. But the rest will now face another kind of threat.

Age-checking in Australia pushing adults away from sites [Richard Stallman's Political Notes]

Age-checking in Australia is pushing adult internauts away from the sites that are banned for minors, because they fear the tracking that is a side effect of the age-checking systems.

US and Israel lying, according to University of Tehran student [Richard Stallman's Political Notes]

*"They [the US and Israel] are also lying! Like the regime has been lying to us," said Amir, a student at the University of Tehran. "You are all worse than each other."*

It appears to Iranians that Israel and the US are attacking infrastructure rather that the regime's SS-equivalent, trying to weaken Iran for the long term rather than free Iran.

It doesn't surprise me that they were only trying to use the Iranians who have opposed the Iranian tyranny. Neither Netanyahu nor the bullshitter cares about human rights, democracy, or well being, not those of ordinary people in any country, and neither one hesitates to lie.

Even so, with even a lick of sense they would have tried carefully to protect those Iranians and keep them on side. It would not have cost much.

Seventeen Impeachable offenses by Trump and counting [Richard Stallman's Political Notes]

Ralph Nader: Seventeen Impeachable Offenses by Trump and Counting. He urges Americans to send this list to their congresscritters and senators.

ChatGPT eroding critical thinking skills [Richard Stallman's Political Notes]

*ChatGPT May Be Eroding Critical Thinking Skills, According to a New MIT Study.*

Any kind of skill fades if a person stops practicing it.

Monday, 23 March

23:42

Link [Scripting News]

Video demo: Using categories in FeedLand for dynamic OPML lists.

Link [Scripting News]

Happy to report there are FeedLand users who want to edit OPML lists there so they can subscribe to them in another feed reader that has support for dynamic OPML lists. I am happy because this is a very cool feature that will be so much more fun if other people use it. If you want to set it up so you have a list on feedland.com that you want to subscribe to in another reader, instead of subscribing to all your feeds, like this -- create a category for each list you want to hook up to another reader. It will be much easier to manage down the road. Categories in FeedLand are very simple, but if you use them carefully, they really help. Here's a screen shot of my Cats menu to give you an idea. I really use FeedLand in the most powerful ways, but it'll really click when others do the same. We might be there now.

20:42

Link [Scripting News]

There's a problem with one of my Digital Ocean servers today, it turns out it's a problem with Caddy, not sure why -- but it doesn't seem to be on the computer any longer. I can figure out how to re-install it, but it always is a bit tricky, and I wish I didn't have to do it. In diagnosing the problem I used Claude, it asked all kinds of questions, gave me commands to run, and I dutifully reported back the results like a good servant. It's so funny to be a tool for the cyborg. Then it hit me, why don't they offer servers with built-in maintenance by Claude. I would type commands at like "install the following apps on this new server I want to commission, and check into it every so often and if it's running out of some resource, get in touch with me and let me know how much more it'll cost, and I'll just use it and you can keep it running." I think it's a really nice application for AI.

17:49

Marco d'Itri: systemd has not implemented age verification [Planet Debian]

This needs to be clear: systemd is under attack by a trolling campaign orchestrated by fascist elements. Nobody is forced to like or use systemd, but anybody who wants to pick a side should know the facts.

Recently, the free software Nazi bar crowd styling themselves as "concerned citizens" has tried to start a moral panic by saying that systemd is implementing age verification checks or that somehow it will require providing personally identifiable information.

This is a lie: the facts are simply that the systemd users database has gained an optional "date of birth" field, which the desktop environments may use or not as they deem appropriate. Of course there is no "identity verification" or requirements to provide any data, which in any case would not be shared beyond authorized local applications.

While the multiple recent bills proposing that general purpose operating systems implement age verification mechanisms are often concerning, both from a social and technical point of view, this is not the topic being discussed here. They are often suboptimal, but for a long time I have been opposing attempts to implement parental control at the network level and argued that it should be managed locally, by parents on their own machines: I cannot see why I should outright reject an attempt to implement the infrastructure to do that.

If we want to keep age-appropriate controls out of the hands of centralized authorities, the alternative is giving families the means to manage it themselves: this is what this field enables. Whether desktop environments use it for parental controls, for birthday reminders, or for nothing at all, is their users' decision.

By the way, the original UNIX users database has allowed storing PII in the GECOS field since it was invented in the '70s. Similar fields are also specified by many popular LDAP schemes: adding such an optional field is consistent with the UNIX tradition.

And while we are at it, let's also refute the other smear campaign started by the same people: the systemd project is not accepting "AI slop". What happened is that a documentation file for the benefit of coding agents was added to the repository. To be clear: agents still cannot submit merge requests. The file itself remarks that all contributions must be reviewed in detail by humans, and this is basically the same policy used by the Linux kernel.

Stranger Suggests: Femme Power, Funk Goodness, and International Cuisine in Rainier Valley [The Stranger]

by Julianne Bell MONDAY 3/23  

Sasha taqʷšəblu LaPointe with Katie Campbell

Sasha taqʷšəblu LaPointe will discuss her 2024 essay collection Thunder Song at Central Library on Monday, March 23.

(BOOKS) Author, poet, and artist Sasha taqʷšəblu LaPointe, who is from the Upper Skagit and Nooksack Indian Tribe, weaves together her heritage and themes of trauma, ancestry, and colonialism with her unique personal interests, ranging from punk music to Twin Peaks. Her acclaimed 2022 memoir Red Paint: The Ancestral Autobiography of a Coast Salish Punk received the 2023 Pacific Northwest Book Award. I flew through both her dreamy, haunting 2023 poetry collection Rose Quartz and her incisive 2024 essay collection Thunder Song. My favorite parts of the latter included LaPointe's journey toward embracing the salmon of her culture as a vegan punk and her description of the Skagit Valley Tulip Festival as a "petal-made flag of settler colonial triumph," both things that have lodged in my mind permanently. LaPointe will discuss Thunder Song with KUOW’s Katie Campbell at the Seattle Central Library. (Central Library, 6:30–8 pm, free with RSVP) JULIANNE BELL

TUESDAY 3/24  

Mary Jane

(THEATER) Mary Jane is by no means a new play. Amy Herzog wrote and premiered it at the Yale Repertory Theatre in 2017; that same year, Carrie Coon (who you at least know from the most recent season of White Lotus or The Gilded Age or Fargo) won an Obie for playing the title character at the New York Theatre Workshop; then in 2024, Rachel McAdams made her Broadway debut as that same lead. And based on the critical reaction to every staging so far, I’m certain of one thing: This compact, 95-minute play is guaranteed to break your heart. Herzog’s story is semi-autobiographical, about the impossible reality of parenting a chronically ill 2-year-old who wasn’t expected to live past his first week. But don’t mistake it for a tragic Lifetime movie. Instead, it captures what it is to be suspended, frozen in a state of crisis, but the play still promises humor, clarity, and humanity. Whether you’ve seen it staged already or not, catch it this time. (Bagley Wright Theater, times vary) HANNAH MURPHY WINTER

WEDNESDAY 3/25  

Plate of Nations

(FOOD) The US doesn’t exist in a vacuum. That’s especially true when it comes to our food, because beyond burgers and barbecue, so many of the flavors we enjoy come from cultures across the globe. Plate of Nations is a celebration of exactly that. This three-week, neighborhood-wide dining event spotlights the immigrant-owned restaurants that define the Rainier Valley’s food scene. More than 50 independently owned spots along Martin Luther King Jr. Way roll out special menus and deals, offering everything from Vietnamese and Mexican to East African cuisine and beyond. It’s a perfect excuse to try something new while supporting local businesses in one go. (Various locations) LANGSTON THOMAS

THURSDAY 3/26  

Champagne Bubblebath, Midpak, DJ Moohah

(MUSIC) The newish Champagne Bubblebath feature the cream of Seattle’s robust funk scene: four members of Afrobeat-inflected funkateers Polyrhythmics, plus Hendrixian guitar virtuoso Jimmy James of True Loves and Parlor Greens. Bandleader Grant Schroff is the Ziggy Modeliste of the Pacific Northwest—a drummer whose impeccable feel and powerful, precise funkiness have moved more asses over the last decade than Sound Transit. This show celebrates the release of Champagne Bubblebath’s debut album, Mixtape: Volume One. The band says it was “[o]riginally conceived as a throwback beat-tape of minimalist garage-funk grooves,” and the 10 songs here reflect deep immersion in history’s most effective, subtlest groove science and the world-class chops to infuse soul into every bar. The band’s slinky, head-nodding instrumentals are ripe for another generation of hip-hop producers to sample. Clearly, these old-school funk disciples still have many vital sonic lessons to impart. (Hidden Hall, 8 pm, 21+) DAVE SEGAL

FRIDAY 3/27  

Amy O’Neal: Again, There Is No Other (The Remix)

Amy O'Neal's performance Again, There Is No Other (The Remix) is a  “ritual of femme power and connection." ERIN O'REILLY

(PERFORMANCE) Amy O’Neal is back home again. After spending two decades dancing and curating in Seattle, she took a few years off in LA, but she’s settled back into the Pacific Northwest, and at On the Boards. When O’Neal was a finalist for a Stranger Genius Award back in 2013, Jen Graves and Brendan Kiley wrote that “delicate, wide-eyed girls with mouths that never open are about the only thing you will never find in Amy O’Neal’s dances.” And it’s a solid bet that you won’t find them in her newest play, either. She describes her return to On the Boards as a “ritual of femme power and connection” that “interrogates fear for the Feminine in patriarchal culture.” The piece combines the energy of nightclub and theater through five femme dancers, and includes original music from WD4D, Shabazz Palaces, Natasha Kmeto, and Moderat. (On the Boards, 8 pm) HANNAH MURPHY WINTER

SATURDAY 3/28  

Grrrl Gang

Don't miss the Indonesian indie pop trio Grrrl Gang at Clock-Out Lounge on Saturday, March 28. TINY STUDIO

(MUSIC) Indie-pop group Grrrl Gang’s members—vocalist/guitarist Angeeta Sentana, bassist/vocalist Akbar Rumandung, and guitarist/vocalist Edo Alventa—met at college in Yogyakarta, Indonesia, in 2016 and decided to form a band. Their blend of pop hooks and irrepressible punk spirit garnered international attention and praise from the likes of legendary critic Robert Christgau. In 2023, they released their debut studio album, Spunky!, which fully embraces their riot-grrrl influences and which NME called “an instant ticket to the sort of basement show where sweat rolls down the walls.” If you’re into bands like Potty Mouth and the Linda Lindas, you won’t want to pass up the chance to catch their gritty, infectious energy at the Clock-Out. (Clock-Out Lounge, 9 pm, 21+) JULIANNE BELL

SUNDAY 3/29  

Beyond Mysticism: The Modern Northwest

View works like Drift No. 2 by "Seattle Surrealist" Malcolm M. Roberts at SAM's 'Beyond Mysticism' exhibit. SCOTT LEEN

(VISUAL ART) Featuring over 150 works, the SAM’s newest exhibit chronicles a rapidly changing 20th-century Seattle as told by artists who questioned the environmental and social impacts of industrialization through the visual language of social realism, surrealism, and abstract expressionism. Among these artists were the Northwest School’s Mark Tobey, Kenneth Callahan, Guy Anderson, and Morris Graves. I am most excited to see works from the unsung painter and Seattle-via-New York City transplant Yvonne Twining Humber, known for incorporating touches of Impressionism into her vibrant cityscapes. (Seattle Art Museum, 10 am–5 pm) AUDREY VANN

Slog AM: ICE Deploys to Some Airports, Deadly Plane Crash at LaGuardia Airport, Trump Celebrates Negotiations with Iran that Iran Says Never Happened [The Stranger]

The Stranger's morning news roundup. by Nathalie Graham

ICE in the Airport: You know what a stressful travel day was missing? The threat of deportation by a bunch of goons. Due to the partial government shutdown that stopped funding for the Department of Homeland Security (DHS) in mid-February, TSA agents haven't been getting paid. They've been calling out of work. On Saturday, a third of TSA agents at our busiest airports didn't show up. Security wait times increased. As a means to put pressure on Democrats to fund DHS, Donald Trump said he'll deploy Immigration and Customs Enforcement officers to assist TSA operations. They were at Hartsfield-Jackson Atlanta International Airport and Newark Liberty International Airport on Monday. Trump said ICE thugs would “do security like no one has ever seen before." That includes “the immediate arrest of all illegal immigrants who have come into our Country.”

DHS or Voting Rights: On Sunday, Trump said he wouldn't back a deal to fund DHS unless the Democrats vote for his SAVE America Act, the strict "federal elections overhaul bill" that would require voters to show ID and proof of citizenship to vote. The law would also make registering to vote harder by requiring people to go in-person to elections offices to prove their citizenship. Right now, you can register online or via mail. You don't have to be a genius to realize that making voting harder is the point.

You Simply Have Gotta Hate These Guys:

 

ICE agents have arrived at airports to assist with staff shortages, a day after President Trump threatened he would do so unless congressional Democrats agreed to a GOP-backed funding deal to end a partial government shutdown. https://wapo.st/47Nq2PI

[image or embed]

— The Washington Post (@washingtonpost.com) March 23, 2026 at 6:30 AM

 

One More:

 

this is your mission. our pedophile president needs you to put on a tactical vest and go to the newark airport at 6 am on monday. your order is to wander around like a confused oaf. when a mom drops her sandwich at jersey mike's and scares you, pull out your gun and start shooting. good luck soldier

— leon (@leyawn.bsky.social) March 23, 2026 at 7:26 AM

 

ICE at Sea-Tac? According to the Port of Seattle, there hasn't been any sign that ICE will be coming to help out our local TSA agents. Sea-Tac Airport hasn't seen abnormal wait times since the partial shutdown, according to The Seattle Times.

Plane Hits Firetruck, Pilot and Co-Pilot Die: An Air Canada regional jet crashed into a firetruck on the runway at New York’s LaGuardia Airport. The firetruck was responding to a call from  a different flight. The crash mangled the front of the plane, killing the pilot and co-pilot. No other casualties were reported. Forty-one passengers and crew members aboard the flight received treatment at local hospitals. Some had serious injuries.

 

My husband was on this flight this evening. His plane crashed. He’s ok. He helped others get off the plane. #AirCanada

[image or embed]

— Sarah Dorner (@sarahdorner.bsky.social) March 22, 2026 at 8:53 PM

 

Happy National Puppy Day: If you're into this sort of thing, you can watch puppies on this livestream from Canine Companions starting March 23 through March 27.

It's No Longer Mueller Time: Because he's dead. Rober Mueller, the ex-FBI director who investigated claims that Russia interfered with the 2016 election, kicked the bucket on Friday. He was 81. Trump, a man of few morals, posted on Truth Social: "Good, I'm glad he's dead. He can no longer hurt innocent people!"

In Sonics News: Gov. Bob Ferguson is meeting for a little chat with NBA Commissioner Adam Silver again today. The NBA's board of governors is supposed to vote this week on starting the league’s expansion process. Seattle and Las Vegas are the two options on the table. Ferguson says he was a diehard Sonics fan, so he'll do whatever he can to prove Seattle should be the one to get a team. That may be true, but being in charge when the Sonics eventually return is also political gold.

Fentanyl Overdoses Stay Down: In Washington, fatal fentanyl overdoses are still in decline. Don’t get it twisted, people are still dying—King County saw two opioid deaths a week last month—but the numbers are lower than average. Last year, nationwide fentanyl overdoses declined by 20 percent. Part of the reduction could be the widespread availability of anti-overdose meds like naloxone, or that because so many people have died the pool of fentanyl users is smaller, or that the current mix of drugs is less potent. Nobody is totally sure. Providers in Washington believe innovative public health programs are helping. But, federal limitations on Medicaid benefits and funding cuts for programs like one that provides clean syringes are threatening the clinics’ long-term viability.

The Weather: Gray and 50 degrees.

Anti-Woke Mad-Libs: Trump installed a statue of Christopher Columbus on the White House grounds outside the Eisenhower Executive Office Building. The statue is a replica of one that Baltimore protestors tore down in 2020, a move meant to denounce Columbus’ personal history as a slave-trading colonialist. A Trump spokesperson said, “In this White House, Christopher Columbus is a hero, and President Trump will ensure he’s honored as such for generations to come." It's all real-life rage bait.

A Five-Day Pause: Trump extended his deadline for Iran to reopen the Strait of Hormuz. He says the US will stop striking Iran’s power plants energy infrastructure for five days. Global markets liked this news. The US stock market climbed 1.4 percent. Oil prices dropped. Trump also hinted at the end of the war, saying the US and Iran have had “very good and productive conversations.” Iran officials say they never talked with Trump about any of this.

 

Trump: "We're doing a five day period. We'll see how that goes. If it goes well, we're gonna end up with settling this, otherwise we just keep bombing our little hearts out."

[image or embed]

— Aaron Rupar (@atrupar.com) March 23, 2026 at 6:46 AM

 

A World Cup Bust? The World Cup will be in the US in less than three months. The event comes with the promise of riches—a big boost in tourism and economic activity in host cities. Except, things seem pretty quiet so far. In New York City, where FIFA has estimated a boon of tourism could bring in $3 billion, hotel bookings are down. According to The City, "advanced reservations for New York’s World Cup weeks are trending 2% below advance bookings for those same days in 2025"—a time when there were no special events. Perhaps the world's soccer fans have also been reading the news about how things here are not so great.

A long read for your Monday: Remember when a flood wiped out Texas' Camp Mystic, killing 27 campers and staff? This Intelligencer article about the flood really packs a wallop. 

16:21

‘CanisterWorm’ Springs Wiper Attack Targeting Iran [Krebs on Security]

A financially motivated data theft and extortion group is attempting to inject itself into the Iran war, unleashing a worm that spreads through poorly secured cloud services and wipes data on infected systems that use Iran’s time zone or have Farsi set as the default language.

Experts say the wiper campaign against Iran materialized this past weekend and came from a relatively new cybercrime group known as TeamPCP. In December 2025, the group began compromising corporate cloud environments using a self-propagating worm that went after exposed Docker APIs, Kubernetes clusters, Redis servers, and the React2Shell vulnerability. TeamPCP then attempted to move laterally through victim networks, siphoning authentication credentials and extorting victims over Telegram.

A snippet of the malicious CanisterWorm that seeks out and destroys data on systems that match Iran’s timezone or have Farsi as the default language. Image: Aikido.dev.

In a profile of TeamPCP published in January, the security firm Flare said the group weaponizes exposed control planes rather than exploiting endpoints, predominantly targeting cloud infrastructure over end-user devices, with Azure (61%) and AWS (36%) accounting for 97% of compromised servers.

“TeamPCP’s strength does not come from novel exploits or original malware, but from the large-scale automation and integration of well-known attack techniques,” Flare’s Assaf Morag wrote. “The group industrializes existing vulnerabilities, misconfigurations, and recycled tooling into a cloud-native exploitation platform that turns exposed infrastructure into a self-propagating criminal ecosystem.”

On March 19, TeamPCP executed a supply chain attack against the vulnerability scanner Trivy from Aqua Security, injecting credential-stealing malware into official releases on GitHub actions. Aqua Security said it has since removed the harmful files, but the security firm Wiz notes the attackers were able to publish malicious versions that snarfed SSH keys, cloud credentials, Kubernetes tokens and cryptocurrency wallets from users.

Over the weekend, the same technical infrastructure TeamPCP used in the Trivy attack was leveraged to deploy a new malicious payload which executes a wiper attack if the user’s timezone and locale are determined to correspond to Iran, said Charlie Eriksen, a security researcher at Aikido. In a blog post published on Sunday, Eriksen said if the wiper component detects that the victim is in Iran and has access to a Kubernetes cluster, it will destroy data on every node in that cluster.

“If it doesn’t it will just wipe the local machine,” Eriksen told KrebsOnSecurity.

Image: Aikido.dev.

Aikido refers to TeamPCP’s infrastructure as “CanisterWorm” because the group orchestrates their campaigns using an Internet Computer Protocol (ICP) canister — a system of tamperproof, blockchain-based “smart contracts” that combine both code and data. ICP canisters can serve Web content directly to visitors, and their distributed architecture makes them resistant to takedown attempts. These canisters will remain reachable so long as their operators continue to pay virtual currency fees to keep them online.

Eriksen said the people behind TeamPCP are bragging about their exploits in a group on Telegram and claim to have used the worm to steal vast amounts of sensitive data from major companies, including a large multinational pharmaceutical firm.

“When they compromised Aqua a second time, they took a lot of GitHub accounts and started spamming these with junk messages,” Eriksen said. “It was almost like they were just showing off how much access they had. Clearly, they have an entire stash of these credentials, and what we’ve seen so far is probably a small sample of what they have.”

Security experts say the spammed GitHub messages could be a way for TeamPCP to ensure that any code packages tainted with their malware will remain prominent in GitHub searches. In a newsletter published today titled GitHub is Starting to Have a Real Malware Problem, Risky Business reporter Catalin Cimpanu writes that attackers often are seen pushing meaningless commits to their repos or using online services that sell GitHub stars and “likes” to keep malicious packages at the top of the GitHub search page.

This weekend’s outbreak is the second major supply chain attack involving Trivy in as many months. At the end of February, Trivy was hit as part of an automated threat called HackerBot-Claw, which mass exploited misconfigured workflows in GitHub Actions to steal authentication tokens.

Eriksen said it appears TeamPCP used access gained in the first attack on Aqua Security to perpetrate this weekend’s mischief. But he said there is no reliable way to tell whether TeamPCP’s wiper actually succeeded in trashing any data from victim systems, and that the malicious payload was only active for a short time over the weekend.

“They’ve been taking [the malicious code] up and down, rapidly changing it adding new features,” Eriksen said, noting that when the malicious canister wasn’t serving up malware downloads it was pointing visitors to a Rick Roll video on YouTube.

“It’s a little all over the place, and there’s a chance this whole Iran thing is just their way of getting attention,” Eriksen said. “I feel like these people are really playing this Chaotic Evil role here.”

Cimpanu observed that supply chain attacks have increased in frequency of late as threat actors begin to grasp just how efficient they can be, and his post documents an alarming number of these incidents since 2024.

“While security firms appear to be doing a good job spotting this, we’re also gonna need GitHub’s security team to step up,” Cimpanu wrote. “Unfortunately, on a platform designed to copy (fork) a project and create new versions of it (clones), spotting malicious additions to clones of legitimate repos might be quite the engineering problem to fix.”

Update, 2:40 p.m. ET: Wiz is reporting that TeamPCP also pushed credential stealing malware to the KICS vulnerability scanner from Checkmarx, and that the scanner’s GitHub Action was compromised between 12:58 and 16:50 UTC today (March 23rd).

[$] Tracking when BPF programs may sleep [LWN.net]

BPF programs can run in both sleepable and non-sleepable (atomic) contexts. Currently, sleepable BPF programs are not allowed to enter an atomic context. Puranjay Mohan has a new patch set that changes that. The patch set would let BPF programs called in sleepable contexts temporarily acquire locks that cause the programs to transition to an atomic context. BPF maintainer Alexei Starovoitov objected to parts of the implementation, however, so acceptance of the patch depends on whether Mohan is willing and able to straighten it out.

16:14

The Missing Mechanisms of the Agentic Economy [Radar]

For the past two years, I’ve been working with economist Ilan Strauss at the AI Disclosures Project. We started out by asking what regulators would need to know to ensure the safety of AI products that touch hundreds of millions of people. We are now exploring the missing mechanisms that are needed to enable the agentic economy.

This essay traces our path from disclosures through protocols to markets and mechanism design. Rather than simply stating our conclusions, I’m sharing our thought process and some of the conversations and historical examples that have shaped it.

We will be holding a number of focused convenings to explore these ideas over the next couple of months, and my hope is that shared context will enable more productive engagement with what is very much a work in progress.

The disclosure problem

Ilan Strauss and I started the AI Disclosures Project in early 2024 with a conviction that most regulators had little idea how AI worked or where it was going. The field was so young that many of the early regulatory proposals were misguided. We thought that regulators and industry should start by agreeing on standards for disclosure, so that we could all learn together as the technology develops. You can’t regulate what you don’t understand.

One of our first insights was that focusing solely on model safety was a mistake, much as if regulators inspected automobiles at the factory but completely ignored their use on the roads. We believed (and still do) that the focus should be on AI as deployed. And we believe that disclosures shouldn’t focus just on capabilities but on business models and the operating metrics that AI companies use to shape how their products operate.

Ilan and I had worked together previously with Mariana Mazzucato at University College London on what we called “algorithmic attention rents,” studying how platforms like Amazon and Google control user attention to extract economic rents from their suppliers. We observed that organic search at Google and Amazon was a huge advance in market coordination, using hundreds of signals to find the best match for a user’s intent. In effect, both companies had built a better “invisible hand.” And yet after decades of success, they turned away from that advance. To use Cory Doctorow’s coinage, they began “enshittifying” their services by substituting inferior paid results for the top organic search results in order to pad their bottom line.

We’d also watched social media start out with the promise of keeping you in touch with your friends and foster productive conversations, but then instead began to optimize for engagement at the expense of everything else. By the time anyone understood what was happening, the damage had been done. We can see the inflection point in their financial metrics, but neither regulators nor the public can see the changes in operating metrics that drove the financials. What if we could capture what good looks like before it gets enshittified, and identify how that changes over time?

We also observed that modern technology companies are completely different from industrial era corporations, where you can understand key elements of the business by tracing the inputs and the outputs through the financial statements. Instead, the business is largely driven by intangibles, which are lumped into one impenetrable black box.

We wanted to learn from that mistake. While the horse was already out of the barn on search and social media, we hoped to get disclosure of operating metrics into AI governance while there was still an appetite for regulation. Unfortunately, that window was very short. The failure turned out to be productive, though, because it forced us to think harder about regulation more broadly and what other leverage points might be found.

Protocols as functional disclosures

The first turn in our thinking came when we realized that disclosures aren’t just informational. The most important disclosures are functional. We came to see the parallels between disclosures and communications protocols, the agreed-on methods by which networked systems share information. For example, the HTTP protocol that underlies the World Wide Web specifies how a web browser and web server communicate in order to display a web page.

This is a structured communication with rules that must be followed and data that must be exchanged in a particular order.  An HTTP request that identifies the user agent as a command line program such as curl rather than a graphical browser such as Chrome triggers a different response from the server. The user-agent string isn’t a report filed with a regulator. It’s an operational signal embedded in the protocol, and it carries a lot of information.

Once you see protocols as a system of functional disclosures, you start noticing that every regulatory system has a kind of communications and control protocol at its heart. Generally Accepted Accounting Principles (GAAP) or IFRS, the European equivalent, are protocols for communication between companies and their accountants, auditors, banks, investors, and tax authorities. Even road markings and road signs are a communications protocol, giving information to drivers about local conditions, laws, and the proper use of the road. These are slow, analog protocols, but they are protocols nonetheless.

Protocols can be inspected. Observability is the key to governance. Police observe speeders on the road; credit card processors and banks watch for credit card fraud on their payment networks; email processors filter spam as it passes through nodes on the network. The observability points for AI are still emerging, but that’s where regulators should be focused.

Even beyond being a locus for observability and regulability, protocols themselves do an enormous amount of the governing work in modern technology systems. Spanning everything from how packets get from one place to another to what gets displayed, who has permission to see it, and sometimes even what it costs, they ultimately determine who can interoperate with whom. That led us to an even bigger realization.

Protocols shape markets

Think about the early shape of the AI chatbot market. It was a winner-takes-all race to be the dominant platform for AI in the way Windows became the platform for PCs, or iOS and Android for phones. Whoever wins controls the market. Then Anthropic introduced MCP, the Model Context Protocol. All of a sudden, the landscape looked more like a web. There could be many winners. It didn’t matter what model you were running or whose APIs you were calling as long as you followed the protocol. And as the agentic AI market unfolded, the protocol wasn’t just MCP. An AI agent could be a user of the existing internet protocol stacks. Whether MCP itself survives or is superseded by other protocols, the shape of the market was transformed.

This insight reframed our whole project. Protocols are not just technical infrastructure. They are market-shaping mechanisms.

Workflows are also protocols

I talked last week with some of the folks working on the Long Now Foundation’s partnership with Ethereum’s Summer of Protocols project, and that widened my lens even further.

When software people hear “protocol,” we think of communication protocols: TCP/IP, HTTP, MCP, or, say, Stripe’s Machine Payment Protocol (MPP).

To the Long Now folks, a protocol is any standardized way of doing something. Wildfire management teams follow protocols. So do flood response teams, hospital emergency rooms, and air traffic controllers. Atul Gawande’s book The Checklist Manifesto was an attempt to establish a common protocol for surgical operating theaters. This is a very different definition of protocol, and yet putting the two meanings of the word into the same frame makes a new kind of sense.

In his introduction to the Summer of Protocols’ Protocol Reader, Venkatesh Rao cited Ethereum researcher Danny Ryan’s definition of a protocol as a “stratum of codified behavior” enabling coordination. He pointed out that protocols tend to become invisible once adopted. Rao calls this a “Whitehead advance,” after the philosopher Alfred North Whitehead’s observation that civilization advances by extending what we can do without thinking.

But he also made the thought-provoking point that a protocol is an “engineered argument,” in contrast with an API, which he says is an “engineered agreement” enforced by one dominant actor. There’s more to it than just the power asymmetry of enforced agreement, though. In a followup conversation, Venkatesh Rao noted that protocols are “not just codified modes of information exchange, but modes of live, structured, argumentation, often with an active computational element. For example, CSMA/CD (Ethernet) must detect packet collisions and compute and execute a random delay for retransmittal of packets. This is not mere structured communication. This is argumentation with what philosophers call dynamic semantics.”

Rao continued: “The moment you go beyond computing protocols, real-world feedback loops from material consequences become really important. For example, container-shipping is quite close architecturally to TCP/IP (the big difference being that packets can be dropped and retransmitted while lost containers are actually lost), but because it has a materially embodied feedback loop, regulatory mechanisms start to behave more like control systems than communication systems.”

I love the idea of protocols as an engineered argument. The dynamism this suggests is going to be ever more true in a future of agentic protocols. But this notion also triggered another thought, which is that markets are also engineered arguments. My bridge to this reformulation was the difference between de jure protocols that arise from a formal standards process, and de facto protocols that arise through market contention.

In the early days of the internet, the Internet Engineering Task Force (IETF) was all about engineered arguments. People had ideas about how the internet ought to work, and to prove their point they had to show up with interoperable implementations. No one had the ability to enforce anything. Agreement had to evolve. As Dave Clark famously put it, “We reject: kings, presidents, and voting. We believe in: rough consensus and running code.” The de facto protocols of the internet that emerged from the IETF ended up significantly outperforming the competing de jure networking protocols that emerged from telecommunications standards bodies. The IETF framed the argument; whoever showed up made their case and won or lost by way of adoption.

It also made me remember another decades old story that I had lived through. Microsoft and Netscape were duking it out in the web server market and were building their own “engineered agreements” for what was up the stack from the base web server functionality. Everyone thought that Apache wasn’t keeping up, but they had a trump card. They provided an extension layer. And that engineered all kinds of productive arguments between a market of competing developers rather than a single engineered agreement imposed by either a dominant player OR a dominant committee.

Rao also noted that protocols spread slowly but become nearly impossible to dislodge once established. For example, SMTP (the protocol for email) dates back to 1982, and has outlasted many competitors. There is a lot of path dependence. And so getting the first steps right is an important part of engineering the argument.

And in his essay “Standards Make the World” for the Summer of Protocols project, David Lang makes the point that technical standards form a third pillar of modern society, alongside private organizations and public institutions. They aren’t the state and they aren’t the market, but they’re essential to both. When they work well, standards become enabling technologies. The internet. The shipping container. Standard time. They are civilizational infrastructure.

In short, we are not just building communication protocols for software agents. We are developing a new way to standardize the best practices and workflows that will shape the human + AI future, allowing humans and agents to cooperate across organizations, industries, and borders.

Skills can also be seen as protocols

Once the Long Now team planted in my mind the connection between workflows and protocols, it occurred to me that Agent Skills are also a “stratum of codified behavior,” and perhaps even a set of competing “engineered arguments” for how to do work with AI.

At the simplest level, a Skill is a piece of structured knowledge: here’s how to create a Word document; here’s how to extract the text from a PDF; here’s how to publish on the Hugging Face Hub. There can be many Skills that attempt to codify the same knowledge, but some may be better than others. As Skills multiply, how will we find the best ones? This is in many ways analogous to the organic web search problem, which Google solved by aggregating hundreds of useful signals.

And we’re seeing that there is a kind of hierarchy of skills. Jesse Vincent’s Superpowers framework, which has become one of the most widely adopted open source projects in AI-assisted development, doesn’t just give agents individual capabilities. It encodes an entire software development methodology: brainstorm before you build, plan before you code, test before you ship, review before you merge. That’s a standardized workflow. It’s a lot like the kinds of protocol that the Long Now folks were talking about, expressed in a form that agents can follow.

The existing protocols that the protocol research community talks about, like wildfire management protocols or hospital triage protocols, encode best practices into a repeatable, teachable process for human teams. They have yet to be adapted for agents. And in fact, many of them are never going to be entirely agentic. We will need to build mechanisms for workflows that include both AI agents and humans working together.

Agent skills in some (but not all) areas raise the same questions that industrial standards have always raised: who decides what the best practice is? How do you verify quality? How do you govern updates? We may be talking about skills that encode the workflow for regulatory compliance in a specific industry, or for conducting an environmental impact assessment, or for managing a clinical trial. Are the standards de jure or de facto, the result of an engineered agreement by a committee or an engineered argument that enables a vibrant market?

At O’Reilly, this is something we think about a lot. We’re a company built on codifying expert knowledge. We’ve published books and organized conferences and online training that taught people how to do new things. Now we’re asking “What does it look like to publish the skills that teach agents how to do things? And how do we make sure those skills are discoverable, trustworthy, and monetizable, not just for us but for every domain expert who has knowledge worth encoding?” And how do they emerge from contention in a vibrant market rather than by decree?

We believe we’ll all be better off with an engineered argument than an engineered agreement. And that brings me to mechanism design.

The missing mechanisms

Economists use the term “mechanism design” to describe the engineering of rules and incentive structures that lead self-interested actors to produce outcomes that are good for everyone. It’s sometimes called “reverse game theory.” Rather than analyzing the equilibria that emerge from a given set of rules, you start with the outcome you want and work backward to design the rules that will get you there.

Mechanism design theory got its start in the 1960s when Leonid Hurwicz took up the problem of how a planner can make good decisions when the information needed to make them is scattered among many different people, each of whom has their own interests. His key insight was that people won’t reliably reveal what they know unless it’s in their interest to do so. So how do you design a system that aligns their incentives?

The field that Hurwicz founded and that Eric Maskin and Roger Myerson developed through the 1970s and 80s earned all three the Nobel Prize in Economics in 2007.

I first encountered the field when Jonathan Hall, at the time the Chief Economist at Uber, waved Al Roth’s book Who Gets What — and Why at me and said “This is my Bible.” In it, Roth describes his own work on mechanism design, which won him the 2012 Nobel Prize in Economics along with Lloyd Shapley. Roth applied mechanism design to kidney matching markets, markets for college admissions, for law clerks and judges, and for hospitals and medical residents. When I first talked to Jonathan and then Al Roth, my layman’s takeaway about mechanism design was that it was simply the application of economic theory to design better markets.

And I’ve since come to think even more broadly about what mechanism design might mean in a technology context. In my broader framing, packet switching was a breakthrough in mechanism design. So for that matter was TCP/IP, the World Wide Web, and the protocol-centric architecture of Unix/Linux, which enabled open source and the distributed, cooperative software development environment we take for granted today. PageRank and the rest of Google’s organic search system also seems to me to be a kind of mechanism design. So do Pay Per Click advertising and the Google ad auction. All of them are ways of aligning incentives such that self-interested actors produce outcomes that are good for others as well.

So that brings me back to AI. Right now, there’s a problem that makes the AI/human knowledge market less efficient than it could be. The disrespect for IP that has been shown by the AI labs and applications during the training stage, and even now during inference, has led to efforts by content owners to protect their content from AI. Do not crawl. Lawsuits. Reluctance to share information. Even the AI labs are complaining about the theft of their IP and trying to protect their model weights from distillation.

It’s an economy crying out for mechanism design.

The lesson of YouTube Content ID is worth learning. Twenty-five years ago, the music industry was in the same position that content creators are in today with AI. In response to unauthorized use of their music by creators, music publishers’ demand to YouTube was “Take it down.” But as Google engineer Doug Eck explained to me, YouTube came up with a better answer: “How about we help you monetize it instead?” I don’t know the details of how that decision was made but I do know the eventual outcome. Aligned incentives led to a vibrant creator economy in which YouTube’s video creators, the music companies, and Google all got to share in the value that was created.

That should give us inspiration for how to solve some of the problems we face now with AI. Whether it’s with Agent Skills, NotebookLM, or other emergent artifacts of the new AI/human knowledge economy, we need to align the incentives. If we can grow the pie, and in a way where no single gatekeeper captures the bulk of the benefit, there’s a way to create a vibrant market. But that requires building mechanisms that don’t exist yet.

What mechanisms are missing from the agentic economy? Here’s a partial list:

Skills markets. There’s an enormous economic opportunity for humans to create and trade skills that agents can use. These are not just simple aggregation of context with tool use instructions, but higher-level, industry-specific workflows that encode deep human expertise. At O’Reilly, we’re figuring out how to turn our knowledge and that of our authors into skills, how to make them discoverable, and how to sell them. But as of yet, there’s no way for a broader community of skill creators to participate.

Quality and governance for skills. Some skills will need the same kinds of governance that industrial standards have. Who certifies that a medical skills package follows current clinical guidelines? Who updates it when the guidelines change? We haven’t begun to build the institutions that would govern agent skills at that level.

Registries and discovery. The MCP community has been working on a registry protocol, as is the Ethereum community.

This isn’t just a technical development but a business opportunity. I still remember when Network Solutions was running the original top level internet domain name registry under contract from the National Science Foundation. When the government said it wouldn’t end the payments, Network Solutions planned to walk away. Then they realized what they had. On the early internet, domain name registration became a surprisingly big business. Now it’s just boring civilizational infrastructure. Is there something similar for AI models, applications, and agents?

Organic search for agents. Google’s first great innovation on the web wasn’t how to make pay per click ads really work with a data-driven ad auction. It was organic search: a way of coordinating a market with hundreds of signals that ignored price and worked independently of whether the destination content was free or paid. The New York Times (or oreilly.com) is subscription-based, but that isn’t a factor in whether Google shows it to you. Google figured out signals that let them say, “This is the best result for this query.” Sites behind paywalls figured out how to disclose enough for people to decide whether they wanted to take the next step and enter into a transaction. That’s an engineered argument.

We’re going to need the equivalent for skills and agent services. We’ll start with curated marketplaces. Vercel already has one. But we’re a long way from something as effective as Google’s peak in organic search. The search space will be huge, with hundreds of millions, maybe billions of agents seeking the best way to accomplish trillions of distinct tasks. Skills can help them save on inference costs and deliver better results. The question is what signals will drive discovery of the best match.

Extension architectures. MCP’s extension model (including the new Apps Extension) is promising. This is the Apache model all over again: keep the core simple, let people layer different approaches on top, and let the market sort out which ones win. It is, in essence, an engineered argument rather than an engineered agreement.

Payment layers. Stripe has been working on agentic commerce, but it seems to be focused on traditional e-commerce transactions like booking a ticket or buying a product. What about a payment layer for skills? There have been proposals for monetizing MCP calls, pay per call, pay per token, but none have caught on yet. Coinbase’s x402 protocol may also end up playing a role.

Progressive access and authentication. MCP Server Cards promise to let a service specify its terms: here’s what we charge, here’s how you authenticate. That’s a functional disclosure layer that could enable commerce. It could enable progressive privileges: a free O’Reilly subscriber gets one set of tools, a paying subscriber gets a richer set, all on top of the same MCP server. Again, that’s an engineered argument with the market deciding the winners.

Neutrality in agent routing. When ChatGPT decides to show you a Booking.com widget instead of an Airbnb widget, who made that choice, and on what basis? OpenAI claims commercial considerations aren’t a factor. That’s hard to take at face value. We need something like the original principle of organic search: surface the best result for the user, not the most profitable one for the platform.

We don’t know the future, but we can set ourselves up to shape it for the better

I’m old enough to remember when UUCP was giving way to the internet, and there was a real debate over whether explicit path routing or domain routing was better. In retrospect, it’s blindingly obvious that path routing wasn’t going to scale. But it’s worthwhile to know that at the time, people weren’t at all clear about that!

The same is true now. Some of what I’ve described will turn out to be the equivalent of explicit path routing: a dead end that was only plausible for a small scale network. Other parts will turn out to be as fundamental as DNS or HTTP. But we’re not trying to pick the winners. We’re trying to engineer the argument.

If we can enable better markets, it will allow a process of discovery. People try different things, most fail, some catch on. The job right now is to build the mechanisms that help the market to evolve.

We need mechanisms that no single gatekeeper can control. Modular, decentralized architectures let people experiment with business models, routing decisions, payment systems, and quality signals. And alongside those markets, we will eventually need institutions (some of which will be protocols) to maintain standards that will become the infrastructure of the next economy.

This article recapitulates a conversation with Ilan Strauss and Ido Salomon, and a separate conversation on the broader meaning of protocols in the context of industry workflows and civilizational infrastructure with Venlaktesh Rao and Timber Schroff of the Ethereum Foundation’s Summer of Protocols program, and Denise Hearn and James Home of the Long Now Foundation. Rao’s Protocol Reader and  David Lang’s “Standards Make the World,” published through the Summer of Protocols project, inform the argument about protocols as civilizational infrastructure.

15:28

How can I make sure the anti-malware software doesn’t terminate my custom service? [The Old New Thing]

A customer was developing a Windows service process, and it is important to them that the service keep running on their servers. They wanted to know if there was a way they could prevent users who connect to the server from terminating the service. In particular, they wanted to make sure that the user couldn’t use the anti-malware software to terminate their service, either by mistake or maliciously.

The fact that they made it to asking about anti-malware software tells me that they have already locked down the more obvious access points. For example, they’ve already set the appropriate permissions on their service so that only administrators can Stop the service.

But how do you protect your process from anti-malware software?

The answer, of course, is that you can’t.

Because if you could inoculate yourself against being terminated by anti-malware software, then malware would do it!

Anti-malware software runs with extremely high levels of access to the system. They have components that run in kernel mode, after all. Even if they can’t terminate your process, they can certainly make it so that your process can’t accomplish anything (say, by preventing its threads from being scheduled to execute). And if anti-malware software goes awry, the entire system can be rendered catastrophically broken.

The customer will have to work with the anti-malware software that runs on their server to see if there is a setting or other way to tell the anti-malware software never to terminate their critical service. (Of course, it means that genuine malware might masquerade as their critical service and elude detection. This is a risk assessment trade-off they will have to make.) And if their service runs on client-configured servers, where they don’t control what anti-malware software the client uses, then they’ll have to work with all of the anti-malware software (or at least all the major ones) and see if they can arrange something.¹

But Windows can’t help you. The anti-malware software is more powerful than you.

¹ For example, maybe they digitally sign their service process and give the public key to the anti-malware software, saying, “Please don’t terminate processes signed by this key.” Of course, the real question is whether the anti-malware vendors will accept that.

The post How can I make sure the anti-malware software doesn’t terminate my custom service? appeared first on The Old New Thing.

Windows native application development is a mess [OSnews]

Usually, when developers or programmers write articles about their experiences developing for a platform they have little to no experience with, the end result usually comes down to “they do things differently, therefor it is bad actually”, which is deeply unhelpful. This article, though, is from a longtime Windows user and developer, but one who hasn’t had to work on native Windows development for a long time now. When he decided to write his own native Windows application to scratch a personal itch, it wasn’t a great experience.

While I followed the Windows development ecosystem from the sidelines, my professional work never involved writing native Windows apps. (Chromium is technically a native app, but is more like its own operating system.) And for my hobby projects, the web was always a better choice. But, spurred on by fond childhood memories, I thought writing a fun little Windows utility program might be a good retirement project.

Well. I am here to report that the scene is a complete mess. I totally understand why nobody writes native Windows applications these days, and instead people turn to Electron.

↫ Domenic Denicola

Denicola decided to try and use the latest technologies and best practices from Microsoft regarding Windows development, and basically came away aghast at just how shot of an experience it really is. I’m not a developer, but you don’t need to be to grasp the severity of the situation after following his development timeline and reading about his struggles.

If this is truly representative of the Windows application development experience, it’s really no surprise just how few new, quality Windows applications there are, and why even Microsoft’s own Windows developers resort to things like React for the Start menu to enabler faster and easier iteration.

This is a complete dumpster fire.

Java Sun SPOTs (Small Programable Object Technology) [OSnews]

These were Sun microcontrollers that run Squawk Java ME directly on metal with gc and all the bells and whistles, created by Sun Microsystems in 2005.

The feature mesh networking and tcp/ip and multitasking. Even the drivers are java just like Java OS.

They run a command and control server by default and there’s graphical network builders and deployment managers (Solarium) they also do some more esoteric stuff like process migration.

↫ Penny

I have no use for these but I want them. They would’ve made an excellent addition to my Sun article. There’s still a detailed tutorial and informational website up about these things, too.

The OpenBSD init system and boot process [OSnews]

In recent weeks, systemd has both embraced slopcoding and laid the groundwork for age verification built right into systemd-based Linux distributions, there’s definitely been an uptick in people talking about alternative init systems. If you want to gain understanding in a rather classic init system, OpenBSD’s is a great place to start.

OpenBSD has a delightfully traditional init system, which makes it a great place to start learning about init systems. It’s simple and effective. There’s a bit of a counter movement in the IT and FOSS worlds rebelling against hyperscaler solutions pushing down into everyone’s practices. One of the rallying cries I’ve been seeing is to remind people that You Can Just Do Things™ on the computer. The BSD init system, and especially OpenBSD’s is something of a godparent to this movement. init(8) just runs a shell script to start the computer, and You Can Just Do Things™ in the script to get them to happen on boot.

↫ Overeducated-Redneck.net

My main laptop is currently in for warranty repairs, but once it returns, I intend to set it up with either OpenBSD or a Linux distribution without systemd (most likely Void) to see how many systems I can distance from systemd without giving myself too much of a headache (I’m guessing my gaming machine will remain on systemd-based Fedora). I’m not particularly keen on slopcoding and government-mandated age verification inside my operating systems, and I’m definitely feeling a bit of a slippery slope underneath my feet.

I have my limits.

14:49

Kernel prepatch 7.0-rc5 [LWN.net]

Linus has released 7.0-rc5 for testing. "It looks like things are starting to calm down - rc5 is smaller than the previous rc's this merge window, although it still tracks a bit larger than rc5s historically do."

13:56

Link [Scripting News]

I wanted to subscribe to the GiftArticles feed from Mastodon. It makes it possible to read news on paywalled sites. I found the feed by going to the site the feed comes from and tacking a .rss at the end. You can read the feed in a browser, and my feeder test app can read it as well. But for some reason FeedLand won't subscribe to it. Have to dig into that soon. I'm looking forward to doing some long-overdue work on FeedLand before doing the next push.

The Mythical Agent-Month [Radar]

The following article originally appeared on Wes McKinney’s blog and is being republished here with the author’s permission.

Like a lot of people, I’ve found that AI is terrible for my sleep schedule. In the past I’d wake up briefly at 4:00 or 4:30 in the morning to have a sip of water or use the bathroom; now I have trouble going back to sleep. I could be doing things. Before I would get a solid 7–8 hours a night; now I’m lucky when I get 6. I’ve largely stopped fighting it: Now when I’m rolling around restlessly in bed at 5:07am with ideas to feed my AI coding agents, I just get up and start my day.

Among my inner circle of engineering and data science friends, there is a lot of discussion about how long our competitive edge as humans will last. Will having good ideas (and lots of them) still matter as the agents begin having better ideas themselves? The human-expert-in-the-loop feels essential now to get good results from the agents, but how long will that last until our wildest ideas can be turned into working, tasteful software while we sleep? Will it be a gentle obsolescence where we happily hand off the reins or something else?

For now, I feel needed. I don’t describe the way I work now as “vibe coding” as this sounds like a pejorative “prompt and chill” way of building AI slop software projects. I’ve been building tools like roborev to bring rigor and continuous supervision to my parallel agent sessions, and to heavily scrutinize the work that my agents are doing. With this radical new way of working it is hard not to be contemplative about the future of software engineering.

Probably the book I’ve referenced the most in my career is The Mythical Man-Month by Fred Brooks, whose now-famous Brooks’s law argues that “adding manpower to a late software project makes it later.” Lately I find myself asking whether the lessons from this book are applicable in this new era of agentic development. Will a talented developer orchestrating a swarm of AI agents be able to build complex software faster and better, and will the short-term productivity gains lead to long-term project success? Or will we run into the same bottlenecks—scope creep, architectural drift, and coordination overhead—that have plagued software teams for decades?

Revisiting The Mythical Man-Month (TMMM)

One of Brooks’s central arguments is that small teams of elite people outperform large teams of average ones, with one “chief surgeon” supported by specialists. This leads to a high degree of conceptual integrity about the system design, as if “one mind designed it, even if many people built it.”

Agentic engineering appears to amplify these problems, since the quality of the software being built is now only as good as the humans in the loop curating and refining specs, saying yes or no to features, and taming unnecessary code and architectural complexity. One of the metaphors in TMMM is the “tar pit”: “Everyone can see the beasts struggling in it, and it looks like any one of them could easily free itself, but the tar holds them all together.” Now, we have a new “agentic tar pit” where our parallel Claude Code sessions and git worktrees are engaged in combat with the code bloat and incidental complexity generated by their virtual colleagues. You can systematically refactor, but invariably an agentic codebase will end up larger and more overwrought than anything built by human hand. This is technical debt on an unprecedented scale, accrued at machine speed.

In TMMM, Brooks observed that a working program is maybe 1/9th the way to a programming product, one that has the necessary testing, documentation, and hardening against edge cases and is maintainable by someone other than its author. Agents are now making the “working program” (or “appears-to-work” program, more accurately) a great deal more accessible, though many newly minted AI vibe coders clearly underestimate the work involved with going from prototype to production.

These problems compound when considering the closely-related Conway’s law, which asserts that the architecture of software systems tends to resemble the organizations’ team or communication structure. What does that look like when applied to a virtual “team” of agents with no persistent memory and no shared understanding of the system they are building?

Another “big idea” from TMMM that has stuck with people is the n(n-1)/2 coordination problem as teams scale. With agentic engineering, there are fewer humans involved, so the coordination problem doesn’t disappear but rather changes shape. Different agent sessions may produce contradictory plans that humans have to reconcile. I’ll leave this agent orchestration question for another post.

No silver bullet

“There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.”
—“No Silver Bullet” (1986)

Brooks wrote a follow-up essay to TMMM to look at software design through the lens of essential complexity and accidental complexity. Essential complexity is fundamental to achieving your goal: If you made the system any simpler, it would fall short of its problem statement. Accidental complexity is everything else imposed by our tools and processes: programming languages, tools, and the layer of design and documentation to make the system understandable by engineers.

Coding agents are probably the most powerful tool ever created to tackle accidental complexity. To think: I basically do not write code anymore, and now write tons of code in a language (Go) I have never written by hand. There is a lot of discussion about whether IDEs are still going to be relevant in a year or two, when maybe all we need is a text editor to review diffs. The productivity gains are enormous, and I say this as someone burning north of 10 billion tokens a month across Claude, Codex, and Gemini.

But Brooks’s “No Silver Bullet” argument predicts exactly the problem I’m experiencing in my agentic engineering: The accidental complexity is no problem at all anymore, but what’s left is the essential complexity which was always the hard part. Agents can’t reliably tell the difference. LLMs are extraordinary pattern matchers trained on the entirety of humanity’s open source software, so while they are brilliant at dealing with accidental complexity (refactor this code, write these tests, clean up this mess), they struggle with the more subtle essential design problems, which often have no precedent to pattern match against. They also often tend to introduce unnecessary complexity, generating large amounts of defensive boilerplate that is rarely needed in real-world use.

Put another way, agents are so good at attacking accidental complexity that they generate new accidental complexity that can get in the way of the essential structure that you are trying to build. With a couple of my new projects, roborev and msgvault, I am already dealing with this problem as I begin to reach the 100 KLOC mark and watch the agents begin to chase their own tails and contextually choke on the bloated codebases they have generated. At some point beyond that (the next 100 KLOC, or 200 KLOC) things start to fall apart: Every new change has to hack through the code jungle created by prior agents. Call it a “brownfield barrier.” At Posit we have seen agents struggle much more in 1 million-plus-line codebases such as Positron, a VS Code fork. This seems to support Brooks’s complexity scaling argument.

I would hesitate to place a bet on whether the present is a ceiling or a plateau. The models are clearly getting better fast, and the problems I’m describing here may look charmingly quaint in two years. But Brooks’s essential/accidental distinction gives me some confidence that this isn’t just about the current limitations of the technology. Figuring out what to build was the hard part long before we had LLMs, and I don’t see how a flawless coding agent changes that.

Agentic scope creep

When generating code is free, knowing when to say “no” is your last defense.

With the cost of generating code now converging to zero, there is practically nothing stopping agents and their human taskmasters from pursuing all avenues that would have previously been cost or time prohibitive. The temptation to spend your day prompting “and now can you just…?” is overwhelming. But any new generated feature or subsystem, while cheap to create, is not costless to maintain, test, debug, and reason about in the future. What seems free now carries a future contextual burden for future agent sessions, and each new bell or whistle becomes a new vector of brittleness or bugs that can harm users.

From this perspective, building great software projects maybe never was about how fast you can type the code. We can “type” 10x, maybe 100x faster with agents than we could before. But we still have to make good design decisions, say no to most product ideas, maintain conceptual integrity, and know when something is “done.” Agents are accelerating the “easy part” while paradoxically making the “hard part” potentially even more difficult.

Agentic scope creep also seems to be actively destroying the open source software world. Now that the bar is lower than ever for contributors to jump in and offer help, projects are drowning in torrents of 3,000-line “helpful” PRs that add new features. As developers become increasingly hands-off and disengaged from the design and planning process, the agents’ runaway scope creep can get out of control quickly. When the person submitting a pull request didn’t write or fully read the code in it, there’s likely no one involved who’s truly accountable for the design decisions.

I have seen in my own work on roborev and msgvault that agents will propose overwrought solutions to problems when a simple solution would do just fine. It takes judgment to know when to intervene and how to keep the agent in check.

Design and taste as our last foothold

Brooks’s argument is that design talent and good taste are the most scarce resources, and now with agents doing all of the coding labor, I argue that these skills matter more now than ever. The bottleneck was never hands on keyboards. Now with the new “Mythical Agent-Month,” we can reasonably conclude that design, product scoping, and taste remain the practical constraints on delivering high-quality software. The developers who thrive in this new agentic era won’t be the ones who run the most parallel sessions or burn the most tokens. They’ll be the ones who are able to hold their projects’ conceptual models in their mind, who are shrewd about what to build and what to leave out, and exercise taste over the enormous volume of output.

The Mythical Man-Month was published in 1975, more than 50 years ago. In that time, a lot has happened: tremendous progress in hardware performance, programming languages, development environments, cloud computing, and now large language models. The tools have changed, but the constraints are still the same.

Maybe I’m trying to justify my own continued relevance, but the reality is more complex than that. Not all software is created equal: CRUD business productivity apps aren’t the same as databases and other critical systems software. I think the median software consulting shop is completely toast. But my thesis is more about development work in the 1% tail of the distribution: problems inaccessible to most engineers. This will continue to require expert humans in the loop, even if they aren’t doing much or any manual coding. As one recent adjacent example, my friend Alex Lupsasca at OpenAI and his world-class physicist collaborators were able to create a formulation of a hard physics problem and arrive at a solution with AI’s help. Without such experts in the loop, it’s much more dubious whether LLMs would be able to both pose the questions and come up with the solutions.

For now, I’ll probably still be getting out of bed at 5am to feed and tame my agents for the foreseeable future. The coding is easier now, and honestly more fun, and I can spend my time thinking about what to build rather than wrestling with the tools and systems around the engineering process.

Thanks to Martin Blais, Josh Bloom, Phillip Cloud, Jacques Nadeau, and Dan Shapiro for giving feedback on drafts of this post.

13:21

Security updates for Monday [LWN.net]

Security updates have been issued by AlmaLinux (gimp:2.8, grub2, kernel, libarchive, libvpx, nginx, opencryptoki, python3.12, vim, yggdrasil, and yggdrasil-worker-package-manager), Debian (chromium, freeciv, libvirt, libyaml-syck-perl, mapserver, ruby-rack, spip, and webkit2gtk), Fedora (chromium, cpp-httplib, glib2, libsoup3, localsearch, openssh, python-scitokens, python-ujson, python3.6, scitokens-cpp, uxplay, wordpress, and xen), Mageia (expat), Red Hat (osbuild-composer), SUSE (Announcement ID: SUSE-SU-2026:0940-1 Release Date: 2026-03-20T13:41:23Z Rating: important References:, Announcement ID: SUSE-SU-2026:0941-1 Release Date: 2026-03-20T13:41:30Z Rating: important References:, Announcement ID: SUSE-SU-2026:0943-1 Release Date: 2026-03-20T13:41:33Z Rating: important References:, Announcement ID: SUSE-SU-2026:0944-1 Release Date: 2026-03-20T13:41:37Z Rating: important References:, Announcement ID: SUSE-SU-2026:0945-1 Release Date: 2026-03-20T13:41:40Z Rating: important References:, chromium, docker, go1.25-openssl, GraphicsMagick, helm, mumble, python311, python311-pyasn1, python313, runc, sqlite3, and tempo-cli), and Ubuntu (debian-goodies and libnet-cidr-perl).

12:14

CodeSOD: Completely Readable [The Daily WTF]

It is eminitently reasonable for companies to have "readability standards" for their code. You're writing this code for humans to read, after all, at least in theory. You need to communicate to future inheritors of your code.

But that doesn't mean readability standards are good. Tony's company, for example, has rules about returning boolean values from functions, and those rules mean you are expected to write code like this:

public bool Completed ()
{
   if (completed == true)
   {
   return true;
   }
   else
   {
   return false;
   }
}

It's more "explicit" this way. Which I certainly would have explicit things to say if I were told I needed to write code this way. Also, what's with the non-indented return statements? Is that also part of their coding standards?

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

11:07

Bullace farm [Judith Proctor's Journal]

 I belong to two Civil War reenactment groups.  The Norfolke Trayned Bandes and Little Woodham.

The Norfolks have a strong connection to Bullace Farm and many of them spend a week there every year as volunteers.  This year, the volunteers from LIttle Woodham are visiting the farm for a day.

I really really want to be there, but it's a three hour trip on a mini bus, and three hours back again.  And I'm paranoid about long journeys.  I've had three really bad (lasting more than two months) of sciatica in the last few years, and two of them were triggered by long journeys.

If you've ever had sciatica, you'll know just how painful it is.  If you haven't, all I can tell you is that it's the most painful health condition I've had in my life and it can leave you pretty much immobilised for the duration.

The last bad attack was triggered by a long train journey.   I chose train rather than car, as I knew I'd be able to get up and walk round at intervals, but sadly, even that and doing tai chi at stations when there were changes, wasn't enough.

By the time I got home I was in agony.  My husband picked me up at the station, and I didn't do any journeys after that for quite some time. Even the short distance to physio appointments had to be done lying on the back seat of the car.  Sitting upright was't an option, even for five minutes.

Over the next couple of months, I worked my way through three different physios who all agreed that I needed an operation (to be fair, my original bout of sciatica a few years before HAD needed an operation), until, finally, Manfred came back to England (he has an elderly parent in the Netherlands).  I walked in with all my weight on my walking stick, and walked out without the stick.

Took a couple of weeks to finish off the job, but that man is a miracle worker.  (He correctly identified the cause of my previous bout of sciatica, as well.)

Ah well, to cut a long story short, I shall not go to Bullace Farm, even though  I madly want to.

If you want to know what the farm is like, watch Tales From the Green Valley.

 

 

 



comment count unavailable comments

Microsoft Xbox One Hacked [Schneier on Security]

It’s an impressive feat, over a decade after the box was released:

Since reset glitching wasn’t possible, Gaasedelen thought some voltage glitching could do the trick. So, instead of tinkering with the system rest pin(s) the hacker targeted the momentary collapse of the CPU voltage rail. This was quite a feat, as Gaasedelen couldn’t ‘see’ into the Xbox One, so had to develop new hardware introspection tools.

Eventually, the Bliss exploit was formulated, where two precise voltage glitches were made to land in succession. One skipped the loop where the ARM Cortex memory protection was setup. Then the Memcpy operation was targeted during the header read, allowing him to jump to the attacker-controlled data.

As a hardware attack against the boot ROM in silicon, Gaasedelen says the attack in unpatchable. Thus it is a complete compromise of the console allowing for loading unsigned code at every level, including the Hypervisor and OS. Moreover, Bliss allows access to the security processor so games, firmware, and so on can be decrypted.

11:00

Upcoming talk in Cesena, Italy [Richard Stallman's Political Notes]

Richard Stallman will speak on March 26 in Cesena, Italy, at the Engineering and Architecture Campus of Cesena of the University of Bologna. Pillars of Tech Free/Libero Software And Freedom in the Digital Society The talk is in English from 15:30 to 17:30 in Aula Magna (Room 4.3), Via dell'Università 50, Cesena. We suggest you bring cash.

10:14

Grrl Power #1445 – Pinocchi-oh no! [Grrl Power]

Maxima obviously has extraordinarily strong bones and ligaments and tendons etc – like, “make a space elevator cable out of that stuff” strong, so when she cracks her joints, it sound a bit like the 1812 Overture. The version where they fire actual cannons to go along with the symphony.

Fun fact, in panel 2, I had planned to draw Cora with her arm somehow extended out so she was covering herself from “4th wall camera angle” POV, but… there just wasn’t a natural angle that didn’t either look like she was intentionally being modest, which she wouldn’t be, or didn’t look like I had grabbed a 3D model by the elbow joint and just yanked it into position with no thought to how humans actually move their limbs. So, poor planning on my part. Instead I’m pretending like she put up a modesty filter than only Maxima can see somehow.

Technically, they’re on P.T.O. – I know it’s called “leave” in the military, but they’re a domestic branch, so a lot of people on the team call it P.T.O. – so Maxima can’t officially get upset at Sydney or Harem for having a topless watch party with “friends of the team.” Honestly, she’s not so much a stick in the mud that she’d even care, especially while coming down from her battle royale adrenaline high. If Harem and Cora sit down at the dinner table later with their knoks out (which is British slang, I assume for “knockers” that I heard once on… Blackadder? Or Red Dwarf. Definitely one of the two.) then Max might at least tell Harem to go teleport a shirt on. (She can’t teleport things to her, but she’s trying to learn to teleport small things that one of her is holding to another her. No luck yet.)


Ah! I thought I had more time till March. I’m bad at looking at dates apparently. The new one is underway. I should have a draft ready to go for the next Monday comic?

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

Benjamin Mako Hill: How taboo shapes knowledge production on Wikipedia [Planet Debian]

Note: I have not published blog posts about my academic papers over the past few years. To ensure that my blog contains a more comprehensive record of my published papers and to surface them for folks who missed them, I will periodically (re) publish blog posts about some “older” published projects. This post draws material from a previously published post by Kaylea Champion on the Community Data Science Blog.

Taboo subjects—such as sexuality and mental health—are as important to discuss as they are difficult to raise in conversation. Although many people turn to online resources for information on taboo subjects, censorship and low-quality information are common in search results. In two papers I recently published at CSCW—both led by Kaylea Champion—we presented a series of analyses showing how taboo shapes the process of collaborative knowledge building on English Wikipedia.

The first study is a quantitative analysis showing that articles on taboo subjects are much more popular and are the subject of more vandalism than articles on non-taboo topics. In surprising news, we also found that they were edited more often and were of higher quality!

Short video of Kaylea’s presentation of the work given at Wikimania in August 2023.

The first challenge we faced in conducting this work was identifying taboo articles. Kaylea had a brilliant idea for a new computational approach to doing so without relying on our individual intuitions about what qualifies as taboo (something we understood would be highly specific to our own culture, class, etc). Her approach was to make use of an insight from linguistics: people develop euphemisms as ways to talk about taboos (i.e., think about all the euphemisms we’ve devised for death, or sex, or menstruation, or mental health).

We used this insight to build a new machine-learning classifier based on English Wiktionary definitions. If a ‘sense’ of a word was tagged as euphemistic, we treated the words in the definition as indicators of taboo. The end result was a series of words and phrases that most powerfully differentiate taboo from non-taboo. We then did a simple match between those words and phrases and the titles of Wikipedia articles. The topics were taboo enough that we were a little uncomfortable discussing them in our meetings! We built a comparison sample of articles whose titles are words that, like our taboo articles, appear in Wiktionary definitions.

In the first paper, we used this new dataset to test a series of hypotheses about how taboo shapes collaborative production in Wikipedia. Our initial hypotheses were based on the idea that taboo information is often in high demand but that Wikipedians might be reluctant to associate their names (or usernames) with taboo topics. The result, we argued, would be articles that were in high demand but of low quality.

We found that taboo articles are thriving on Wikipedia! In summary, we found that in comparison to non-taboo articles:

  • Taboo articles are more popular (as expected).
  • Taboo articles receive more contributions (contrary to expectations).
  • Taboo articles receive more low-quality contributions (as expected).
  • Taboo articles are higher quality (contrary to expectations).
  • Taboo article contributors are more likely to contribute without an account (as expected), and have less experience (as expected), but that accountholders are more likely to make themselves more identifiable by having a user page, disclosing their gender, and making themselves emailable (all three of these are contrary to expectation!).
Image of the estimated qualiy of articles of the four articles in the second mixed-methods paper. Extreme dips reflect periods of frequent vandalism.

Kaylea attempted to understand these somewhat confusing results by designing a fantastic mixed-methods analysis that sought to unpack some of the nuance missing in the quantitative analysis by delving deep into the “life histories” of four articles on English Wikipedia: two on taboo topics related to women’s anatomy (Clitoris and Menstration) and two nontaboo articles chosen for comparison (Cell membrance and Philip Pullman).

Although the findings from the analysis can be difficult to summarize succinctly (as with many qualitative studies), we showed how the taboo example articles’ success was hard-won amid real challenges and attacks. The paper describes how challenges were overcome through resilient leadership, often provided by a single dedicated individual. The paper provides a template for how taboo can be—and frequently is—overcome by dedicated Wikipedians in ways that provide useful knowledge resources in real demand.

For more details, visualizations, statistics, and more, we hope you’ll take a look at our papers, both linked below.


The full citation for the papers are: (1) Champion, Kaylea, and Benjamin Mako Hill. 2023. “Taboo and Collaborative Knowledge Production: Evidence from Wikipedia.” Proceedings of the ACM on Human-Computer Interaction 7 (CSCW2): 299:1-299:25. https://doi.org/10.1145/3610090. (2) Champion, Kaylea, and Benjamin Mako Hill. 2024. “Life Histories of Taboo Knowledge Artifacts.” Proceedings of the ACM: Human-Computer Interaction 8 (CSCW2): 505:1-505:32. https://doi.org/10.1145/3687044.

We have also released replication materials for the paper, including all the data and code used to conduct the analyses.

This blog post and the paper it describes are collaborative work by Kaylea Champion and Benjamin Mako Hill.

09:42

Follow-through [Seth's Blog]

How does the ball know?

In tennis, golf or just about all ball sports, the follow-through determines the flight of the ball. Great players always have a complete and confident follow-through.

But the ball is long gone before that happens.

So, what’s the point?

It turns out that the ball can tell that you intend to have a serious follow-through. A weak or non-existent follow-through requires that you start slowing down before your racquet ever gets to the ball.

The metaphor should be pretty clear.

If you show up for the audition, your first TEDx talk, your early blog posts, the job interview or your start up hoping to see what happens (“I’ll commit if I get picked”) we can tell.

On the other hand, when it’s clear that you’re going to keep on showing up, it’s an invitation to get aboard now.

Follow-through doesn’t always work. But it always works better than the alternative.

07:14

The Circle Of Something Or Other [Penny Arcade]

New Comic: The Circle Of Something Or Other

06:35

Pluralistic: Understaffing as a form of enshittification (23 Mar 2026) [Pluralistic: Daily links from Cory Doctorow]

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

Today's links

  • Understaffing as a form of enshittification: A way to shift value from workers, patients and shoppers to investors.
  • Hey look at this: Delights to delectate.
  • Object permanence: Marvel v "superhero"; What's a photocopier?; "Up Against It"; "Medusa's Web"; AI can't do your job; Coping with plenty; "The Shakedown"; Chickenized reverse-centaurs; France v iTunes; Copyfight discipline; Mystery lobbyists; "Where the Axe is Buried"; Free/open microprocessor; Folk models of computer security; Bug-eyed steampunk mask; Academics embracing Wikipedia.
  • Upcoming appearances: Berkeley, Montreal, London, Berlin, Hay-on-Wye.
  • Recent appearances: Where I've been.
  • Latest books: You keep readin' em, I'll keep writin' 'em.
  • Upcoming books: Like I said, I'll keep writin' 'em.
  • Colophon: All the rest.



A 1950's pharmacy with a labcoated pharmacist behind the counter. The pharmacist's head has been replaced with the poop emoji from the cover of 'Enshittification,' its mouth covered with a black bar scrawled with grawlix. The pharmacy has been made over to look haunted, with purple mist rising from the ground and cobwebs in the top corners. A CVS Pharmacy sign hangs in the background.

Understaffing as a form of enshittification (permalink)

At root, enshittification can only take place when companies can move value around. Digital tools make it easier than ever to do this, for example, by changing prices on a per-user, per-session basis, using commercial surveillance data to predict the highest price or lowest wage a user will accept:

https://pluralistic.net/2023/02/19/twiddler/

Digital "twiddling" represents a powerful system of pumps for moving value around, taking it away from users and giving it to business customers, then taking it from businesses and giving it to users, and then, ultimately, harvesting all the value for the company's shareholders and executives.

Twiddling is powerful because it's fine-grained, allowing businesses to extract more from their most vulnerable customers and workers, while reserving more equitable treatment for more empowered stakeholders who might otherwise take their business elsewhere.

But long before digitization made twiddling possible, businesses that found themselves in a position to make things worse for their customers and workers without facing consequences were accustomed to doing so. Think of the airport shop that sells water for $10/bottle: that's a ripoff whether you're in coach-minus or flying first class, and it's made possible by the TSA checkpoint that makes shopping elsewhere a time-consuming impossibility.

The airport shop is the only game in town – a "monopolist" in economics jargon. When a business has something you really want (or even better, something you need) and it's hard (or impossible) for you to get it elsewhere, they can take value away from you and harvest it for themselves.

The most obvious forms of monopoly extraction are high prices and low wages. Dollar stores are notorious for this, using their market power to procure extremely small packages of common goods in "cheater sizes" that have high per-unit costs (e.g. the cost per ounce for soap), while still having a low price tag (the cost per (small) bottle of soap). These stores are situated in food deserts, which they create by boxing in community grocers and heavily discounting their wares until the real grocers go out of business. They're also situated in work deserts, because driving regular grocers out of business destroys the competition for labor, too. That means they can pay low wages and charge high prices and make a hell of a lot of money, which is why there are so many fucking dollar stores:

https://pluralistic.net/2023/03/27/walmarts-jackals/#cheater-sizes

That's the most obvious form of value harvesting, but it's not the only one. There are other costs that businesses can impose on their customers and workers. Think of CVS, the pharmacy monopolist that uses its vertical integration with bizarre, poorly understood middlemen like "pharmacy benefit managers" to drive independent pharmacies out of business:

https://pluralistic.net/2024/09/23/shield-of-boringness/#some-men-rob-you-with-a-fountain-pen

If you've been to a CVS store recently, you have doubtless experienced a powerful form of value-shifting: understaffing. CVS (and the other massive chains in the cartel, like Walgreens) have giant stores with just one or two employees on the floor, often just a cashier and a pharmacist.

This makes them easy pickings for shoplifters, so all their merchandise is locked up in cabinets and when you want to buy something, you have to find the lone employee and get them to unlock the case for you. This is CVS trading your time for their wage-bill.

Then, you're expected to check out your own purchases – shifting labor from workers on CVS's payroll to you – with badly maintained machines that often misfire and require you to wait again for that lone employee to come and override them.

Meanwhile, that employee is absorbing a gigantic amount of frustration and abuse from customers who are paying high prices and enduring long waits – another cost that CVS shifts from their shareholders to someone else (workers, in this case).

Finally, CVS demands that publicly funded police respond to the inevitable shoplifting and other security problems created by running a big-box store with a skeleton crew, shifting costs from the business to everyone in the local tax-base.

In "Not Enough Workers For the Job," The American Prospect's Robin Kaiser-Schatzlein looks at the systemic trend towards understaffing that has swept across every sector of the US economy over the past five years:

https://prospect.org/2026/03/19/understaff-workplace-business-covid-cvs-pharmacies-hotels-grocery-stores/

Kaiser-Schatzlein lays the blame for many of life's frustrations at the feet of this business trend: "long lines, messy grocery aisles, organized theft, high hotel costs, frequent flight cancellations, deadly medication errors at pharmacies, increased use of medical restraints in nursing homes, and, more generally, a palpable and rising dissatisfaction with work."

As you can see from that list, understaffing affects everyone, from people with the wherewithal to buy a plane ticket to vulnerable elderly people who are literally tied to their beds or drugged into stupors for the last years of their lives.

There's academic work to support the idea that understaffing is on the rise, like a 2024 Kennedy School survey of 14,000 workers where a majority said that their workplaces are "always" or "often" understaffed. A 2023 study in the Journal of Public Health Management and Practice found that public health institutions need to hire 80% more workers to be adequately staffed. New York's Mt Sinai hospitals paid a $2m fine in 2024 for understaffing its ERs, as well as oncology and labor units. Another study blames understaffing for the rise of use of antipsychotic "chemical handcuffs" in nursing homes:

https://pubmed.ncbi.nlm.nih.gov/35926573/

The hits keep coming: the DoT Inspector General says that 77% of air traffic control is understaffed, with NYC ATC staffed at 54% of the correct level. In Texas, county jails have had to reduce their capacity due to understaffing (they have enough beds, but not enough turnkeys). Understaffing is behind much of the unprecedented union surge, with workers at Starbucks, railroads and elsewhere becoming labor militants due to understaffing. 83% of white-collar millennials say they're doing extra work to make up for vacant positions in their organizations. As Starbucks union organizers can attest, workers need unions if they want to have a hope of forcing their bosses to adequately staff their jobsites, so it's not surprising that understaffing has emerged at a time when union density is at rock bottom.

Kaiser-Schatzlein quotes the Kennedy School's Daniel Schneider, who identifies understaffing as a deliberate business strategy. Businesses don't hire enough workers because that makes them more profitable. It's not because "no one wants to work anymore" (though doubtless repeating that fairy tale helps shift the blame for long lines and poor service from real, greedy bosses to imaginary, greedy workers).

Private equity firms lead the charge here, "rolling up" multiple, competing businesses in a sector and then cutting staffing across all of them. Putting all the businesses in a given sector and region under common ownership means that when these businesses hack away at staffing levels, workers and customers have nowhere else to go. This is especially pernicious at nursing homes, where PE companies drastically reduce headcount, putting staff and patients alike at risk:

https://www.npr.org/sections/health-shots/2023/01/31/1139783599/new-york-nursing-home-owners-drained-cash?ft=nprml&amp;f=853198417

Private equity has just about declared victory in its decades-long war on community pharmacies, consolidating pharmacy ownership nationwide into just a few chains that are the poster-children for understaffing. These ghost-ships aren't just frustrating places to shop – they're a danger to their communities. As Kaiser-Schatzlein reports, Ohio fined CVS in 2021 for boarding up the walk-up pharmacies in its stores and forcing customers to use the drive-through, because there was only a single pharmacist on duty.

Without help, the lone pharmacist was unable to process deliveries, so CVS pharmacies' floors were littered with unopened parcels. Patients had to wait over a month to get their prescriptions filled. CVS refused to hire additional staff to process the backlog, and the on-duty staff worked under declining conditions, as the undermaintained air conditioning quit and indoor temperatures soared. Unsurprisingly, these stores had massive staff turnover, which also hampered their efficiency.

Understaffing in pharmacies leads to serious medication errors, which are proliferating across the US, killing hundreds of thousands of Americans every year. The errors are incredible, like the woman who died after getting chemotherapy drugs instead of antidepressants:

https://www.nytimes.com/2020/01/31/health/pharmacists-medication-errors.html

Pharmacists at chain stores like CVS are at elevated risk for kidney stones because they don't have time for bathroom breaks, so they adopt a practice of not drinking water during their shifts. One CVS pharmacist told Texas regulators, "I am a danger to the public working for CVS."

As ever, covid provides the ideal excuse for shifting value from customers and workers to shareholders. Today's high prices never came down after the "greedflation" that bosses boasted about to shareholders, even as they told customers that it was because of "supply chain shocks":

https://pluralistic.net/2023/03/11/price-over-volume/#pepsi-pricing-power

Likewise, staffing levels never came back from the covid skeleton crews that we all learned to deal with in the days of widespread acute illness and social distancing. Kaiser-Schatzlein spoke to hotel workers like Jianci Liang, a housekeeper at Boston's Hilton Park Plaza, who described a post-pandemic jobsite with 20 fewer housekeepers: "I sleep with pain, I wake up with pain, I go to work with pain." The Bureau of Labor says that hotel staffing levels are down 16% nationwide.

Prices (and profits) are up, though. Hotels are posting record profits and paying record executive salaries, wrung from facilities where the pools are closed and room cleanings happen on alternate days.

Workers absorb the cost of understaffing in their bodies and their psyches. It's not just physical exhaustion, it's also the abuse that is directly correlated with lower staffing levels. Frustrated customers vent their anger at grocery workers, flight attendants and other front-line workers.

I can't help but see a connection here to the AI bubble, which is fueled by the fantasy of a world without people:

https://pluralistic.net/2026/01/05/fisher-price-steering-wheel/#billionaire-solipsism

The billionaire solipsists who have directed hundreds of billions of dollars in AI investment like to rhapsodize about a future where a boss's ideas are turned into products and services without having to be funneled through workers:

https://pluralistic.net/2026/03/12/normal-technology/#bubble-exceptionalism

That's why AI has taken over customer service – the multi-hour waits for a customer service rep were always a way of shifting value from customers and workers to shareholders. Businesses could increase staffing at their call centers. Businesses could offer better products and services and reduce the number of people who need customer service. By refusing to do either, they make you wait on the line until you are suffused with murderous rage, and then expect their workers to deal with your anger. Turning the whole thing over to AI makes perfect sense – your problems won't be solved, and they don't have to pay the chatbot at all when you get angry at it:

https://pluralistic.net/2025/08/06/unmerchantable-substitute-goods/#customer-disservice

"We did this with AI" has become a synonym for "We don't care if this is done well":

https://pluralistic.net/2026/03/11/modal-dialog-a-palooza/#autoplay-videos

"We don't care if this is done well" could well be the motto of the understaffing craze. The technical insights that sparked today's AI investment bubble could have happened at any time, but the ensuing investment tsunami is a product of a world dominated by large firms that are "too big to care" about the quality of their products – or their jobs.


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 Marvel Comics: stealing our language https://memex.craphound.com/2006/03/18/marvel-comics-stealing-our-language/

#20yrsago MPAA/RIAA/BSA: No breaking DRM, even if it’s killing you (literally!) https://blog.citp.princeton.edu/2006/03/08/riaa-says-future-drm-might-threaten-critical-infrastructure-and-potentially-endanger-liv/

#20yrsago Coping with plenty – stuff gets cheaper, space gets pricier https://www.theguardian.com/business/2006/feb/28/retail.shopping

#20yrsago France will let Microsoft play iTunes http://news.bbc.co.uk/2/hi/technology/4828296.stm

#20yrsago A new discipline to describe the copyfight https://web.archive.org/web/20060422010702/https://www.nyu.edu/classes/siva/archives/002930.html

#20yrsago Right-wing think-tank hates DRM https://www.cato.org/policy-analysis/circumventing-competition-perverse-consequences-digital-millennium-copyright-act#

#20yrsago Reasons to take math in high school https://web.archive.org/web/20060610134055/http://www.acm.org/ubiquity/views/v7i11_math.html

#20yrsago Sun ships free and open microprocessor https://web.archive.org/web/20060221112756/http://opensparc.sunsource.net/nonav/index.html

#20yrsago Octavia Butler scholarship will send people of color to Clarion https://web.archive.org/web/20060406161412/https://carlbrandon.org/butlerscholarship/

#20yrsago Online sexual material is obscene if any community in US objects https://web.archive.org/web/20060505232346/http://www.justicemag.com/daily/item/2590.html

#15yrsago Folk models of home computer security: what we think our PCs are doing https://rickwash.com/papers/rwash-homesec-soups10-final.pdf

#15yrsago Fixers’ Collective: people learning to make broken stuff work again https://www.csmonitor.com/The-Culture/Arts/2011/0321/The-art-of-the-fix-it

#15yrsago Bug-eyed monster steampunk mask https://bob-basset.livejournal.com/158400.html

#15yrsago Scholars to stop pretending they don’t use Wikipedia; will work out best practices instead https://www.bbc.com/news/education-12809944

#15yrsago Electronic publishing Bingo card from John Scalzi https://whatever.scalzi.com/2011/03/20/the-electronic-publishing-bingo-card/

#15yrsago RIP, Mike Glicksohn, Hugo-winning science fiction fan https://file770.com/mike-glicksohn-1946-2011/

#15yrsago Anti-labor ads celebrate workers taking paycuts and CEOs getting millions https://www.cogdis.me/2011/03/is-this-what-they-really-want.html

#15yrsago Reluctant witness refuses to admit he knows what a photocopier is https://www.cleveland.com/metro/2011/03/identifying_photocopy_machine.html

#15yrsago Tim Wu in the Guardian https://www.theguardian.com/technology/2011/mar/17/the-master-switch-tim-wu-internet

#15yrsago Up Against It: smart, whiz-bang space opera pits astro-bureaucrats against rogue AIs https://memex.craphound.com/2011/03/18/up-against-it-smart-whiz-bang-space-opera-pits-astro-bureaucrats-against-rogue-ais/

#10yrsago Howto: start a fire with a lemon https://www.youtube.com/watch?v=Bv2vT665bGI

#10yrsago First order of business for hard-right government: canceling Croatia’s answer to The Daily Show https://balkaninsight.com/2016/03/17/satiric-show-pulled-from-croatian-tv-for-intolerance-03-17-2016/bi/all-balkan-countries/

#10yrsago FBI issues car-hacking warning, tells drivers to keep their cars’ patch-levels current https://www.wired.com/2016/03/fbi-warns-car-hacking-real-risk/

#10yrsago BART’s twitter manager drops truth-bombs, world cheers https://gizmodo.com/i-would-like-to-buy-a-drink-for-the-poor-soul-who-ran-t-1765477706

#10yrsago Chelsea Manning gets the US Army to cough up its “insider threat” training docs https://www.theguardian.com/commentisfree/2016/mar/18/government-persecuting-whistleblowers-insider-threat-chelsea-manning

#10yrsago Apple engineers quietly discuss refusing to create the FBI’s backdoor https://www.nytimes.com/2016/03/18/technology/apple-encryption-engineers-if-ordered-to-unlock-iphone-might-resist.html

#10yrsago Russia moots ban on discussions about VPNs, reverse proxies, and other anti-censorship techniques https://torrentfreak.com/copyright-holders-want-site-block-circumvention-advice-banned-160319/

#10yrsago Medusa’s Web: Tim Powers is the Philip K Dick of our age https://memex.craphound.com/2016/03/18/medusas-web-tim-powers-is-the-philip-k-dick-of-our-age/

#10yrsago Meet the Commercial Energy Working Group, a lobby group that won’t say who it lobbies for https://web.archive.org/web/20160320150011/https://theintercept.com/2016/03/20/mysterious-powerful-lobbying-group-wont-even-say-who-its-lobbying-for/

#5yrsago Support Amazon workers today https://pluralistic.net/2021/03/20/against-amazon-union-busting/#what-rhymes-with-bezos

#5yrsago Department of Truth https://pluralistic.net/2021/03/20/against-amazon-union-busting/#dot

#5yrsago The political possibility of cities https://pluralistic.net/2021/03/21/ex-urbe/#arcology-politics

#5yrsago Aviation bailout cost $666k/job https://pluralistic.net/2021/03/18/news-worthy/#aa

#5yrsago Impunity for NYPD cops who brutalized BLM protesters https://pluralistic.net/2021/03/18/news-worthy/#nypd-black-and-blue

#5yrsago Help news, not news-barons https://pluralistic.net/2021/03/18/news-worthy/#big-news

#5yrsago Announcing "The Shakedown" https://pluralistic.net/2021/03/19/the-shakedown/#monopsony

#5yrsago Chickenized reverse-centaurs https://pluralistic.net/2021/03/19/the-shakedown/#weird-flex

#1yrago You can't save an institution by betraying its mission https://pluralistic.net/2025/03/19/selling-out/#destroy-the-village-to-save-it

#1yrago AI can't do your job https://pluralistic.net/2025/03/18/asbestos-in-the-walls/#government-by-spicy-autocomplete

#1yrago Ray Nayler's "Where the Axe Is Buried" https://pluralistic.net/2025/03/20/birchpunk/#cyberspace-is-everting


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 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "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 (1034 words today, 54661 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

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

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

Medium (no ads, paywalled):

https://doctorow.medium.com/
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

05:21

Russ Allbery: Review: Dark Class [Planet Debian]

Review: Dark Class, by Michelle Diener

Series: Class 5 #5
Publisher: Eclipse
Copyright: 2022
ISBN: 0-6454658-2-8
Format: Kindle
Pages: 349

Dark Class is the fifth novel (not counting the skippable novella) in Michelle Diener's Class 5 romantic science fiction series. As with the previous novels, this follows romance series conventions: There are new protagonists, but characters from the previous books make an appearance. It's helpful but not that necessary to remember the details of the previous books; the necessary background is explained enough to follow the story.

By now, series readers know the formula. Yet another Earth woman was secretly abducted by the Tecran, encounters a Class 5 ship, and finds a way to be surprisingly dangerous and politically destabilizing. This time, Ellie has been mostly unconscious since her abduction and awakes in a secret Tecran base after the Tecran have all been murdered. There is a Class 5 AI involved, but not a full ship; instead, Dark Class picks up (or, arguably, manufactures) a loose end from Dark Minds. Other than that break from the formula, you know what to expected by now: a hunky Grih, a tricky political standoff, a protective Class 5, a slow-burn romance, and a surprisingly capable protagonist who upends politics through plucky grit and refusal to tolerate poor treatment. Oh, and a new selection of salvaged clothing and weapons to make Ellie beautiful and surprisingly dangerous.

If you are this far into the series, you probably like the formula. That's my position. I don't care about the romance, but something about the prisoner to threat evolution of the kidnapped protagonists and the growing friendship with an AI makes me happy. This is not great literature, but it is reliably entertaining with a guaranteed victorious protagonist and happy ending, making it a comfortable break from more difficult books with emotionally wrenching scenes.

Dark Class is one of the better executions of the formula because it has long stretches of my favorite parts of these books: exploration of mostly-abandoned surroundings for neat gadgets while the AI and the protagonist slowly build a relationship of mutual respect. This book has bonus drones with minds of their own and an enigmatic alien spaceship that provides a fun mid-novel twist. The Tecran and the Grih repeatedly underestimate Ellie and are caught by surprise at dramatically satisfying moments. It's just fun to read, and I save this series for when I need that type of book.

As with the other books of the series, Diener's writing is serviceable but not great. She repeats herself, uses way too many paragraph breaks for emphasis, and is not going to win any literary awards for prose quality. The series is in the upper half of self-published works, and I've certainly read worse, but either the formula will click with you or it won't. If it doesn't, the prose is not going to salvage the book.

There is some development of the series plot, but it's mostly predictable fallout from Dark Matters. This book is mostly tactical and smaller in scale. I am a little curious where Diener is going with political developments, since the accumulated Earth women and Class 5 ships are in some danger of becoming a sort of shadow government through sheer military power, but I'm dubious this series will have enough political sophistication to dig into the implications. It's best enjoyed as small-scale episodic wish fulfillment for female protagonists, and that's good enough for me.

If you've read this far in the series, recommended; this is one of the stronger entries.

Followed by Collision Course, which breaks the title convention for the series.

Rating: 7 out of 10

04:49

Urgent: Protect students from retaliation for protesting deportation thugs [Richard Stallman's Political Notes]

US citizens: call on your state education leaders to protect Students from federal retaliation for protesting deportation thugs.

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

Urgent: Stop war-lover from sending American troops into Iran [Richard Stallman's Political Notes]

US citizens: call your members of Congress to stop the war-lover from sending American troops into Iran – And Vote NO on the Draft!

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

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

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

Please spread the word.

Urgent: Stop $10 billion scam to fund Board of Peace [Richard Stallman's Political Notes]

US citizens: call on your members of Congress to block the $10 billion scam to fund the corrupter's Orwellian Board of Peace.

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.

Interesting analysis of differences between generations [Richard Stallman's Political Notes]

An interesting analysis of differences between generations. For instances, the differences in attitudes nowadays are much less than in the past, but marketing makes them look bigger than they are.

It is unfortunate for me that hitchhiking has ceased. There are times when I have no way to get anywhere except to beg, such as when the bus over the Golden Gate Bridge rejected me as a passenger because I had the luggage that I had taken on a flight.

I don't feel danger in getting into a stranger's car; by contrast, the potential danger in a proprietary surveillance system (for example, Guber) is intolerable. The probability that the driver would do wrong to me is minuscule, but the probability that the proprietary surveillance system would do wrong to many passengers is quite large.

Thatcher's greatest achievement [Richard Stallman's Political Notes]

Thatcher said that the "New Labour" of Tony B'liar was her greatest achievement — shifting the Labour Party to put business and rich people first. A Labour MP describes the major changes needed to restore democracy and give priority and political power to the people.

White South Africans myth of reversed racism [Richard Stallman's Political Notes]

White South Africans have spread a myth that ending apartheid led to a reversed system of racism against them, that blacks hated and persecuted whites much as white racists in power had formerly hated and persecuted blacks. Right-wing extremists have propagated this falsehood to justify the cause of continuing or bringing back racism.

The article linked to just above displays symbolic bigotry by capitalizing "black" but not "white". (To avoid endorsing bigotry, capitalize both words or neither one.) I denounce bigotry, and normally I will not link to articles that practice it. But I make exceptions for some articles because I consider their information important — and I present this comment about them.

Germany's right-wing government [Richard Stallman's Political Notes]

Germany's current government is right-wing, and competing not to let the extreme right-wing outdo it in wrongdoing. It intervened in the prize for best independent bookstore by arbitrarily excluding some candidate bookstores. It refused to give any explanation, but it may be because they are antifascist.

Black people more likely to be searched in rich areas of London [Richard Stallman's Political Notes]

*In richest areas of London, black people up to 48 times more likely to be stopped and searched [than other people].*

It is hard to be sure why cops' behavior is prejudiced in this way, but the tendency to search people because of perceiving them as making "furtive glances" suggests that unconscious racism is at work. Suspecting someone because of a vague impression is exactly the sort of thing that gives unconscious prejudice an opportunity to influence the decision.

Urgent: Block deployment of U.S. ground troops in Iran [Richard Stallman's Political Notes]

US citizens: phone your congresscritter and call on per to support an Emergency War Powers Resolution to block the deployment of U.S. ground troops in Iran — and vote NO on any bill for conscription.

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.

Fears for women's rights in Chile [Richard Stallman's Political Notes]

*Fears for women's rights in Chile as anti-abortion president set to take office.*

The new president is literally a fascist — a supporter of the coup-leader Pinochet, who in power was a murderous dictator.

I wonder how he managed to win the election. Was it stolen?

Values of right-wing politics [Richard Stallman's Political Notes]

The values of right-wing politics, based on dominating other people, have led to pressure on men to make their faces meet an imposed idea of what looks powerful.

The wellness-influencer axis plays a part as well.

Urgent: Do not let polluters off the hook [Richard Stallman's Political Notes]

US citizens: call on Congress not to let polluters off the hook for climate damage.

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.

Feeds

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