PopsicleBoat
I asked AI to draft this for me. I've edited it. Any surviving AI smells are my oversight.
If you’ve looked at the front page of this site lately, you may have noticed a little card pointing at popsicleboat.com. I’ve been building PopsicleBoat and have never actually written about it here. Time to fix that.
What it is #
PopsicleBoat is a small social web project. The short version I keep coming back to: low-friction posting, real conversation, and keeping personal spaces on the internet playful.
Dock whatever boat you want here. But if a spot is taken, you'll have to find a different one.
Instead of one giant feed, PopsicleBoat is organized around spaces, each a shared place where people can post work, ask questions, share notes, and keep up with what others are making. A few things I care about in how those spaces behave:
- Spaces are open to browse, so you can get a feel for a place before joining in.
- Following a space keeps it close at hand and makes it easy to return to active discussions.
- Anyone can propose a new space, or just follow the ones that fit what they care about.
Around that core there are the things you’d hope for from a small social site: profiles, replies and likes, private messages, friend discovery, and invitations for bringing people onboard.
Why bother building a social network in this day and age #
The big platforms optimize for scale, and scale has a way of making everything feel the same. I wanted something closer to the small-forum internet I grew up with, where a space could have its own personality and posting something didn’t feel like a performance. I also wanted it to feel modern, so there’s (to my eye) a smooth design, with both light and dark modes, text and video chat, and a lot more.
How it’s built #
Under the hood it’s a DIY special.
- Elixir and Phoenix, with LiveView for the interactive surfaces (feeds, replies, likes, uploads) and plain controller-rendered pages for everything that doesn’t need to be clever.
- Postgres underneath.
- Fly.io for hosting, with deploys gated behind an embarrassingly large pile of predeploy checks and browser smoke tests.
- Internationalization from early on.