Well our year long sabatical in London is over. We've been home for just over six months now and we're all settled back in. We had a great trip full of amazing experiences; daily life, new schools, art and theatre, making new friends, and exploring Europe. We grew closer as a family. Grass was touched. The whole point of doing this was to get out of our comfortable bubble and a year in a big foreign city certainly did that.
On a personal level I learned a lot from a year away. Growing up I visited and lived in various countries, and we lived in London before kids, but it felt different somehow this time. I definitely enjoyed the year but I also realized the value of what we have here at home. All of the perks became crystal clear. Beautiful weather, low population density, easy access to nature, great quality food, clean streets, amazing public services, and our network of friends and family to mention a few.
Coming home I felt like Frodo returning to the shire - grateful for our adventure and also grateful to return.
I wrote a lot of code in 2024. Most week days I flanneured about in central London from coworking space to coworking space, drinking tea and writing code. I worked on open source and games and income generating micro-SaaS projects, and also a ton of client work - especially towards the end of the year when paid work got very busy.
With the help of an LLM I've written a script to pore over my GitHub repositories and social media posts to figure out what I spent my years worth of time on (I wrote this post myself though). I've documented what I hacked on, and at the end I'll talk about side project income, bootstrapping, and success and failure, so feel free to skip ahead if that interests you!
Sitefox ClojureScript web Framework
I started the year with a grant from Clojurists Together for which I'm tremendously grateful. I was able to dedicate some solid time to Sitefox over the course of three months, and I managed to reach all of the goals I had for the funding period (one of them shortly afterwards). You can read more about my progress on the Clojurists Together site. Over the year I made 98 git commits on the project all up.
- End-to-end testing with Playwright.
- Improved database interface.
- Security & dep updates.
- Comprehensive tutorials and documentation.
- Security enhancements (replaced csurf with csrf-csrf).
Despite the GitHub stars I get the feeling I am the only real user of Sitefox. I'm pretty sure that's the case because I don't get many bug reports. I think that comes from a combination of factors:
- Most Clojure people are building on the JVM not Node.js.
- Clojure people prefer to assemble their own solutions from small libraries, not monolithic opinionated frameworks.
So even amongst weird Clojure people I am weird for building with ClojureScript on Node. 😅 I think that's totally ok. I don't need Sitefox to be popular. Building it was worth it for the time it has saved me across multiple projects. I've built several sites on it, including income generating projects. It is now mature software that doesn't need much maintainance.
Dopeloop.ai
The project I spent the most time on was dopeloop.ai. I made 198 commits and I hacked on it most weeks.
- Progressed the online drum machine, Beat Maker.
- Built & integrated the itwriter.js library, adding Impulse Tracker (.it) module export.
- Complete dark mode site redesign.
- Heaps of data analytics work.
- Heaps of backend & API improvements.
- Melody Generator bug fixes.
The Beat Maker TODO list is getting shorter and shorter as I chip away at it now in 2025. I think I'll be able to formally release it in the next couple of months. The Dopeloop site continues to generate slow but steady income.
Asterogue
Asterogue is a minimal sci-fi Roguelike I made in 2020. At the time I released an Android and Window version of the game, but it's actually a web app under the hood. I used Electron and Cordova to package up a binary for those platforms.
In August last year I got to thinking. What if I just put the game online so people could play it directly in their browser? People seem to like that model and thousands of people play my other game Rogule every day.
I decided to try an experiment and release it online with a "try before you buy" shareware model. People can play the first few levels free, and buy the game if they want to continue. I spent a bunch of time merging new features from a contractor I had employed in 2022, fixing bugs, improving the UX, building a new ClojureScript based backend, and setting up the payments system. All up 102 commits went into the game in 2024:
- Auto-save functionality.
- Hunger indicator implementation.
- High scores system.
- Volume controls.
- Improved mobile support.
- Multiple bugs fixed.
- Payment and accounts system.
I got lucky and the release blew up on Hacker News. From a marketing perspective this is the best I could hope for.
My thesis with this was simple. The vast majority of games have a sales curve with a large spike at the start which tails off over time to zero. As an indie developer you have to keep making new hit games to make any sustainable money. I was hoping if I could replicate the steady traffic of Rogule paired with a try-before-you-buy model, I would instead see a constant stream of sales over time. Did it work?
Not really. Despite tens of thousands of people playing the game and positive comments on Hacker News, the sales numbers are nothing to brag about. Here's a typical comment:
This is a really neat game. I love how you're showing that you can build fun small games on the web.
There has been a steady ongoing stream of about one thousand people playing per day which is great. It's nice that my game is being played at all rather than languishing in app stores unloved. That ongoing stream has led to a handful of sales each month, but those sales would take decades to cover the cost of development.
It's not about covering costs though. I'm very happy with this outcome. Asterogue was about scratching an itch, executing on a simple vision, and trying some indie game dev experiments. I'm happy for it to stay up online and have people play it every day, and occasionally like it enough to buy it. That's perfectly satisfying.
Makesprite.com
Makesprite is a simple web app for generating 2d game sprites using DALL-E. You can generate sprite sheets, wrangle prompts, favourite sprites, and click on sprites to copy or save them with automatic background removal. It's a 100% client-side web app with no server component. This was a big butterfly-chasing side quest. A 108 git commit consuming shiny object gratification project that got lodged in my head and wouldn't let go until I had shipped it.
I have no idea if anybody is using this. I don't use it myself because I feel conflicted about AI generated game art and I'm not making 2d games at the moment anyway. I think if I built this again I would just do the image extraction part. Make it an even simpler tool and not integrate any AI APIs directly. People could use their existing image generators and then paste an image in for background removal and sprite isolation. Maybe I'll still build a tool like that.
Transcript Generator
Transcript Generator was a short-lived SaaS app I built and ran for about one year. The purpose was to convert YouTube videos into articles with an LLM using the video transcript. I made 88 commits on the project in 2024. I started coding in the last quarter of 2023 and it had acquired its first paying customers by February 2024.
This was a weird project for me because it seemed pretty clear it could generate income but I felt uncomfortable about the ethics the whole time. The stated purpose was to take YouTube videos and turn them into written content. It became clear that a solid use-case for paying customers was taking other people's videos and generating SEO content from them. My own use-case was more benign - turning my own videos into blog posts - but I didn't even end up using it for that because I like writing in my own voice.
The final nail in the coffin for the project was when somebody I respect on a developer Slack wrote and asked me:
I'm curious about how this service sits re: copyright and intellectual property -- I assume it can vacuum up anyone's YouTube video and turn it into AI-massaged content that can be served up by any subscriber as their own?
This particular framing pushed me past the point of discomfort with the project and I decided to shut it down. I don't regret discontinuing it, and just like with my other income generating SaaS I shut down (Tweet Feast) I learned a huge amount just by putting something online and acquiring paying customers.
Hosted Gitea
I kept this bubbling along with 17 commits, largely focused on bugfixing, upgrades, admin, and user portal improvements. I also implemented an IP whitelisting feature requested by a customer. Hosted Gitea continues to quietly earn income each month without too much maintainance or support. It basically runs itself.
Open Source Projects
Apart from Sitefox I also shipped a bunch of new open source projects and contributed to some other ones.
- itwriter.js (59 commits) is a JavaScript library for creating Impulse Tracker music modules.
- cljs-josh (31 commits) is a live-reloading server for Scittle ClojureScript, a variant of ClojureScript with no build step. I also contributed a couple of patches to Scittle itself.
- clojurescript-tiny-slides (28 commits) is a tiny slide presenter framework. You can write slides in Hiccup and deploy it as static HTML. Built on and with Scittle.
- scittle-claude-ai (10 commits) is an experiment in generating Claude Artifacts written in ClojureScript. Built with Scittle.
- I continued to contribute to Piku (18 commits) working on Node package manager support and fixes. Most of my sites are deployed with Piku. It's pretty stable at this point.
- indie.css (20 commits) is a WIP classless CSS stylesheet for bootstrapping projects. It's a modified version of concrete.css that I used to bootstrap Makesprite. I'm using it for more stuff these days.
- aish (7 commits) is an AI helper for the terminal written in pure shell, making it quite portable. I added logging, API config options, and made some UX enhancements. I use this frequently to get the command I need but can't remember exactly.
I looks like I used Scittle a lot in 2024, and I've continued that trend in 2025. It's very fast to get up and running since there's no build step, and it's a lot of fun.
YouTube videos
I recorded a few YouTube videos in 2024 on ClojureScript, AI, Minecraft, and Dopeloop development. In 2025 I decided to double-down on this and I've been recording one YouTube per week. That's been fun and is going well.
Weekly Beats
I took part in Weekly Beats in 2024, which means I wrote one song every week. While not strictly software development, I did write quite a bit of software in service of making music since my process has a lot of procedurally generated algorave elements to it. Check out the video to learn more about that.
Side Project Income
I didn't meet my goal of doubling last year's income from income generating side projects. They earned a total of $12,117 (AUD) which is just over $1k per month. That's 146% on last year instead of the 200% I was aiming for.
Looking at these graphs I can't help asking myself if I should give up on trying to build software that people pay for. I've been at this five years now and these projects are only generating $12k per year. Is this the best use of my time? Contract work and investments generate vastly more income for the same or less effort.
The truth is I don't think I can stop. If building profit-making software was a video game, it would be one of the most challenging and addictive games there is. The win condition is people paying and the market is absolutely merciless. You get a deeply truthful answer to the question "am I making something valuable?" There is simply no clearer signal in the world.
I am lucky to have reached a position in life where doing this is completely optional. Yet I find myself coming back to bootstrapping despite that. It is fun. Challenging, rewarding fun. Simple as that.
The graph is going in the right direction and I have a strategy for growing more this year. I want to see if it works. I can certainly see a future where the MRR is greater than the hourly inputs from me. That seems plausible, even if it takes five more years. If I keep these projects growing at the 149% I did this year, here's what it looks like by 2030:
Year | Income |
---|---|
2024 | $12,117 |
2025 | $17,691 |
2026 | $25,829 |
2027 | $37,710 |
2028 | $55,056 |
2029 | $80,382 |
2030 | $117,358 |
The goal of the game is to build an investment, not just get paid for hours worked. Passive income as they say. If I can even get it to $2k per month that will feel like a big acheivement for a handful of creative side projects, and that doesn't seem too far off. Let's go!
So that was everything I hacked on in 2024. Thank you for reading, and all the best for the remainder of 2025! May you have a delightfully productive five months.