threddy's Avatar

threddy

@threddyrex.org

tech • satire • pnw • swe @ msft I’m building an atproto PDS: C# -> https://github.com/threddyrex/dnproto Rust -> https://github.com/threddyrex/rustproto (currently hosted on Rust 🦀)

372
Followers
427
Following
1,083
Posts
11.12.2024
Joined
Posts Following

Latest posts by threddy @threddyrex.org

no judgement here

06.03.2026 07:56 👍 0 🔁 0 💬 0 📌 0

definitely not me in the pantry having a midnight snack

06.03.2026 07:39 👍 1 🔁 0 💬 2 📌 0

do I splurge on two Tame Impala tickets in Seattle or

06.03.2026 04:18 👍 5 🔁 0 💬 0 📌 0

listening to Nirvana with 10yo which is pretty rad

06.03.2026 04:13 👍 4 🔁 0 💬 1 📌 0

just wait until we rewrite everything in it

06.03.2026 03:14 👍 1 🔁 0 💬 1 📌 0

less than a week using Rust and there’s already a 🦀 in my profile

06.03.2026 03:09 👍 13 🔁 0 💬 3 📌 0

burger and a beer

06.03.2026 03:06 👍 6 🔁 0 💬 2 📌 0

Jerry you’re already the GOAT

06.03.2026 02:38 👍 1 🔁 0 💬 0 📌 0

Along those lines, I'd like to see a PDS test suite. Where you could point it at a PDS implementation, and it would run tests and tell you what's working and what's not.

Also, some links to implementations at the top here: github.com/threddyrex/a...

06.03.2026 00:13 👍 0 🔁 0 💬 0 📌 0

opus began an answer with "I've seen enough." and I burst out laughing

05.03.2026 23:51 👍 2 🔁 0 💬 1 📌 0
screenshot of response headers for my did document, showing the header

screenshot of response headers for my did document, showing the header

Hi @doctorow.pluralistic.net 😊

You can fix the CORS issue in atproto tooling by adding a "Access-Control-Allow-Origin" header to your did document HTTP response, setting it to "*".

Here's what mine looks like in the browser debugging tools.

05.03.2026 23:27 👍 2 🔁 0 💬 0 📌 0

yep - just checked - it's CORS lol

05.03.2026 23:11 👍 3 🔁 0 💬 1 📌 0

Yeah I would consider Rust one abstraction level lower than C#, but still high enough to be a reasonable choice for a PDS. I think one of the main downsides is that most of the atproto ecosystem leans towards Typescript and Go.

05.03.2026 22:09 👍 0 🔁 0 💬 1 📌 0

I wrote most of the C# version by hand originally.

The Rust version is a recent 1:1 port, and I heavily leaned on Opus for that.

05.03.2026 21:32 👍 1 🔁 0 💬 1 📌 0

oooh thank you I will try that

05.03.2026 21:29 👍 0 🔁 0 💬 0 📌 0

I haven't tried those yet - I've been using Opus 4.5 (and lately 4.6) within VS Code

05.03.2026 21:19 👍 1 🔁 0 💬 1 📌 0

libraries like atcute help in this respect (tons of MST validation) but still feels like there could be more visible errors when hooking up to the network

05.03.2026 21:17 👍 0 🔁 0 💬 1 📌 0

by far the hardest part of implementing a PDS (for me) is the sync endpoints

first, it's difficult to code the stuff (MST, etc.)

second, things just kinda fail silently and you don't know why things don't show up (try to post -> appview ignores it -> no errors to investigate)

05.03.2026 21:09 👍 9 🔁 0 💬 2 📌 0

actually, this concept of "sync repo over to other instance" could come in handy for high availability...

05.03.2026 21:05 👍 0 🔁 0 💬 0 📌 0
screenshot of top command in Linux, showing dnproto and rustproto commands

screenshot of top command in Linux, showing dnproto and rustproto commands

Rust uses half the memory

05.03.2026 20:57 👍 0 🔁 0 💬 1 📌 0

new nickname for the Signal chat just dropped

05.03.2026 20:53 👍 2 🔁 0 💬 0 📌 0

but now I've got a whole new set of security holes you can point out

05.03.2026 20:52 👍 0 🔁 0 💬 0 📌 0

awesome! yeah I've spent time in pebble beach over the years. I like that area. Looking forward to getting back.

05.03.2026 20:52 👍 1 🔁 0 💬 1 📌 0

sorry no too busy posting from Rust right now

05.03.2026 20:50 👍 0 🔁 0 💬 1 📌 0

I also made a "sync_repo" command that lets me sync the repo data from one database to the other, so I can switch back and forth quickly between the two implementations

05.03.2026 20:49 👍 0 🔁 0 💬 1 📌 0

technically my account is active on both a C# PDS and a Rust PDS, and at the moment the did doc points to Rust, where this is posting from

05.03.2026 20:47 👍 3 🔁 0 💬 1 📌 0

shit it's working

05.03.2026 20:44 👍 4 🔁 0 💬 3 📌 0

oooohhhhhhhh

05.03.2026 20:44 👍 2 🔁 0 💬 1 📌 0

another try while hosted on Rust

05.03.2026 20:43 👍 7 🔁 0 💬 1 📌 0

technically it was "test from the Bluesky web app when my user is hosted on C# PDS" vs. "test from the Bluesky web app when my user is hosted on Rust PDS"

05.03.2026 20:17 👍 5 🔁 0 💬 2 📌 0