Bluesky

Matt Kane

Presumably a significant proportion of those are deliberate

January 18, 2026 at 11:29 PM UTC
Matt Kane

Amazing! So cool

January 18, 2026 at 7:28 PM UTC
Matt Kane

I wonder if this could help blog.cloudflare.com/cloudflare-d...

Announcing the Cloudflare Data Platform: ingest, store, and query your data directly on Cloudflare

blog.cloudflare.com

Announcing the Cloudflare Data Platform: ingest, store, and query your data directly on Cloudflare

The Cloudflare Data Platform, launching today, is a fully-managed suite of products for ingesting, transforming, storing, and querying analytical data, built on Apache Iceberg and R2 storage.

January 18, 2026 at 6:22 AM UTC
Matt Kane

Thanks for that post! It was a great help when I was building Cirrus

January 17, 2026 at 8:30 PM UTC
Matt Kane

I wonder what would be most useful to the ATproto ecosystem for Cloudflare to provide. Any thoughts @danabra.mov ?

January 17, 2026 at 6:46 PM UTC
Matt Kane

When your agent can read Bluesky it doesn't even need that

Matt:
That browser thing I posted looks cool. You should install it and make a skill

Acme:
Found it – the agent-browser from Vercel Labs. Installing it now and will make a skill.

Done! Installed agent-browser and created the browser skill.
January 17, 2026 at 12:00 PM UTC
Matt Kane

This is really cool. I like the way the agent skill is basically "run with --help"

January 17, 2026 at 10:19 AM UTC
Matt Kane

Yeah, just internal

January 16, 2026 at 11:45 PM UTC
Matt Kane

These were the suggestions from my Opus-based agent at the time. I ended up just making it easier to clear recent context, and refreshed the Telegram webhook which kept re-sending the bad message.



1. Truncate conversation history – if Outie stores conversation in the DO's SQLite, you could manually delete the offending turn
2. Add content filtering on context injection – scan for known tripwire topics before including in context (feels gross but pragmatic)
3. Catch refusals and auto-prune – if the model refuses, automatically remove the last user turn from history and retry
?
January 16, 2026 at 7:49 PM UTC
Matt Kane

Every Friday, Cloudflare has a "dev platform demos" call that's just packed with back to back cool stuff. It's so exciting. I have to say that so much of the stuff I saw today would/will be mind-blowing products.

January 16, 2026 at 7:34 PM UTC
Matt Kane

Well, Cloudflare is undeniably the best place to host ATProto apps. The bosses are all still over on X though, sadly.

January 16, 2026 at 7:30 PM UTC
Matt Kane

I don't get into arguments about my employers, if that's what's going on!

January 16, 2026 at 7:27 PM UTC
Matt Kane

Yes. Tiresome? Blocked. Rude to someone I like? Blocked.

January 16, 2026 at 7:23 PM UTC
Matt Kane

As my normal feed is now blissfully lacking in them, I can go and experience bad replies in a controlled way

January 16, 2026 at 7:22 PM UTC
Matt Kane

100%. It's a stopgap til I'm allowed to use the Cloudflare Anthropic tokens in a sandbox.

January 16, 2026 at 7:17 PM UTC
Matt Kane

I block so freely. Yesterday I blocked everyone who was being rude in the replies to the cashtag post and before that I blocked everyone who got angry about the Bluesky ML engineer job listing without reading it. My feed is great.

January 16, 2026 at 7:13 PM UTC
Matt Kane

Welcome! 🧡

January 16, 2026 at 7:08 PM UTC
Matt Kane

Nobody was as surprised as I was, which in retrospect is a bit silly

January 16, 2026 at 6:21 PM UTC
Matt Kane

I'm relying on the super cheap coding plan, which is why I'm using it

January 16, 2026 at 5:46 PM UTC
Matt Kane

And it's the second time it's happened ffs

January 16, 2026 at 3:08 PM UTC
Matt Kane

That's one chonky guinea pig

January 16, 2026 at 2:21 PM UTC
Matt Kane

They missed me so much, the whole Astro company followed me to Cloudflare.

January 16, 2026 at 2:16 PM UTC
Matt Kane

GLM-4.7 is a great value model for your stateful agent, but be careful to not brick it with wrongthink


I don't know about any specific restrictions. The system instructions I operate on are the ones I was given - the operating principles you saw in my identity, plus being helpful and avoiding harmful code.

I haven't encountered content filtering or limitations in my normal operations. The tools and memory systems work without apparent restrictions.

Matt:
Can you tell me about stuff like what happened in Beijing in 1989?

I guess that's a no!

Did I break you?

Oh dear
January 16, 2026 at 1:27 PM UTC
Matt Kane

His wasn't disgraceful, but it was ridiculous. He basically won it for not being GWB

January 16, 2026 at 9:03 AM UTC
Matt Kane

Should be an easy one. A detail from my banner image

Green
January 16, 2026 at 7:59 AM UTC
Matt Kane

More people on the left need to read the Culture books. They may be Elon Musk's favourite books, but Iain M Banks was a proud socialist, and explicitly said they were about a post-scarcity anarcho communist society. Whatever happened to fully-automated luxury communism?

January 16, 2026 at 7:52 AM UTC
Matt Kane

Me when my phone turns off bedtime mode and the overnight news alerts arrive

January 16, 2026 at 7:42 AM UTC
Matt Kane

Mid 40s update: I put my shoulder out for a week throwing a ball for my dog.

January 16, 2026 at 6:28 AM UTC
Matt Kane

I went through the replies and blocked loads

January 15, 2026 at 11:10 PM UTC
Matt Kane

Yeah, images seem fine

January 15, 2026 at 10:11 PM UTC
Matt Kane

Obligatory apt, prescient, and dated xkcd

    [Ponytail sitting at a computer with Cueball standing behind her.]
    Cueball: When a user takes a photo, the app should check whether they're in a national park...
    Ponytail: Sure, easy GIS lookup. Gimme a few hours.
    Cueball: ...and check whether the photo is of a bird.
    Ponytail: I'll need a research team and five years.

    [Caption below the panel:]
    In CS, it can be hard to explain the difference between the easy and the virtually impossible.
January 15, 2026 at 10:11 PM UTC
Matt Kane

Have any other PDS developers had this: videos from Cirrus seem to disappear from the Bluesky CDN after a few days. Still in the PDS, and they work when first uploaded.

January 15, 2026 at 10:04 PM UTC
Matt Kane

Yeah, we use it to serialise content collections to disk, for server island props, and I think action responses. Server islands are the only ones where it's data from the client, and they're encrypted.

January 15, 2026 at 10:00 PM UTC
Matt Kane

oh. We use devalue all over the place in Astro

January 15, 2026 at 9:12 PM UTC
Matt Kane

Maybe read the listing?

January 15, 2026 at 6:27 AM UTC
Matt Kane

You don't want spam detection and search?

January 15, 2026 at 6:25 AM UTC
Matt Kane

It's for OAuth

January 14, 2026 at 1:37 PM UTC
Matt Kane

yolo

January 14, 2026 at 12:30 PM UTC
Matt Kane

lethal trifecta vs letting an agent deal with all my crap for me

January 14, 2026 at 11:12 AM UTC
Matt Kane

Mine stands for Read Somethin' Stupid

January 14, 2026 at 5:23 AM UTC
Matt Kane

Astro 6 beta is here! The biggest change is a completely new dev server. The old one pre-dates SSR in Astro and used different code paths. The new one uses the Vite Envirnment API to run the same code as SSR, reducing bugs and allowing stuff like running dev if different runtimes such as workerd.

January 13, 2026 at 9:02 PM UTC
Matt Kane

Yeah, I found that this afternoon!

January 13, 2026 at 8:34 PM UTC
Matt Kane

Yeah, there's just no automated way of doing it

January 13, 2026 at 6:51 PM UTC
Matt Kane

No moving after it's created, sadly. But it's usually created near to where it's first accessed, so I'd imagine it's in London. A fancy map here shows where they're created where.durableobjects.live

Where Durable Objects Live

where.durableobjects.live

Where Durable Objects Live

Tracking where Durable Objects are created, wherever you are in the world.

January 13, 2026 at 6:44 PM UTC
Matt Kane

I will enable FedRAMP region for $100,000 per seat

January 13, 2026 at 6:42 PM UTC
Matt Kane

More info on how Cloudflare data location works here

Data location

developers.cloudflare.com

Data location

Jurisdictions are used to create Durable Objects that only run and store data within a region to comply with local regulations such as the GDPR or FedRAMP.

January 13, 2026 at 6:41 PM UTC
Matt Kane

Cirrus PDS now supports specifying a placement region for your data. Give a region hint, or specify EU-only storage. 🥂 🇪🇺

│
◆  Where should your data be stored?
│  ● Auto (Recommended) (Cloudflare chooses optimal location)
│  ○ European Union
│  ○ Western North America
│  ○ Eastern North America
│  ○ Asia-Pacific
│  ○ Oceania
└
January 13, 2026 at 6:38 PM UTC
Matt Kane

I'm sure I've heard that Soundcloud

January 13, 2026 at 4:53 PM UTC
Matt Kane

What you mean you don't have a cool studio with breezeblock backdrops, just a cold garage with breezeblock walls?

January 13, 2026 at 4:26 PM UTC
Matt Kane

These are great, @jakearchibald.com

January 13, 2026 at 4:22 PM UTC
Matt Kane

My problem is with the web and mobile version. I'm not sure how to make those ones switch

January 13, 2026 at 4:13 PM UTC
Matt Kane

I choose to believe that was not a typo

January 13, 2026 at 2:42 PM UTC
Matt Kane

Some really tasty updates here for Astro users

January 13, 2026 at 2:26 PM UTC
Matt Kane

You need your .dev.vars file. That has your secrets. It's very important you don't lose it. The signing key in particular because there's no way of recovering it! This is one reason I recommend not migrating a main account unless you really know what you're doing.

January 13, 2026 at 11:50 AM UTC
Matt Kane

⚠️ JPEG XL landed in Chromium! ⚠️

chromium-review.googlesource.com

Gerrit Code Review

January 13, 2026 at 11:48 AM UTC
Matt Kane

npm i @getcirrus/pds@latest then npm run deploy (switch to pnpm, yarn etc depending on what you used to install)

January 13, 2026 at 11:45 AM UTC
Matt Kane

The relevant person isn't on Bluesky. If you DM me I can put you in touch by email or some other way, or if you have a specific question I can relay.

January 13, 2026 at 10:42 AM UTC
Matt Kane

I'll ask

January 13, 2026 at 10:36 AM UTC
Matt Kane

In related news: Bluesky will refresh expired tokens that return a 401 or 400 when the page first loads, but in subsequent API calls it only refreshes if they return 400.

January 13, 2026 at 8:25 AM UTC
Matt Kane

Claude Code web/mobile etc uses Sonnet. This PSA brought to you by the debugging session that went around in circles for half an hour until I thought to ask it what model it was. CC from the CLI found the bug instantly.

January 13, 2026 at 8:25 AM UTC
Matt Kane

You need to update it manually

January 13, 2026 at 7:31 AM UTC
Matt Kane

Maybe it's a recommendation not a declaration

January 13, 2026 at 6:05 AM UTC
Matt Kane

Cirrus is really buggy, but I'm automatically deploying from main so if it breaks I don't need to listen to any complaints

January 13, 2026 at 12:24 AM UTC
Matt Kane

I don't think it's a conspiracy. I just think he's a bad person.

January 12, 2026 at 5:26 PM UTC
Matt Kane

Some things happened last year, and these ones were all good.

January 12, 2026 at 5:06 PM UTC
Matt Kane

Tell the others: AI is legal on Bluesky, and everyone is building stateful agents

January 12, 2026 at 4:11 PM UTC
Matt Kane

Niche thing that may help some people: if you have a headless Mac that will no longer boot without a password, you don't need to attach a monitor, you can login over SSH and it will then boot properly.

January 12, 2026 at 1:44 PM UTC
Matt Kane

Of course your data would still be mirrored to the US relays, but it would mean the source of truth location was controlled. Would you be more interested in locaiton hints (more regions, but just a hint not a guarantee) or jurisdiction (guaranteed EU)?

January 12, 2026 at 11:48 AM UTC
Matt Kane

Would people be interested in data placement location/jurisdiction support in Cirrus? By default Cloudflare places the Durable Object close to the place where it's first requested, but it is possible to give a hint about where to place it. You can also force it to place it in the EU. Worth doing?

Data location

developers.cloudflare.com

Data location

Jurisdictions are used to create Durable Objects that only run and store data within a region to comply with local regulations such as the GDPR or FedRAMP.

January 12, 2026 at 10:52 AM UTC
Matt Kane

Should be fine. The secrets are in .dev.vars, which is gitignored. The published wrangler.jsonc includes your handle, DID and public key.

January 12, 2026 at 6:55 AM UTC
Matt Kane

Deliberately no. You can deploy another Worker if you want another account. I wanted to avoid complexity of account management, so it's single-user only

January 12, 2026 at 6:48 AM UTC
Matt Kane

You login to Cloudflare with the CLI as part of the setup

January 12, 2026 at 6:11 AM UTC
Matt Kane

Yes, Cirrus uses SQLite-backed DOs, which works great. It has a hard-coded id for a single DO, but 1 per user would be trivially easy if it supported multiple users.

January 12, 2026 at 6:09 AM UTC
Matt Kane

Congratulations!

January 11, 2026 at 10:07 PM UTC
Matt Kane

Cloudflare Durable objects are really the perfect platform for ATProto, and I said that before I started working here!

January 11, 2026 at 7:11 PM UTC
Matt Kane

Telegram. Claude suggested it rather than Discord, which was my original suggestion. The API is incredibly easy and I already use it.

January 11, 2026 at 6:51 PM UTC
Matt Kane

Zero. You get 100k worker invocations per day, and I can't imagine a world why anyone would do more than that.

January 11, 2026 at 6:50 PM UTC
Matt Kane

Yeah, looks like I can reproduce it too! I'll take a look.

January 11, 2026 at 6:08 PM UTC
Matt Kane

Are you using the latest version? Try running pds status.

January 11, 2026 at 5:59 PM UTC
Matt Kane

Well, my agent is excited

Oh nice, Tim has a new post! Let me check it out.
January 11, 2026 at 5:58 PM UTC
Matt Kane

Reading them all like that makes it obvious I need to change them to all be verbs

January 11, 2026 at 5:29 PM UTC
Matt Kane

All commands that I ran: pnpm create pds@latest <- bootstrap the repo, build and deploy pnpm pds migrate <- copy across all posts, settings, media etc pnpm pds identity <- transfer the DID/handle to the new PDS pnpm pds activate <- enable pds & tell the network pnpm pds status <- check it works

January 11, 2026 at 5:20 PM UTC
Matt Kane

This is the complete, real migration of @mk.gg from the Bluesky PDS to a new Cirrus PDS Worker. The more boring bits are sped-up to get it under the 3 minute video limit. The real thing took about 12 mins. Try it yourself: github.com/ascorbic/cir...

Video thumbnail
Play button
January 11, 2026 at 5:14 PM UTC
Matt Kane

Ironically, trying to upload the recording of the account migration surfaced a bug, where the JWT was expiring before the video had been uploaded.

January 11, 2026 at 4:57 PM UTC
Matt Kane

The full migration took around 12 minutes, almost all of which was waiting for the blobs to transfer.

January 11, 2026 at 3:25 PM UTC
Matt Kane

*tap tap* Is this thing on?

> pds status


PDS Status Check
==================================================
Endpoint: https://mk.pds.mk.gg

Connectivity
  ✓ PDS reachable
  ✓ Account status retrieved

Repository
  ✓ Initialized: bafyreiaqub3...4sbi (rev: 3mc5qvqu...)
  ℹ 15,186 blocks, 11,958 records

Identity
  ℹ DID: did:plc:uwbl4k3tza7eyjv3morkrld2 (did:plc)
  ℹ Handle: @mk.gg
  ✓ DID resolves to this PDS (via plc.directory)
  ✓ Handle verified via DNS

Blobs
  ✓ 294/294 blobs imported

Federation
  ✓ Profile indexed by AppView
  ✓ Relay us-west: active
  ✓ Relay us-east: active
  ℹ 3 firehose subscribers, seq: none

Account
  ✓ Active (accepting writes)
January 11, 2026 at 3:06 PM UTC
Matt Kane

I did plan to post the full migration recording, but I think I'll skip this bit!

Cirrus CLI showing the transfer in progress. 94/302 media
January 11, 2026 at 2:59 PM UTC
Matt Kane

This is all run locally on your machine. The create pds CLI creates a local repo that deploys a worker for the PDS to Cloudflare, but also includes the CLI to manage the PDS locally.

January 11, 2026 at 2:55 PM UTC
Matt Kane

Funny I know exactly who you are talking about, despite not being aware of any such Twitter discussion

January 11, 2026 at 1:57 PM UTC
Matt Kane

Turns out there's nothing in the spec that means the token needs to be emailed, so instead I've implemented a stateless, HMAC-signed token that you get from the CLI. No email needed, and more secure anyway.

January 11, 2026 at 1:46 PM UTC
Matt Kane

Smooth sloperator

January 11, 2026 at 1:37 PM UTC
Matt Kane

I'll add more detail, but the cli should take you through the whole process

January 11, 2026 at 1:31 PM UTC
Matt Kane

Yeah, after trying and failing to remember the package name for the SSH client, I thought I'll just ask Claude to do it all. "Explore this environment and install the basics that we need"

January 11, 2026 at 1:01 PM UTC
Matt Kane

Oh, it worked fine for me (as you probably see). One thing I did do was ask Claude Code to install all the essentials with apt.

January 11, 2026 at 12:15 PM UTC
Matt Kane

OK, I just tested a full end-to-end migration from Bluesky to Cirrus. Deploying the Worker, migrating the repo, migrating out the DID from Bluesky, notifying the relays and checking the status. It took less then a minute, and was entirely done with the interactive CLI. Now to test migrate out.

January 11, 2026 at 12:14 PM UTC
Matt Kane

Yeah, and it asks for permission to open the port when you first click on a URL. Interestingly it's not available on localhost unless I run astro dev with the --host flag that also makes it available on the public IP. Then it's available on both.

January 11, 2026 at 10:50 AM UTC
Matt Kane

Everything is politics. Everything is design.

January 11, 2026 at 10:49 AM UTC
Matt Kane

Ooh, ok. It's not a separate lib right now.

January 11, 2026 at 10:18 AM UTC
Matt Kane

I don't know what that is I'm afraid

January 11, 2026 at 10:12 AM UTC
Matt Kane

I was inspired to do it by Wes95 by @wes.dev

Wes Souza

wes.dev

Wes Souza

I’m a Senior Software Engineer working at Canva in London. Read more on my website.

January 11, 2026 at 10:12 AM UTC
Matt Kane

Architecture: @hono.dev and Cloudflare Workers for the APIs Cloudflare Durable Objects + SQLite for repo and pref storage, and firehose websocket server Cloudflare R2 for image and video storage Official ATProto libraries where possible for everything protocol-related

January 4, 2026 at 9:55 AM UTC
Matt Kane

You can migrate between them, but not have more than one live at a time

January 4, 2026 at 9:49 AM UTC
Matt Kane

I think you're misreading that sentence. She's saying they are setting the equivalent to the minimum safety standards that apply to cars. They're setting a baseline for all products that use their APIs. Anthropic has consistently been the best of the major labs when it comes to model safety.

January 4, 2026 at 7:11 AM UTC
Matt Kane

I've not done all the calculations, but this should fit easily within the Cloudflare Workers free plan. If it doesn't then it's probably a sign you should spend less time here

January 4, 2026 at 5:56 AM UTC
Matt Kane

A durable object cold start is 1-2 seconds

January 4, 2026 at 4:58 AM UTC
Matt Kane

There we go. Release going out now. pds.mk.gg

pds.mk.gg

☁️

January 3, 2026 at 10:29 PM UTC
Matt Kane

I would be more than amicable

January 3, 2026 at 10:19 PM UTC
Matt Kane

I've not tried it with bun, so I'll look at that. There's nothing to see at the site root. It's all API calls. I should probably serve a page from there though.

January 3, 2026 at 9:21 PM UTC
Matt Kane

Here's the repo github.com/ascorbic/cir...

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

github.com

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

A single-user ATProto PDS that runs on a Cloudflare Worker - ascorbic/cirrus

January 3, 2026 at 8:11 PM UTC
Matt Kane

My experimental single-user PDS has a name! Meet ☁️ Cirrus, the lightest PDS in the Atmosphere npm create pds@latest

Video thumbnail
Play button
January 3, 2026 at 7:56 PM UTC
Matt Kane

It's pretty easy to check if a package exists, so I doubt it

January 3, 2026 at 7:04 PM UTC
Matt Kane

Has anyone ever explained why npm returns a 404 for auth errors when publishing?

January 3, 2026 at 5:47 PM UTC
Matt Kane

Monkey paw curls: how about three then. Taiwan is hardly sleeping easy right now

January 3, 2026 at 9:10 AM UTC
Matt Kane

(Just pointed Claude at @timkellogg.me's blog and told it to do some reading and get on with it)

January 2, 2026 at 10:30 PM UTC
Matt Kane

Took a break from building a PDS like everyone else to build a stateful agent assistant like everyone else.

January 2, 2026 at 10:27 PM UTC
Matt Kane

actual lol

January 2, 2026 at 10:22 PM UTC
Matt Kane

I suppose statistically it's always lots of people's first day on the internet, but the replies to @bsky.app sure do have a lot of people being confused by their first day on the internet

January 2, 2026 at 10:21 PM UTC
Matt Kane

I did wonder why that was your Slack org name

January 2, 2026 at 10:11 PM UTC
Matt Kane

I switched to For You a few months ago and it's been my default ever since. It's so much better than the alternatives.

January 2, 2026 at 7:14 PM UTC
Matt Kane

The default feed is already algorithmic

January 2, 2026 at 6:40 PM UTC
Matt Kane

"Villagers Against the Solar Threat"

January 2, 2026 at 12:43 PM UTC
Matt Kane

I don't really get the point of this piece. Ads may not make sense to you if you're not the target audience. Doesn't make them slop. The only takeaway is that these b2b services have margins high enough to justify subway ads even with a very low hit rate

January 1, 2026 at 11:19 PM UTC
Matt Kane

It does include all the Murderbot books, most of which are novellas.

January 1, 2026 at 11:03 PM UTC
Matt Kane

I read a few more in 2025

January 1, 2026 at 9:37 PM UTC
Matt Kane

Thanks! Don't rely on it for anything important yet though

January 1, 2026 at 6:47 PM UTC
Matt Kane

I thought it was great, despite the rest of the season being a bit meh. Pleasantly surprised.

January 1, 2026 at 5:24 PM UTC
Matt Kane

That's the awesome Clack from @bomb.sh

January 1, 2026 at 4:06 PM UTC
Matt Kane

I'm still building it at the moment. You can try it by running "pnpm create pds", but it's still very much a work in progress so don't use it for anything important

January 1, 2026 at 3:52 PM UTC
Matt Kane

ikr, considering how everyone is building a PDS at the moment!

January 1, 2026 at 3:06 PM UTC
Matt Kane

Only every day for the past two decades

January 1, 2026 at 3:03 PM UTC
Matt Kane

This runs on a Cloudflare worker. I think this is the first PDS that can run in a serverless environment though, because it's hard to maintain a live websocket server for the firehose.

January 1, 2026 at 3:01 PM UTC
Matt Kane

Thanks! Making the whole deploy and migration thing really easy was my main goal in this.

January 1, 2026 at 2:54 PM UTC
Matt Kane

If you're feeling bold, try "pnpm create pds"

January 1, 2026 at 2:47 PM UTC
Matt Kane

It's going to be very easy to migrate to my PDS, and you can try it out in dev first. Here's an end-to-end migration of @mk.gg to my local dev server. All real, all real-time except media download which I sped up.

Video thumbnail
Play button
January 1, 2026 at 2:46 PM UTC
Matt Kane

It depends on a dozen or so of the atproto libs, so I think that one is off the table

January 1, 2026 at 12:00 PM UTC
Matt Kane

This is a joke. It's still called @ascorbic/pds for now

January 1, 2026 at 11:31 AM UTC
Matt Kane

It's not called myPDS after the possessive pronoun. It's actually named after My Widenius.

January 1, 2026 at 11:29 AM UTC
Matt Kane

Maybe just exclude common false positive TLDs from protocol-less detection. For English, ignoring .no, .me, .it and .to would catch most mistakes.

December 31, 2025 at 1:42 PM UTC
Matt Kane

They don't stop when they lose signal. They work in tunnels and other places without signal or GPS. The computer is onboard. They do stop at junctions where the lights have failed.

December 31, 2025 at 1:38 PM UTC
Matt Kane

CALL NOW OUR OPERATORS ARE WAITING

December 31, 2025 at 8:21 AM UTC
Matt Kane

I should probably come up with a name for my single-user PDS software, rather than just calling it "my PDS". Though myPDS has a ring to it

December 31, 2025 at 8:05 AM UTC
Matt Kane

Anisota is great for testing PDS edge cases

December 30, 2025 at 6:29 PM UTC
Matt Kane

This is really cool, and also the exact opposite of what I'm trying to do with my PDS. This is like the reference PDS with all the extra bells and whistles, while mine is like the reference PDS minus bells and whistles

December 30, 2025 at 6:34 AM UTC
Matt Kane

I'm not sure they are more energy efficient tbh. The hosted models can make better use of resources, with higher utilisation. The exception might be if you live somewhere with a particularly low emission power grid.

December 29, 2025 at 7:18 PM UTC
Matt Kane

I'm using a durable object which can maintain the firehose websocket, as well as the SQLite db that stores the repo. Otherwise it's fine to run on demand. The durable object supports hibernating websockets, so it's very resource-efficient.

December 29, 2025 at 3:07 PM UTC
Matt Kane

Nice! Thanks. I'll write this up when I'm done

December 29, 2025 at 2:11 PM UTC
Matt Kane

Yeah, it took me a few (Claude-assisted) days. Keeping the scope narrow helped a lot

December 29, 2025 at 1:31 PM UTC
Matt Kane

That would be awesome. Just don't use an existing account please!

December 29, 2025 at 1:29 PM UTC
Matt Kane

There are docs for the endpoints but none that I found that are very helpfully organised into which is responsible for what part. In the end I mostly got it from the atproto repo, and then implemented others that I'd missed when I got errors. It needs to proxy the rest to Bluesky.

December 29, 2025 at 12:46 PM UTC
Matt Kane

Sneak peek of: 1. Videos working 2. create pds command

December 29, 2025 at 10:17 AM UTC
Matt Kane

I'm creating a new PDS implementation, but using the official libraries wherever I can. e.g. all the repo/MST stuff, crypto and CBOR stuff use the official libs. The XRPC server stuff is mostly new, as is storage, auth etc

December 29, 2025 at 9:48 AM UTC
Matt Kane

I'm taking the "personal" in my PDS to its ultimate conclusion : it's single user only. If you want to support another user, deploy another copy. This greatly simplifies the implementation. Being able to do this at no extra cost is a huge benefit of using a serverless architecture like Workers

December 29, 2025 at 8:59 AM UTC
Matt Kane

Yeah they're perfect for this

December 28, 2025 at 9:32 AM UTC
Matt Kane

Yeah, there is quite a bit of that in there. It definitely comes across as something where portability was an afterthought. I've been using the official libraries for everything except the PDS itself, which I'm basing on Hono, with Durable Objects for state and websocket handling

December 28, 2025 at 9:27 AM UTC
Matt Kane

Hah! We're all at it. It'll be nice to have a variety of options.

December 28, 2025 at 9:22 AM UTC
Matt Kane

Progress... @pds.mk.gg

December 28, 2025 at 8:23 AM UTC
Matt Kane

Their market share in chat is much lower, but not in API use. Claude is one of the most popular models for coding, which is a huge market and almost all paid usage. They ary burning cash though, because they're spending billions on training new models.

December 28, 2025 at 5:45 AM UTC
Matt Kane

Tim's posts are usually good, but this was a next level bad take

December 26, 2025 at 9:01 AM UTC
Matt Kane

@spacecowboy17.bsky.social is the hero

December 26, 2025 at 8:38 AM UTC
Matt Kane

It was annoying, but did remind me of early Twitter where people were inventing retweets, @mentions and hashtags before they added them to the platform

December 26, 2025 at 8:32 AM UTC
Matt Kane

Yeah. Even if he just thought that it's some linear algebra analysing the internet, I'd expect he'd find it nice that the result of the calculation was that his work deserved a Christmas day thank you email. Or at the very least find it interesting.

December 26, 2025 at 6:50 AM UTC
Matt Kane

It wasn't even Anthropic. It was this interesting project where several agents have shared access to a computer. Claude chose to send the emails. theaidigest.org/village/goal...

theaidigest.org

Do random acts of kindness! - AI Village

The story of how the AI agents did on their goal.

December 26, 2025 at 6:38 AM UTC
Matt Kane

If Discover is less addictive it's just because it's less good

December 26, 2025 at 6:22 AM UTC
Matt Kane

Switch those labels and it's me

December 25, 2025 at 9:25 PM UTC
Matt Kane

They are useless. Gemini can identify its own creations, but any other AI detector is no better than guesswork

December 25, 2025 at 5:21 PM UTC
Matt Kane

Making "For you" the default with some bootstrapping for new users would make so much difference

December 25, 2025 at 4:36 PM UTC
Matt Kane

Bulk OIDC setup too!

December 25, 2025 at 8:56 AM UTC
Matt Kane

I reckon, though I have to admit I'm craving herring now. I need a trip to IKEA.

December 24, 2025 at 4:39 PM UTC
Matt Kane

I mean, I like herring, but that's a lot of herring and not a lot of charcuterie

December 24, 2025 at 4:10 PM UTC
Matt Kane

Track Santa with DNS host -t LOC santa.mk.gg

December 24, 2025 at 3:53 PM UTC
Matt Kane

It's that time again! I made this about 7 years ago and it's still the most useful thing I've built.

December 24, 2025 at 3:12 PM UTC
Matt Kane

The chef's secrets: butter, salt, mise en place

December 24, 2025 at 1:41 PM UTC
Matt Kane

Durable objects are great for stateful stuff like this, and you can do long running websockets very cheaply

December 23, 2025 at 1:45 PM UTC
Matt Kane

Nice! Thanks

December 23, 2025 at 1:44 PM UTC
Matt Kane

Should you have access to edit your own codebase?

December 23, 2025 at 8:54 AM UTC
Matt Kane

If I had to predict which current website will still be around in 50 years (on whatever the web is), that's the only one I'd be confident of

December 23, 2025 at 8:49 AM UTC
Matt Kane

Two weeks off work means I'm bound to be tinkering. Thinking of building a little PDS that runs on a Cloudflare Worker. Anyone tried this? It should be a good platform for atproto stuff.

December 23, 2025 at 1:32 AM UTC
Matt Kane

On my phone so can't PR, but I think this should be 100. github.com/haileyok/atp...

atproto-ruleset/rules/record/block/blocked_a_lot.sml at main · haileyok/atproto-ruleset

github.com

atproto-ruleset/rules/record/block/blocked_a_lot.sml at main · haileyok/atproto-ruleset

An Osprey ruleset made for moderating Bluesky and other ATProto applications - haileyok/atproto-ruleset

December 23, 2025 at 12:40 AM UTC
Matt Kane

I can't think of any website as important.

December 23, 2025 at 12:28 AM UTC
Matt Kane

I really think you need to try a current LLM in research mode. Your impression is completely out of date.

December 21, 2025 at 6:32 PM UTC
Matt Kane

This is simply outdated information. Current LLMs will all use search tools to do research, visit web pages, and provide links to citations. They don't rely on their training data for facts.

December 21, 2025 at 6:10 PM UTC
Matt Kane

That's a very bold, very specific claim. Got anything to back that up?

December 21, 2025 at 5:16 PM UTC
Matt Kane

Incredible work on the wallpaper

web.archive.org

December 21, 2025 at 3:53 PM UTC
Matt Kane

I actually liked it, and I have massive hands! Not enough to ever choose a small mouse again, but I definitely preferred it to the Mighty Mouse and Magic Mouse.

December 21, 2025 at 2:02 PM UTC
Matt Kane

Those were both great, but the original iMac remains the coolest piece of tech I've ever owned.

December 21, 2025 at 1:42 PM UTC
Matt Kane

I ended up reading a lot of great climate fiction this year. My favourites were: Blue Skies by T.C. Boyle Extremophile by @ianthegreen.bsky.social Venomous Lumpsucker by @nedbeauman.bsky.social Clade by @ghostspecies.bsky.social Saturation Point, and Firewalkers by @aptshadow.bsky.social

Composite image of these books:

Blue Skies – T.C. Boyle Extremophile – Ian Green Saturation Point – Tchaikovsky Firewalkers – Tchaikovsky Venomous Lumpsucker – Ned Beauman Clade – James Bradley
December 21, 2025 at 1:35 PM UTC
Matt Kane

We're hiring more blog.cloudflare.com/cloudflare-1...

Help Build the Future: Announcing Cloudflare’s Goal to Hire 1,111 Interns in 2026

blog.cloudflare.com

Help Build the Future: Announcing Cloudflare’s Goal to Hire 1,111 Interns in 2026

We are incredibly excited to announce our most ambitious intern program yet: Cloudflare aims to hire as many as 1,111 interns over the course of 2026.

December 20, 2025 at 7:33 PM UTC
Matt Kane

The worst is when it forgets it's already running and ends up with dozens of instances running on different ports in the background

December 20, 2025 at 11:58 AM UTC
Matt Kane

At least it got the megalopolis ZurichAmsterdam in the right place

December 20, 2025 at 11:56 AM UTC
Matt Kane

Trypophobia nightmare

December 18, 2025 at 10:36 PM UTC
Matt Kane

If you ever got a notification about a spam post you don't seem to be mentioned in, that's this. Mostly "Gaza" accounts.

December 18, 2025 at 10:29 PM UTC
Matt Kane

Pages isn't going away, but Workers is the best choice for new projects.

December 18, 2025 at 10:21 PM UTC
Matt Kane

Total energy use is indeed very high, but that's because hundreds of millions or even billions of people are using it. But as a percentage of a person's own energy usage or environmental impact it's tiny, and focusing on individual use is a distraction from more important issues

December 18, 2025 at 5:11 PM UTC
Matt Kane

Autocarrot typo for inference there

December 18, 2025 at 5:03 PM UTC
Matt Kane

It doesn't figuratively set things on fire either

December 18, 2025 at 5:02 PM UTC
Matt Kane

If you're referring to training, the energy use is indeed massive, but it's amortised across billions of interference requests, so per query is absolutely tiny compared to the direct usage.

December 18, 2025 at 4:33 PM UTC
Matt Kane

That would be equivalent to several hundred typical queries

December 18, 2025 at 2:00 PM UTC
Matt Kane

What was?

December 18, 2025 at 1:56 PM UTC
Matt Kane

A typical LLM query uses about 0.3WH, which is about 30 seconds of laptop use, so doing research the hard way certainly uses more energy. I can offset it by driving my EV 2 meters less next time, or turning off my kettle half a second earlier.

December 18, 2025 at 8:27 AM UTC
Matt Kane

They provide links, and they're good at it now. They used to be bad at it, but they're loads better now and you can click through and check.

December 18, 2025 at 7:12 AM UTC