I name my side projects so I can let them go properly.
That sounds dramatic. It isn’t. It’s the most practical thing I’ve learned about working on personal software.
A folder called recipe-scraper-v2 is a YAML file. A folder called Jauselbrett, the Austrian snack board that serves your recipes, is a character. And characters do something that filenames cannot: they earn the right to be missed.
A small confession
I have a Linear board full of dead projects. Not abandoned-in-shame dead. Honourably dead. Each one named, each one with a small story about why it existed and why it stopped.
I used to feel embarrassed by that graveyard. Now I think it’s the point.
Side projects are the kind of work you do in the cracks. Sunday morning, an hour between dinner and bed, the train back from Berlin. You don’t have the runway to be precious. Most of what you start, you won’t finish. And the part that nobody warns you about: the unfinished ones still cost something. They sit in your head, half-built, asking quietly what happened.
A good name doesn’t fix that. It just gives the asking a face.
The living
Here is some of what’s named and alive on my machines this month:
- Blippström: the home automation umbrella. Mac Mini running Home Assistant, the whole house wired through it. The name is the sound a sensor makes when it triggers.
- Lichtspiel: a six-state house machine in Node-RED. Lichtspiel is the old German word for cinema, before Kino took over. The house has moods. The lights perform them.
- Hauswart: a small dashboard PWA on top of Home Assistant. Hauswart is what we’d call a janitor or building super, the patient person who knows where the fusebox is.
- Funkturm: a Swift menu bar app, bridges my Mac to MQTT. The Funkturm is Berlin’s old broadcast tower. Everything is a signal going somewhere.
- Piepmatz: the bird camera, Frigate NVR with object detection. Piepmatz is what you’d say to a small bird in German, the way an English speaker says little birdie.
- Stolperstein: an MCP server that captures the small painful lessons coding agents and I learn together, so we don’t relearn them next month. Stolperstein literally means stumbling stone. (In Berlin it also means something heavier. I am aware. The lesson-capture meaning is the one I’m working with here.)
- Litfaßsäule: a service homepage that auto-discovers what’s running in my self-hosted stack. A Litfaßsäule is one of those round advertising columns you still see on Berlin street corners.
- Besserwisser: my finance cockpit. Besserwisser is German for a know-it-all, the kind of person who corrects your pronunciation. I built a tool that does it to me about my money.
None of these would be alive in the same way if they were called home-assistant-config, node-red-flows, magic-mirror, mqtt-bridge, bird-cam, lesson-store, dashboard, finance-app.
I’d build them, sure. I wouldn’t care about them.
The graveyard
This morning I closed BjörnAgain.
BjörnAgain was a pipeline I started a few months ago: a Swedish bear meets Abba, video distribution as a single funnel. Record once on Supercut, the system would download it, ask Claude to find the best 30-second clip, post the long version to YouTube, push a markdown post to the blog, send the short cut to Instagram Stories. The whole machine, named after a bear.
I never shipped past the Docker image.
The honest reason: I stopped wanting the thing the pipeline was for. The hours I’d have spent finishing it, I’d rather spend writing here. So this morning, in a Linear cleanup session, I closed BjörnAgain and its five subtasks. Canceled, not done. The graveyard accepts both, but they mean different things.
Jauselbrett had a different ending. It was meant to scrape recipes my partner sends me on Instagram, parse them, serve them up like a snack board. I named it on a Saturday afternoon, sketched the architecture, opened the repo. Then sat with the name for a week and realised it wasn’t quite right. Jauselbrett described what the thing did. It didn’t sound like the thing.
It’s now called Børk.1 Same project, same scope, different character. Where Jauselbrett was a polite Austrian snack board, Børk is a Muppet in a chef’s hat. The code feels different to write under that name. Lighter. Sillier. More finishable.
The graveyard takes names too, not just projects.
What the names actually do
Three things, once I started paying attention.
First: a name forces clarity before the first commit. If I can’t find a name that fits, I don’t actually know what I’m building yet. Jauselbrett clicked the moment I felt the metaphor (a board, small portions, served casually). The architecture followed in an afternoon.
Second: a name makes the boring parts easier. Naming the auth module of Blippström is more fun than naming the auth module of ha-stack. The boring middle of every side project goes on for months. You need every small joy you can find.
Third, and this is the one I keep coming back to: a name makes the ending honest. When I close BjörnAgain, I’m not closing a folder. I’m letting a small character go. There’s a moment of yes, you served, thank you, that’s enough. It’s tiny. It costs nothing. But it leaves the rest of the work cleaner.
The pattern, if there is one
I notice I name in four languages: Swedish, German, Austrian, Dutch. Always something a German or Dutch speaker would smile at. Often the name predates the architecture. Always a small story I can tell in one sentence: what is this character and what does it do?
The names that work share something I don’t think I could specify on a form. Concrete. Slightly absurd. Earnest enough to take seriously, not precious enough to defend. They sit somewhere between an Austrian snack board and a piece of Mr. Robot decor.
That’s about all the rule I have.
I don’t think any of this makes more side projects ship. I think it makes the ones that don’t ship matter properly. Which is, maybe, the same thing.
Footnotes
-
Børk børk børk. The Swedish Chef finally won the naming round. ↩
MAKE YOUR CASE.