Indie apps in the age of AI

· general · Time Out

When I released Time Out 4.0 recently, and cross-posted the release post to Reddit as usual, the first comment was:

Nice! Long list of features. Did you use AI?

I replied:

Yes, of course. There's no way I could have done all that so quickly otherwise. Codex is a useful tool to accelerate development... but it isn't as simple as a prompt; I have extensive instructions on coding style and functionality, and do multiple iterations to refine each enhancement. I am managing and designing each change, with just the grunt work of typing code delegated to Codex. AI is disruptive, and has negatively impacted me in some ways, but I'm also embracing it to enjoy the benefits it can bring to improve my apps.

I thought I'd expand on that a bit here on my blog, using Time Out as a case study for AI use in development.

I've been working on Time Out since 2003, off and on (while also working on my other apps and consulting projects). During those decades, I would average about two releases per year... with three years of no updates between versions 1.7.1 and 2.0, and two years between 2.9.7 and 3.0. Then pretty much monthly releases since then, including the massive 4.0.

Notice when I started using Codex? I spent two years working on version 3.0, then Codex came along, and I was able to finish it off much faster. I really embraced it in subsequent updates, and the pace of development has significantly increased, as has the number of features in each release.

But don't think I just did some prompt like "make Time Out fancier." I have extensive notes on features I want to add to the app, based on thousands of customer requests (and my own ideas). A frustration of being a one-person indie developer is there is only so much time in the day, so I had to carefully plan what features I include, and it can take years between someone requesting a feature that I like the sound of, and it getting implemented.

With AI tools like Codex or Claude, I and other indie developers can much more quickly turn a suggestion into a shipping feature. I still spend the same amount of time thinking about the design and experience, and writing up extensive notes on it... but when it comes time to implement, it takes mere hours instead of days. Even so, it is an iterative process: I share my design notes with Codex, and ask for clarifying questions, then discuss back and forth to fine-tune the design and make sure everything is understood. Codex then quickly implements the feature, and I test it, then we have more discussion, changes, refinements, until I'm satisfied that it matches my vision.

This is a great boon for indies; it's as if I've hired an experienced (but somewhat literal-minded) developer, or even team of developers, and promoted myself to a product manager. I am a supervisor, with the big picture and product focus, having meetings to delegate the actual code monkey work to agents that can do it much faster than I can, but still need monitoring and mentoring, refining the rules to improve future work.

Don't underestimate those rules. When I first started using Codex, I was still writing most of the code myself, and had extensive rules in the AGENTS file on code formatting and coding style. As time went on, I added more guidance around strategy, UI architecture, performance, testing, and much more. And later split that up into skills that can be shared between multiple projects, and other refinements.

All of that helps, but at the end of the day the apps are still designed and supported by me... with some help from my agents.

Some developers mourn the loss of the feeling of satisfaction after spending hours or days chasing a bug... which I can empathize with, but I also remember the frustration of the unsuccessful attempts to find a solution before that "aha" moment. I much prefer the ease of describing an issue and having it fixed moments later, and the satisfaction of designing a new feature and having it implemented quickly, and refined to perfection without taking forever.

Of course, there are downsides to AI. Some people have lost jobs, and I have been affected too; one of my consulting clients no longer needed my help when Claude came along. (If you have a project you'd like help with, check out the Dejal Consulting page and get in touch!)

But Codex has made me so much more productive, I have been able to do big updates to another consulting project, plus update my Dejal apps, and release some new ones that I've wanted to do for years. It even let me do crazy things like write my own blog engine, and a back-end Dejal Manager app that has a blog editor, manager of Time Out messages, themes, and scripts, and analytics viewers.

I am definitely in the optimistic camp about AI. When it comes down to it, it is a tool that makes developers much more effective. Back in ancient history (for computers) they were programmed by toggling switches, then punch cards, assembly language, and increasingly powerful languages like BASIC, C, C++, Objective-C, Swift, and SwiftUI. Each is a layer on top of lower-level technologies, and moving up the stack lets a developer do more in less time. AI is no different: it's another tool layer, and embracing it has perhaps a 10x productivity boost.

Hopefully without wiping out humanity in the process. That would be inconvenient.