My background is databases, SQL, ETL, all that kind of thing. Not coding. Well, maybe a hack (and a dirty one) at best - BBC Basic in the old days, VBA in Excel a long time ago, and more recently even trying to learn Go. All enough to just about get by, none to seriously trouble anyone for whom this is actually their job. And I was quite content with continuing my next decades as I’d spent my previous ones, thinking of fun software, occasionally finding the time to hack at something trivial, but nothing more.
And then agentic coding came along, and turned my world upside down :)
It was in an article by Cory Doctorow that I came across the idea of how AI enables you to 'scratch your own itch'. In short, instead of having to motivate someone else to create software that you need, or tailor their software to behave in a way that you want, Claude Code and other agentic coding tools give you this ability yourself.
I thought I’d share some examples of the sheer fun that I’ve been having with Claude (and recently, Codex). Don’t worry, I’m not going to bore you with claims of having rewritten Photoshop, solved problems that have eluded mathematicians for decades, or even created an alternative to Apache Kafka written in Brainfuck. Well, the latter one, just a little bit.
Is it production-ready? No! Is it vibe-coded to heck? Yes! Have I even looked at the source code once? Hell no! Does it fix the problem I had? YES!
These are a mixture of publicly available (usually hosted on GitHub pages or Cloudflare Workers) and private (running on my home server).
🗺️ When did I last run past this specific point? 🔗
The idea literally came from wondering this very question when I was out for a run. "I’ve not been this way for a while…I wonder when I last ran here". Strava is fine for collecting the data and showing you heatmaps of your running patterns (as service personnel unfortunately found out). But it can’t tell you when you ran past this point.
The app sucks in data from Strava, stores it in DuckDB (because, DuckDB), and gives you a nice interface to click around and find what runs passed through a point. I recently updated it to also plot routes based on a given distance and paths run before.
Speaking of running, a rather useful itch to scratch is a script I had Claude write that checks the weather and tells me how warm I need to wrap up for my run the next morning, along with the route I’ve planned out:
Getting Physical (part 1): Pico plus LCD display 🔗
Huge amount of fun with this one. I wanted a clear time display on my desk. Obviously buying a clock was a stupid idea. Much more fun was spending just a few quid on a Pico and display. Claude created the design for me to 3D print the case (including very cleverly a white-coloured bit of plastic where the Pico’s colour LED can show through for user feedback). Iterated over a bunch of silly 8 bit ideas (Breakout, Tetris, etc etc) and settled on a fun Tamagotchi type thing that updates for the weather, time of day, seasons etc. Also is my display for currently playing music, house cameras, and occupancy.
Getting Physical (part 2): Colour e-ink display with Raspberry Pi 🔗
-
An old raspberry pi (model B) that I had lying around
Claude coded the software to fetch images from Immich (locally hosted Google-photos equivalent) and show them on the eink display, changing every hour. It also designed the physical case to 3D print. Button presses configured to skip photos, send current one to Telegram to share with family members (awww do you remember when the kids did this), etc.
💸 I don’t wanna pay for this SaaS 🔗
Several apps scratched the itch of a more-expensive-than-it-should-be SaaS bill, and/or a SaaS that didn’t work how I wanted it to.
📝 Host my conference talks 🔗
This was my first outing with Claude. It wasn’t even Claude Code, but Claude living in a VSCode-based editor (maybe Cursor?). Anyway, it was clunky and tedious (relative to today) but JFC it took my idea (I don’t wanna pay for this £££/pa SaaS to host my conference talks that I don’t even do anymore) and reimplemented it for me.
I’ll prolly throw Fable 5.2 at it just to see what needs tidying up, but this was the first "oh. my. god." moment that lots of people had late 2025/early 2026 that this shit had just got very real, and this was a lot more than "just some fancy auto-complete". Perhaps it is, but it’s fancy autocomplete with a half-decent programmer in a trenchcoat if it is.
|
🧑🏻🍳 Store and present my recipes 🔗
A ££/a SaaS that really didn’t need to cost what it did, and didn’t work how I wanted it (the data never felt like mine, text selection on screen was blocked, and other irritations). I had Claude build this, using Markdown stored in Obsidian as the backend. It scrapes recipes (including from those hellish sites with a gazillion popups, grandma’s lore, etc etc), stores them, and presents them nicely. This was my first experiment using Claude API calls too, to check a recipe’s import if it’s not clear.
💬 Organise my social posts and trickle-feed them out to the socials 🔗
Technically this was not replacing a SaaS, but just avoiding paying for one by keeping the backlog of posts locally. It hooks up to Raindrop.io where I keep bookmarked sites, and pulls in any with a tag that I’ve specified. I can then format and amend the post, set an image etc, and then it trickle feeds it into the app that does the actual posting.
🏃🏻♂️ Render my trail runs into a cool tile for printing in 3D 🔗
Another 'avoiding paying' rather than replacing. I’d seen a site do something similar, but it wasn’t how I wanted and it wanted a ££ subscription.
Claude pretty much one-shotted this for me. It takes a GPX file and pulls down the topography of the local area and generates a 3MF for 3D printing.
I’d rather burn my tokens and create it exactly as I want, than pay some SaaS more than the tokens would cost for something that doesn’t quite work as I want it ¯\_(ツ)_/¯
🔗 Handle redirects from short domains 🔗
I stopped using Rebrandly a few years ago (probably when I stopped giving conference and meetup talks and needing to give out short URLs). For some reason, each month I still got emails saying I was running out of clicks on my free plan. I couldn’t see which links (because my plan didn’t include analytics) and I couldn’t tell if they were real clicks or bots. But the emails annoyed me.
So I gave Claude my Rebrandly API key, it sucked out all the shortlinks and their targets, and built something standalone on a Cloudflare Worker for me.
Links still work, nothing breaks, and I stop getting annoying emails :D
| I mean, it’s a short link. You can click this if you really wanna see… https://rmoff.dev/kafka101 |
Pimp my Kindle 🔗
I jailbroke my Kindle (very simple and non-scary to do), and then with KOReader installed and its SSH server, Claude could go to town setting it up as I wanted.
Built a little widget to send URLs to Raindrop.io, optionally with a tag. Handy when I’m reading my morning report (below) and see articles I wanna clip. (Repo: rmoff/koreader-raindrop)
Built another little tool to run on my server that checks my emails and Raindrop for specific labels and converts any it finds to a book format that it sends to the kindle. Kinda like Amazon’s "send to kindle" email address, but more flexible and less cumbersome. And works with Raindrop. (Repo: rmoff/imap-to-kindle)
Built a set of sleep-screen cards using quotations that I’d highlighted plus a set of public-domain picture cards, and syncs both folders to the Kindle.
Morning report / RSS digest 🔗
An experiment in using local LLMs. It fetches a set of RSS feeds and sends a morning report to my Kindle with each RSS article plus a summary of each generated with Granite running on a GPU that I managed to fit to my old server.
Where was this photo taken? 🔗
Waaaay before the days of iPhones, I took photos on just regular digital cameras and even what were then called "camera phones" (because you also got phones without cameras, wtf?!). Being as old as I am, this means I’ve got a ton of photos with no geo-location data. And being a nerd, that bothers me. So Claude built this app for me that groups photos together by time, and I tell it where they were taken. If I took photos on my phone around that time, it suggests that location for the photos.
I don’t know if it’s actually any use getting the geo-location data, but it’s sure fun af having an excuse to go through my old photos!
An alternative conference app for Current SF 26 🔗
I found the UX of the official app less than optimal, so had Claude build a new one.
|
Games 🔗
These were prompted by reading Simon Willison’s blog post about how good Claude had got at building games. They were mostly built from very sparse prompts on my phone, with a few iterations on detail. Codex works well for building sprites. I also experimented with having Claude use yt-dlp to fetch Youtube videos of the games that inspired me and learn from them in terms of both graphics and game play.
Caw Control 🔗
My first game, built completely bespoke for my daughter. Very silly, and very fun. She loved it.
|
Rotor Storm 🔗
Remember SWIV and Cannon Fodder? You might like this.
|
Bloggy fun 🔗
This is a separate itch scratch altogether, because my blog is a bit more than an "itch". It was running before Claude got its claws into me, and I did the leg-work of setting up Hugo (and previously Ghost, and previously Wordpress) myself, learning things the hard way. What Claude’s done is give me insane webdev powers to properly FAFO. If you’re reading this then perhaps you’re a regular reader and don’t object too much to what I’ve done to the site. Some of the really neat things include:
-
Complete redesign and new layout. Dark mode. Better search. 404 page. More performant.
-
GitHub-style activity heatmap for posts per year
-
Hook up to Posthog to (anonymously) track outbound clicks from my Interesting Links posts, and then use that data to build charts overall and per post of what people found most interesting
-
Add a "🔥 Top picks only" filter to Interesting Links
-
FUN: add Lemmings and an old-school hit counter (driven by actual Posthog view data) to each page footer
-
Automagically imported and cleaned up posts from my old WordPress blog and former employers