Doctorow owns his feeds now. They're still a firehose.

~/articles/doctorow-owns-his-feeds-now-theyre-still-firehose
Animated share card for Doctorow owns his feeds now. They're still a firehose.

Cory Doctorow's Bluesky account is 227 days old and has 17,374 posts in it. That's 76 a day, on a server he runs himself, under a bio that reads "I post long threads." His Mastodon account has been doing the same thing since March 2020: 110,491 posts, 46 a day, for six and a half years.

I pulled those numbers from the public APIs this morning because I wanted to check a feeling. The feeling was that following him anywhere except RSS is a chore, and that this sits badly next to what he writes about consent and platforms. The numbers back the feeling. The history of how he got here is more interesting than the complaint.

TL;DR

  • He left Boing Boing in January 2020 after 19 years and launched Pluralistic three weeks later on his own WordPress install. Permalinks have lived on his domain ever since. That part he got right and never wavered on.
  • The syndication strategy changed four times in six years. The shape of what lands in your timeline never did: every essay arrives as a 30 to 100 part thread.
  • He posted his last Twitter thread on March 5, 2026, the day his self-hosted Bluesky server went live. The Twitter account now posts one templated pointer a day.
  • The principle is sound. The implementation treats every platform as a dumb pipe, and the cost lands on whoever followed him.

2001 to 2020: someone else's masthead

He co-edited Boing Boing from age 30 to 49. His name came off the editors list on January 29, 2020, and the site never acknowledged he'd gone. By his own count that's tens of thousands of posts he wrote and doesn't control.

Pluralistic launched February 19, 2020. The 2022 anniversary post names the model: POSSE, Post Own Site, Share Everywhere. "The permalinks for each post live on my own site, which I control." Everything else is a copy.

2020 to 2021: POSSE by hand

The January 2021 post "20 years a blogger" is the only full description of the pipeline he's written, and it's worth reading for how much of it was manual.

Up at 5am. Newsblur for RSS. The essay is composed in gedit as a Twitter thread, because "Composing in Twitter is the most unforgiving medium I've ever worked in" and the 280 character chunks force structure. Then each chunk gets pasted into Tumblr, where he re-selects every URL by hand because the editor drops links. Then each chunk is cut to under 500 characters for Mastodon. Twitter publishes last, because a thread can't be edited after the fact and the other platforms surface the typos first.

Two accounts matter here. His personal Mastodon account at mamot.fr dates from July 2018. The Pluralistic account was created March 12, 2020, three weeks after the blog, as a separate feed. He split them on purpose.

The thread format was a Twitter constraint. Every platform downstream inherited it.

2022 to 2023: scripts, and the Twitter cracks

By the two-year mark a reader, the cryptographer Loren Kohnfelder, had written Python scripts that take a master XML file and emit the newsletter, the blog post and the thread text. Medium got added as a fourth mirror. A tool called chirr.app replaced Twitter's own thread composer, which he called "pretty janky, to be honest, but so much better."

Output held at roughly one essay a day: 550 posts at two years, 767 at three.

Twitter was already failing him. On March 16, 2020 the account was locked over a list he'd named "colossal assholes." When it came back he was short about 100,000 followers and nobody explained why. On January 21, 2023 he paid $8 for Twitter Blue because, in his words, the company had strongly implied it would only show his posts to the people who asked for them if he paid. He defended that in April: shopping your way out of monopoly capitalism is a fool's errand.

Two other lines from the three-year post set up what comes later. Readers asked him to move to a Mastodon server with a 5,000 character limit. He declined: "Censorship-resistance is simply more important than character limits." And he has "no metrics for any of the channels I manage – not even a humble page-counter." Hold onto that one.

2023 to 2025: the Ulysses pact

August 2023, on Bluesky and Threads: "I'm not on either service." Reason: "I don't trust 'em." Standard: "A service that isn't federated is unfit for purpose."

November 2, 2024, "Bluesky and enshittification": "My rule – I don't join a service that I can't leave without switching costs." He praised Bluesky's moderation work and said federation had sat on the roadmap without shipping. That essay went out as a thread of at least 33 parts on Twitter, the platform he'd spent two years describing as a trap.

August 2025, after Bluesky added a binding arbitration clause: "I can't wait to use Bluesky, but I will not be joining Bluesky."

The position was consistent. He was telling you to weigh exit costs before you join, while still posting daily to the one place he'd already said he couldn't leave.

2026: his own server, and the Twitter bot

The six-year post on February 19, 2026 reads like a maintenance log. More than 1,500 essays. He now runs each draft through a local Ollama model with the prompt "find typos," which catches three or four per edition, about half of them false positives. Tumblr's editor is broken, so he pastes preformatted HTML and checks the result. Twitter threads over 25 posts have to be tacked onto the previous one by hand because the editor fails midway. Mastodon still has no thread editor worth the name. Medium pulled his free flag, so scheduling is rationed. Microsoft blacklisted his mail server and Hotmail readers stopped getting the newsletter.

Then the line that changed things: once his sysadmin, Ken Snider, finished a hardware upgrade on a colo box in Toronto, there'd be a Bluesky server, "at which point I will part ways with Twitter."

That happened March 5, 2026. The account is doctorow.pluralistic.net and the DID is did:web:pluralistic.net, which means the identity is anchored to his domain, not Bluesky's. His framing: "I am on Bluesky, the service, but I am not a user of Bluesky, the company." Same post: "If you're reading this on Twitter, this is the long-promised notice that I'm done here."

He wasn't quite done. The account got renamed "NO LONGER ON TWIT TER" and has posted the same message most days since at least March 13: "I've left Twitter, but I'm still writing a daily blog. You can read today's post at..." followed by the blog link, the Mastodon link and the Bluesky link. I can't tell from outside whether a script posts it or a human pastes it. The distinction doesn't matter. It's an automated placeholder that exists so the handle doesn't go dark, which is the exact shape he'd mock on anyone else's account.

What the feeds look like from the other side

I sampled the two live accounts over the last ten days using the public APIs. Replies are counted because his threads are built as self-replies.

  • @pluralistic@mamot.fr, Oct 9 to 18: 400 posts, 263 of them in-reply, between 11 and 75 a day.
  • doctorow.pluralistic.net, Oct 11 to 18: 500 posts, 334 of them in-reply, between 1 and 160 a day.
  • @doctorow on X: 1 post a day, the same one.

The Mastodon bio says it outright: "I post long threads. If you don't like these in your timeline but want to read them, I suggest unfollowing me here and subscribing to my RSS, or my newsletter, or any of my various long-form feeds."

He knows. He wrote the warning. The Bluesky bio trims it to four words.

Where this collides with his own argument

The concessions are real. Owning the permalinks is the whole game, and he's held it for six years without a miss. Self-hosting a Bluesky PDS is the thing he said he'd do and then did. The two-account split on Mastodon is a genuine accommodation. Plenty of readers say the threads are the most useful thing in their timeline, and they're not wrong about the content.

The format is still rude.

A Mastodon home timeline is chronological. Seventy-five toots from one account in a day is a wall, and the people on the other side of it are the ones who did the thing he asks for: they followed him on a federated service instead of a walled garden. Their reward is a feed that's mostly him. His own essays argue that the user should choose, that consent should be opt-in, that you should weigh what it costs to leave. The firehose inverts all of that. The follower pays, every day, and the only remedy he offers is to unfollow.

He can't see this because he decided not to. No metrics on any channel means no idea how many people muted him, unfollowed, or gave up on the instance's local timeline. That was a principled choice about surveillance. It's also a choice to not know what the output does to the people receiving it.

And the shape is an accident of history. The 280 character chunking came from composing in Twitter in 2020. Twitter has been out of his workflow since March. The format outlived the constraint that produced it. Six anniversary posts in, the question of whether it still applies hasn't come up once.

What I'd do instead

One post per essay per platform: title, a paragraph, the permalink. The thread goes on a clearly labeled thread account, which he already has on Mastodon, and would take one afternoon to add on Bluesky. The site is WordPress, and WordPress has a maintained ActivityPub plugin, so the blog itself could be the thing people follow on the fediverse, with the human account free for replies and boosts.

He's done harder things than this to own his output. This one's a config change.

Limits

  • Ten days is a small window. He publishes five or more days a week and the per-day counts swing by 10x inside the sample.
  • I can't read the X account directly. The March 13 date comes from the snowflake IDs of three posts a search engine surfaced, decoded by hand. The first pointer post may be earlier.
  • The in-reply counts include real replies to other people, not only thread segments. The split between the two isn't visible from the API without walking every thread.
  • Whether a person or a script presses publish is not observable from outside. I've described what arrives, not how it's sent.
  • I haven't asked him, and I'm one reader with one timeline. n=1.

Links: 20 years a blogger (Jan 2021) · Pluralistic is two · three · five · six · Fool me twice (Aug 2023) · Bluesky and enshittification (Nov 2024) · Blowtorching the frog (Mar 2026) · the Bluesky announcement thread