Staring into the void, I recently came to the conclusion that I should make myself a blog.
Realizing it wasn’t 2015 anymore, I briefly snapped back to reality — blogs are long dead — but soon fell back into the trance, weak-minded as I am.
The only people still writing blogs are those important enough to need more than social media to express their ideas. The unimportant have all fled — which means if I have a blog, I’ll automatically look important.
I can’t be bothered paying hosting fees. WordPress is a dinosaur, and I refuse to resurrect it.
Squarespace, Webflow, and every other glossy platform are too expensive for what’s essentially a status symbol, so they’re out too.
CMS APIs exist, but most of them come with subscriptions — which defeats the whole point.
My philosophy is simple: tie a bomb to a bird and call it a firework. If it works, it works. What’s under the hood is secondary.
Turns out Bluesky has a very lenient API — no auth layer for public data, and you can fetch posts with a simple GET request:
https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=${USER_ID}&limit=30&filter=posts_no_replies
So here’s the idea: Make a website that scrapes your Bluesky profile and call it a blog. Host it on S3 for pennies, and voilà — you’ve got yourself a perfectly functional blog.
By setting the USER_ID property in this repo to your Bluesky handle, the blog configures itself.
It fetches your profile and name from Bluesky and displays them in the website header.
It can retrieve up to 7 posts in a thread — treat the first post as the title and the rest as content, and you’ve got yourself something that looks surprisingly like a blog.
yes