An audience of one

A pile of things I built for myself.

Every so often I hit some small, specific annoyance, and instead of living with it I spend an afternoon vibe coding my way to a fix. The results are niche beyond belief, held together with optimism, and exactly what I wanted. They work for me.

They’re all on one page now at apps.dmcc.io. I’m not selling anything. I’ve put them up for the fun of it, on the off chance one of these itches is one you’ve got too.

Every one of them started as my own problem. I build the thing, live with it for a bit, and open it up once I trust it not to embarrass me. Mostly.

The motorbike ones

AudioLock is the one I actually use every day. Android decides where your audio goes and it decides wrong constantly. Media drifts back to the phone speaker mid-ride while my helmet headset sits there connected and silent. AudioLock overrules it. Pick a Bluetooth device, a Cardo or a pair of hearing aids, and it stays the output for media, calls and notifications until that device is genuinely gone. It watches where the audio is actually playing rather than where Android claims, and drags it back when it wanders off. No account, no store listing, a debug-signed APK you sideload. Deeply unglamorous. Fixes the exact thing that was driving me up the wall.

whoop-tasker is more of the same, smaller. A screen you have to look at is useless when you’re riding, in a meeting, or asleep, so this gives Tasker a new trick: buzz my WHOOP strap. Front door opens, calendar fires, washing machine finishes, and my wrist knows. The one rule I gave myself was that it must not cost me a single day of the stats WHOOP has been nagging me to keep for months. (Remind me why I paid to be nagged?) So it doesn’t fight the official app for the connection or re-pair anything — it just leans on the same link for the two seconds a buzz takes, then clears off. It physically can’t do anything except buzz. Not a byte of recovery data goes missing.

CityWall is completely pointless and I love it. It draws the streets and rivers around you and makes them your phone wallpaper, then quietly redraws it as you travel. Wake up somewhere new and so has your phone. It only ever knows your rough city, never the exact spot, because a wallpaper has no business tracking anyone. Does it need to exist? No. Do I like it? Enormously.

May is the oldest itch: where does my money actually go on these vehicles. A self-hosted dashboard for fuel, expenses, maintenance and reminders across every car and bike, with DVLA lookups for MOT and tax so I don’t have to remember either. It’s named after James May, purely so the Top Gear set is complete now that Clarkson and Hammond already exist. Somehow it’s the one strangers have taken to most. Didn’t expect that at all.

Reading

feedstand is my answer to feeds that decide what you see. An RSS reader that sets articles like a book instead of dumping them in a web view — proper typography, offline caching, full-text search over everything you’ve read, all of it staying on the phone. Paste any URL and it finds the feed, including the ones lurking behind a YouTube channel or a Mastodon profile. No server, so nothing to sign into. It’s the most finished-feeling of the lot, which tells you how long the feed thing has been bothering me.

The privacy ones

Two of these exist to make a point rather than fix a chore.

Bluehood was a weekend thing that got a bit out of hand. It passively watches the Bluetooth devices around you — phones, cars, headphones, delivery vans — and tracks the patterns. With enough data you can tell what time someone walks the dog purely from the metadata their gadgets leak. That was the whole point of building it. It’s firmly alpha, so treat anything it tells you as a rough draft. It’s also, bafflingly, the thing I’ve made that most people have actually looked at.

Loyalty Roulette is the same gripe, lighter. I’ve moaned before about privacy poverty — discounts quietly becoming a tax on your data — so this goes after the loyalty-card version. It pools shared card numbers so anyone can take the member price to the till: the savings without handing over your weekly shop, and no single number left tied to a person.

The two that don’t fit anywhere

mydronefeed is the odd one out because it’s genuinely quite polished, which wasn’t the plan. Point a DJI controller at it and you get a private, sub-second live view of every flight on the web, plus a link you can hand to anyone. Type it into a car screen and there’s your drone, full-screen, no sign-in. There’s a proper free tier for search and rescue teams, too, which is the bit I’m actually pleased with.

And GRID/OS, which isn’t solving anything at all. It’s a browser game — Uplink by way of Spooks (MI5: 9 to 5, for my American friends), where you run cyber ops for the Service from a classified terminal at Thames House. Real Cisco, Ubiquiti and MikroTik consoles you work by hand, a trace clock narrowing on you the whole time, and a campaign that ends by asking you to name the mole. No install, nothing to sign in to. I built it because I wanted to, and that’s the entire justification.

That’s the pile

Not all of them last. I built one called Casey, used it every morning for a while, then quietly stopped. Building this way is cheap and fast, which is the appeal, but it’s also how you end up with a pile of half-used tools and a nagging sense that the time and the energy weren’t free. Worth keeping in mind before the next one.

None of these are trying to be a product. They’re specific, slightly janky, and built for an audience of one who happens to be me. If any of them happen to scratch the same itch for you, brilliant, they’re all up there. If not, no harm done — I was going to build them anyway.