Gratitude to Johanna Larson
Johanna has basically gone to all the technical places before me carving out a path through the cognitive wilderness that’s helped me figure it all it for myself. So first, let me thank her. She’s a great engineer and a great communicator: much gratitude towards her for writing it all up and making it easier for people like me take a bit more time “to get there”.
Aim
In setting up this new website of mine, the aim was always to make myself a little more visible. I now maintain LinkedIn for professional visibility and this website for personal and professional visibility but there’s a missing part: the social side. I want a social space where I can share the random social stuff. The awkward “hard to categorise” stuff that bubbles up from living a life on the planet. The Treeworld stuff and Techworld stuff that’s too short for a blog post. I also want to be able to post a blog post and have it syndicate out into my social feed.
In short, the blog is the central thing and it feeds the social.
Choosing a provider
I spent the better part of a decade building against social API’s at SoPost to generate platform content programatically. I then watched those providers of the API’s gradually hobble and remove functionality and drive people towards the walled garden of their platforms. The API’s stopped working. Needless to say, I don’t want to rely on the big providers.
X is a nope because it became a closed system whilst it was still Twitter, Bluesky was a maybe because it’s “less closed” but ultimately I started down the path of ActivityPub via GotoSocial thinking that I’d probably end up running my own Mastodon instance.
GotoSocial hasn’t worked out. I’m grateful to the team who do it, but it feels clunky and the aesthetic is something I’m not into. Judge me if you like, but my inner designer just doesn’t want to use it. Call me shallow, but how an interface looks signals to me whether or not I want to interact with it. So GotoSocial became a nope.
But I keep going backwards and forwards on the Bluesky vs Mastodon thing. Bluesky is there, ready to go. But there’s this niggle in the back of my head - what if they close the platform… But then Mastodon requires a server (I want to control my instance) that I’d have to maintain, pay for and keep alive.
Thankfully, as I dug into matters that idea of “Bluesky being less closed” started to fall apart when I realised the underlying protocol on Bluesky is an open protocol called AT Protocol. At that point it became less about Bluesky vs Mastodon and more about ActivityPub vs AT Protocol. They’re both open protocols but with subtlyy different mechanics.
Yes, this table is slop.
| Mastodon (ActivityPub) | Bluesky (AT Protocol) | |
|---|---|---|
| Protocol | ActivityPub (W3C standard) | AT Protocol (Bluesky/open spec) |
| Your identity | Tied to a server (@[email protected]) |
Cryptographic DID, portable across servers |
| Data ownership | Lives on your instance | Signed repo, cryptographically yours |
| Portability | Move instances, but needs old server’s cooperation for follower redirect | True portability — swap PDSes, identity persists |
| Long-form publishing | No native standard. Note or Article, inconsistently supported |
standard.site lexicon — purpose-built, adopted by multiple platforms |
| Blog post indexing | None natively | docs.surf, atproto.at, pdsls.dev — automatic once you publish records |
| Self-hosting requirement | Yes, to own your identity as a domain | No — bsky.social PDS + domain handle verification is enough |
| Network size | ~10M+ accounts across thousands of instances | ~35M+ accounts |
| Ecosystem momentum | Mature, stable | Growing fast, lots of tooling being built right now |
| What you’d actually post | A toot/note linking to your blog post | The blog post metadata as a first-class record |
In the end I decided on the bluesky route because of the personal data server. The AT protocol is also closer to my aims.
Personal Data Server (PDS)
The LLM informs me a PDS is a like a git repository of my social data that is cryptographically signed. I can pick it up and move it with some caveats around blob storage.
It was the personal data server (PDS) that sold it because it solves the big concern about platform lock. If I ever decide I want to move, I can get So that’s what I’m going to do.
But before I do, there’s a one thing I need to get sorted - open graph images. I’m currently stuck with a default one I made when the site went live and whilst there’s a backlog item that stares at me every night, I’ve not actually started it.
Again, Johanna beat me to it. So once again, thanks for giving me technical direction / inspiration.