{
"$type": "site.standard.document",
"canonicalUrl": "https://joe.dev/posts/thinking-out-loud",
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreid3mp6bittoxvloochlce555cmlggzhflzm55l5idummyqdmueaiu"
},
"mimeType": "image/png",
"size": 51098
},
"description": "On returning to writing, ditching the platforms, and what ATproto makes possible.",
"path": "/posts/thinking-out-loud",
"publishedAt": "2026-05-25T18:40:09.000Z",
"site": "at://did:plc:vkn2vmcnsmlffrpwalvgybw5/site.standard.publication/3mmfe3yxkqd2b",
"tags": [
"meta",
"ATproto",
"blogging"
],
"textContent": "I rejoined the working world about a month ago as CTO at Stacklok. That means I'm writing again: customer conversations, product decisions, technical strategy. Some of that writing wants to be longer and more considered than a social post. I needed a home for it.\n\nSo: this blog.\n\nWhy not just use an existing platform\n\nI've had a personal site for a long time. Over the years I've watched platforms change their terms, start charging writers, or simply disappear. Medium pivoted away from the model that made people trust it. Twitter has too many Nazis. LinkedIn is useful but is, in my opinion, a super needy, toxically positive address book.\n\nThe original web didn't work this way. You owned your domain. You ran (or paid for) a server. Your words lived there, under your control, for as long as you kept the lights on. No algorithm decided who could find them. No platform could flip a switch and change the deal.\n\nThat's what I want. My words, at a URL I own, without anyone in the middle.\n\nATproto and standard.site\n\nIn March I attended ATmosphere in Vancouver, a conference organized around ATproto, the open protocol that powers Bluesky. I was an early investor in Bluesky, and I backed it because I was excited about the protocol underneath, not just the app. What I didn't fully anticipate was the community that would grow up around ATproto independent of Bluesky itself. ATmosphere made that visible.\n\nThe community is unusually authentic. Developers, researchers, artists, people just interested in what the internet could be. Not trying to build the next ad platform. Trying to figure out what good social infrastructure actually looks like. The protocol is coming into its own in a way that felt more theoretical when I first bet on it.\n\nATproto lets you store structured records in a data server (your {{< abbr title=\"Personal Data Server\" >}}PDS{{< /abbr >}}) that you own and can move. That's not incidental. It's the design. standard.site is an open protocol built on ATproto for publishing websites and blog posts, with a good writeup of how the model works if you want to go deeper. Every post here is published as a record on my PDS; when you share a link on Bluesky, that record powers the enhanced preview card. Browse the raw ATproto records for this site at pdsls.dev.\n\nThat's what ATmosphere made concrete for me. This isn't speculative. It's running right now on this site.\n\nBuilding it\n\nThe actual implementation took about a working day. Hugo for static site generation, Cloudflare Pages for hosting, and Sequoia to handle the ATproto publishing step. The pipeline: write a post, push to GitHub, CI publishes the ATproto record, builds the site, deploys it.\n\nCurrent coding tools made it practical to add features that would otherwise get cut. The cover images on each post (the 1200x630 cards used for social previews and Bluesky thumbnails) are generated by a Node.js script using Satori and the same brand fonts as the site. Title and description go in, image comes out, with a sidecar file so they can be regenerated if the branding changes. Without good tooling that kind of thing stays on the \"someday\" list.\n\nI also have a long-dormant blog at eightypercent.net that I may eventually migrate over here. That's a project for another day. For now, there's enough to do.\n\nColophon\n\nThere's a colophon page that documents everything: fonts, colors, cover image spec, how the ATproto pipeline works. It's an old web tradition I'm glad to revive. The source is also on GitHub, dual-licensed: infrastructure under CC0, content under CC BY-NC-ND 4.0.",
"title": "Thinking out loud, with a URL I own"
}