ManiTalk taught me something rather useful: I could come up with an app and, with AI's help, get it working. Yes, there had been bugs, endless copying and pasting, and several months of fiddling, but the result was on a phone, doing its job, with people actually using it.
For someone with a hundred ideas stored in his head, this is a dangerous discovery.
Previously, another “wouldn't it be nice to build…” could go into the same mental folder as the other ninety-nine. Now it came with a follow-up question: why, exactly, haven't I done this yet?
One head full of ideas is all very well, but two are better. The main supplier of simple ideas that become complicated jobs is my wife, A.
This time she wanted a reminder app. Something small. Ten lines of code, darling. Surely.
We've lived in Thailand for years: family, work, children at school, cars, motorbikes. Ordinary life, except every little piece of it comes with a document, and every document has a date when you need to go somewhere and obtain the next document.
Visas, passports, work permits, car and motorcycle licences, insurance, vehicle inspections, road tax — plus immigration procedures with their own little eccentricities. Ideally, you remember all of these at once, for several people.
Over the years, we'd learned how most of it worked. Much of that knowledge lived somewhere in the back of our heads. There was just one flaw in this storage system: occasionally it forgot to tell its owner to get moving, and every missed deadline cost money or a lot of running around.
Take the children's education visas. They expire at different times because we arranged them several months apart. To check a date, you find the passport, find the right stamp and work out what it says. Fine, you've looked. There seems to be time left.
Then you have to remember that the school needs to prepare a document package before you can apply for the extension. In our experience, that took anything from three days to two weeks, depending on how busy they were. So you also need to allow time for preparation. The date in the passport is one thing; the date when you need to start doing something is quite another.
And so far we've checked one document for one child.
People we knew mostly kept these dates in calendars. We had reminders too, but a large part of the information still lived in our heads. Set a notification ten days ahead. Or set twenty-five notifications so the phone tells you every day that you need to go somewhere soon. Thank you, I'm already anxious. What am I actually supposed to do?
When can you start the extension? Which papers do you need? Where do you get them? What has to be requested in advance? You still have to remember that sequence separately. You can write it all in the calendar event, of course, then repeat it for the next document and keep everything up to date. Eventually, maintaining the reminders becomes another job you need a reminder for.
A. had had enough of keeping it all in her head. Make an app that takes care of this, she said.
Fair enough. I knew how to build apps now, and she'd become “the wife of a tech guy”. My fault for showing her.
I'd got somewhat comfortable with Android, but everyone at home had an iPhone. Building a family app that nobody in the family could install seemed a fairly rubbish plan, so I downloaded Xcode and started getting acquainted with iOS development.
We'd been happily using Apple equipment for years: MacBook, watches, phones, the familiar ecosystem. Unfortunately, knowing an iPhone as a user didn't tell me much about making an app for it. I'd already been through this with Android, and apparently another round of entertainment awaited me.
There was one welcome development, though: by then I'd found Claude Code.
While working on ManiTalk, I'd started trying tools that could deal with code directly. Claude ran in the terminal, opening and reading files, making changes and running checks. After my endless journeys between the chat and Android Studio, watching this was lovely. A substantial part of my job as a meat proxy had finally disappeared.
I also gave it ManiTalk to review. It found bugs and proposed fixes; I checked what it had found and why it wanted to change it. Sometimes I agreed. Sometimes I didn't.
An interesting thing gradually became clear: an agent confidently telling you something is wrong doesn't, by itself, prove anything. Sometimes it simply doesn't know why you did it that way. I have an idea, an explanation and a history in my head; it has a piece of code and its own assumptions. It may start fixing something that's already behaving exactly as intended.
Moving to the terminal hadn't relieved me of the need to think. At least I no longer had to shuttle the files around myself.
That was the experience we brought to EasyStayTH.
From the start, I thought of it as a commercial product. Among the expats we knew, I kept seeing the same struggle with dates, documents and calendars. If we found it inconvenient, surely others would like an easier life too.
And that was when the contents of “just make a reminder app” started to reveal themselves.
We knew our family's usual procedures, but somebody else might have a different visa, with different conditions: a deposit to account for, paperwork to arrange in advance. To be useful, the app needed to understand the relationships and the order in which people should act. Take my word for it: Thai visa rules and bureaucracy can hold their own in any competition for complexity.
We started digging into all of it: which requirements belonged to which visa types, which dates depended on which events, what had to happen before an application. Knowledge that had previously been everyday family experience needed to be organised well enough to become application logic.
At the same time, we had to work out how to show it to a person. Naturally, I wanted something of my own that looked good and felt good to use. What's the fun of making your own app otherwise? You're going to be looking at it every day.
Now guess which part of the iOS design was hardest.
Transparent cards. Apple's fancy Liquid Glass, for heaven's sake.
Explaining to the agent that the cards should be transparent became an adventure of its own. We changed parameters one at a time, stared at every number, and spent roughly ten hours of actual time getting the Liquid Glass look working on iOS.
Ten hours. Cards. Transparent.
Later, on Android, it took one instruction: “Make the cards transparent.”
There you are, building a whole application full of logic, and suddenly you're fighting over the appearance of one little piece of it. And you keep fighting, because that's how you pictured it, and you're the one who'll have to use it.
While we were busy with all this, documents began appearing in the project.
Claude and I weren't inventing visa rules. There were official sources to consult, and I quickly tired of looking up the same information over and over.
I listed the information I needed and sent the agent to gather it from official websites. Initially, we put everything into one document, then split it by topic: visas, transport, work permits and so on. When developing a particular part of the app, we could open the relevant file and see what its logic should be based on.
I wasn't designing some grand documentation system. We simply made a home for information that was awkward to work without. The app needed rules, so we collected them.
Around the same time, I began writing down my own preferences: do this part this way, remember that condition, don't ask me the same question every time. In my head, these were my own “skills”: put them in a file, give it to the agent, carry on. I was loading agent skills too — there must have been five hundred sitting in that folder — but for all that, most of the application still existed only in my head.
The files held visa and document information. Why I wanted this interface, how I imagined the app behaving, what we'd discussed and rejected — every new agent in every new session got that from me. Explain it again, clarify it again, check whether I've been understood again.
Still, the app was coming together. We spent a long time developing, testing and fixing it, then brought EasyStayTH to Android as well. Eventually it went on sale, received some grateful feedback and even got its first paying subscribers.
That felt good too. ManiTalk had shown me I could make a working app; now people were paying for something we'd built. Our family's “I'm sick of remembering all this” turned out to be a shared problem.
The amount I had to explain to the agent kept growing along with the product. I no longer copied code from a chat into an editor, but I regularly narrated the contents of my head: what we're doing, why we're doing it this way, and what it should please, for the love of everything, leave alone.
Claude wrote the code. Increasingly, my job was making sure that code became the app A. and I actually wanted.
Which raises a question: if AI writes the code, what exactly am I doing?
Next time: “Who's the intelligence here?” What the human gets up to while the machine does its programming thing.