This one is almost embarrassingly small, and I'm fond of it precisely because of that. It exists because I'm learning to sing — badly, slowly, in the way where you're mostly learning to hear before you can hope to do — and somewhere in there I needed a metronome. Not a fancy one. A click, a tempo, a button. The most solved problem in music. I went to find a good one and could not, which is how a person who is bad at singing accidentally ends up building software instead of practicing.
Let me be honest about what this is before I dress it up: it's a metronome. People have made these out of wood and pendulums since before electricity, and I reinvented nothing. The only thing I brought to it was a stubbornness about how a small thing should feel — and that stubbornness is really the whole story, more than the app is.
The problem was that nothing felt good
Here's the thing I kept running into. There are a hundred metronome apps, and they sort cleanly into two piles.
- The ones that look like a synthesizer cockpit — twelve dials, a subdivision grid, a setlist feature, ads stacked along the bottom — for a job that needs one number and a start button.
- The minimal, pretty ones — and then you actually use one for ten minutes and the click drifts, or the beat stutters when a notification lands, or it just quietly dies in the background.
I wrote the brief to myself as bluntly as I felt it:
"No metronome app exists that looks good and minimal, and is also not buggy."— my notes building it
That sentence annoyed me enough to build the thing. Which, I'll grant, is a slightly deranged reason to build anything. But it's the same itch behind everything I make — I get bothered by the gap between how a small thing is and how good it could feel, and the cheapest way to stop being bothered is to close it myself. Super Zen, my other tiny thing, came out of the exact same itch: a forty-line fix for an annoyance no one else thought was worth fixing. The metronome is its cousin.
The whole design philosophy is "don't let it glitch"
The buggy pile bothered me more than the ugly pile, so that's where I spent my thinking. And I came to a conclusion that sounds like a cop-out but is actually the entire engineering decision:
"make the code dead simple so it cannot glitch."— my notes building it
A metronome's one job is steady. The moment it stutters it has failed at the only thing it exists to do — and worse, if you're practicing pitch against a drifting click, the tool is now teaching you the wrong thing, which is the opposite of what a practice tool is for. So the design goal wasn't "add features." It was "remove every place a bug could hide." Fewer moving parts isn't a minimalist aesthetic here, it's a reliability strategy: code that doesn't exist can't break, and a feature you didn't add can't stutter the beat. The look ends up minimal because the insides are minimal, not the other way around.
This is, I'll admit, the opposite of how I instinctively want to build — my natural mode is to keep adding modes and options and the clever subdivision thing. Stripping a project to the bone and defending that bone takes more discipline from me than piling features on ever would. So the metronome was practice for me too: practice at the taste of leaving things out.
The part I actually cared about: haptics
If the click is the point, the feel is the soul. The thing I quietly obsess over in everything I build is the texture under your thumb — the little physical confirmations that make a piece of software feel alive instead of like a webpage pretending to be an object. So the metronome has real haptics: every beat lands as a tap you can feel, not just hear.
It's a small thing and it changes everything. When you're doing breath work or trying to lock onto a tempo while your own voice fills your ears, a haptic pulse means you don't have to crank the volume or stare at the screen — the beat is just there, in your hand. I learned to care about this from the weight-tracker I built, where a little notch-feel under a slider let people sense the value without looking: the eye is busy, but the skin is free. A metronome turned out to be the purest version of that idea. The whole app is basically one haptic, done as well as I could do it.
It's free, and there's a reason that isn't charity
The metronome is completely free. No paywall, no upsell, no subscription that costs a dollar this month and creeps up next month — none of the pricing tricks I genuinely enjoy thinking about for other projects. It's free on purpose, and I'd rather be straight about why than pretend it's pure generosity.
It's a doorway. It quietly points back at kalden.me, where the things I'm actually trying to turn into a living live. The honest economics of small apps is that almost nobody discovers them on their own — you need a reason for someone to find you. A genuinely good, genuinely free little tool is one of the kindest versions of that reason: you get a metronome that doesn't suck, I get a person who now knows I exist. Both sides come out ahead, and nobody had to sit through an ad.
The honest size of it
I want to keep this in proportion, because the temptation with a personal site is to make every little thing sound like a feat, and this one really isn't. It's a metronome. The hard part wasn't technical — it was restraint, and I'm not sure I won that fight cleanly; there's a version of me that still wants to sneak a subdivision mode in there and ruin it.
But I keep it on the site because it's the most concentrated little sample of my taste I've got. Minimal because the insides are minimal. Bug-resistant because I made the code too simple to break. Nice in the hand because I cared more about the haptic than the feature list. And born straight out of something I'm still in the middle of learning, rather than something I've mastered — which is true of everything here. I'm not a singer. I'm a person learning to sing who needed a good click and couldn't find one. So I made the click, and went back to being bad at the actual thing.
Keep going Learning to sing · Super Zen