My website is ATmospheric.
This website is now a renderer over my PDS - posts, notes, knitting and all. What atproto actually gives you, and whether you should bother.
hen I was 13/14/15, I made little websites. Mostly websites that nobody else cared about - although I did run a My Chemical Romance fansite which real people actually visited, so you know, maybe it was just me personally that wasn't super interesting.
Like a lot of people, I started off on Geocities because it was free. Eventually, I figured out how to write HTML and CSS myself. All my layouts were tables, and I thought a div was just a dividing line. I found this tool called Greymatter for storing content and tried to move up to WordPress. WordPress needed a database though, and that was a bit much for me back then.
Then I got older, this turned into my job, and social media took over. Some people kept their own websites, but loads moved to Tumblr, Medium, dev.to, and, urgh, LinkedIn. LiveJournal was before all that, but I never really got into it so I’ll skip it. It started to feel like if you wrote something online, it had to be good and popular and people had to care. Otherwise, why did you write it?
I've already written a little bit about how I'm getting started with atproto (My PDS migration worked. Sort of.), and now I'm going to write more about it because I can.
TLDR; This website is basically a renderer over my PDS. Every post, note, project (software, knitting, plants, whatever) is a record in my personal data server. This website just reads from it. Bluesky reads from it as well. Anything can read from it, really, which is sort’ve the point.
What even is atproto?
atproto basically gives you three things:
- Your content is portable signed records. Every post lives in a repository that you can export as a file and take anywhere. The export is a real, useful thing. Any ATmospheric app can read that export.
- Your identity is yours. Your identity is a permanent ID and can be your own domain (e.g. mine is bekapod.dev). The domain points at your ID, and the ID tells people where your data lives, and you can change where your data lives without needing a new ID. There's no external company involved there (ok, nearly. There's a domain registrar and a public identity directory that Bluesky currently runs, but all it can do is record changes you've signed yourself).
- You can move your data without telling anyone and nothing will break.
I jumped in with my real Bluesky account
My real account, with all of my follows and “all of” my posts (there were like 20 at most. The risk was manageable). It helped that I wasn’t really super-actively using my Bluesky account, so if it went wrong I’d create another one. But the migration worked, so I didn’t need to do that.
Migration is a properly specified thing. You create an account on a new server using your existing identity and then move your data over (your export, one file, plus any media files).
Mine lives at at.bekapod.dev now on Cirrus, a single-person PDS that runs on Cloudflare Workers. So far, it's cost me nothing.
The nice bit is my handle didn’t change, since it was always my own domain. The migration just swapped out what was behind it. All my follows, my handful of followers, replies, likes, all still there, just coming from my PDS now. No downtime. It just worked.
The more unsettling parts
This is all still quite new in the grand scheme of things. The happy path is well documented; there are some things that I could only find documented in source code (ahem, rotation keys).
Everything is very public. Your repo is readable by anyone who knows where it is, by design. You can delete a post, and it'll be gone from your repo, but it's federated, so there may still be a copy elsewhere. There are no drafts on a PDS and no private mode. I write my drafts locally and only create records when I've finished. If that bothers you, I think the whole concept will bother you.
Bluesky is still the most popular ATmospheric app. The protocol is general, but it's largely still driven by Bluesky (in my opinion). The long-form blogging standard I'm using is still relatively new, and a lot of atproto tooling assumes Bluesky's server.
What does my database look like?
So, when this site builds, it fetches everything from my PDS:
- Blog posts are
site.standard.documentrecords. This is a community standard for long-form writing, so it's readable by other atproto apps, not just my site. - Notes are literally just my Bluesky posts, filtered down to top-level and excluding announcements of blog posts that are already on here. So, I post once, and it shows up in both places. Delightful.
- Projects are records in a little custom type I made up:
dev.bekapod.project, because I couldn't find a standard for "things I make" and with the protocol, you can just make your own.
I don’t use a CMS. Publishing is just a little CLI I wrote for myself. It takes a post from my Obsidian vault, writes a record, and triggers a rebuild of the site. If whatever’s hosting my website vanished tomorrow, I’d just point a new site at the same data. If my PDS host vanished, that’d be a bit more awkward, but I’d import my export somewhere else and you probably wouldn’t notice.
I think past me, who decided WordPress was too complicated because it had a MySQL database, would be very impressed.
Should you do this?
I don’t know. A hosted PDS, or even just a regular Bluesky account with your own domain as your handle, probably gets you most of this. You wouldn’t have to keep your PDS running yourself.
Self-hosting is more about values than features, I think. Maybe I just did it because I’m a bit odd and found it interesting. You might not, and that’s fine.
If you do decide to do this, do your own due diligence, but at the very least, back up your export. And make sure you have access to your rotation keys. Your rotation keys are your recovery path.
If you’ve got a personal domain, the smallest thing you can do is point it at your Bluesky account. That’ll take about 10 minutes, and then you’re on your way.
If you're a little bit convinced, but need more convincing, have a read of:
As for the question earlier - why would I write something online if it's not popular or nobody cares? It's for me, and if somebody's interested, they'll find it.
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.