She hates when I bring my laptop on trips. I love building things. This was our compromise.
I had been wanting to experiment with building an iOS app using Claude Code. I had never built for iOS before, and the idea of exploring it through AI-assisted development felt like a new frontier for me. But bringing a laptop to Japan again would not go unnoticed, and not in a good way.
So I made a plan.
Before leaving Spain, I configured my Mac so it would never sleep. I set up a VPN so I could SSH into it securely from my phone. I installed Zellij to maintain persistent terminal sessions in case the connection dropped. I also prepared a deployment pipeline to TestFlight, so I could trigger builds remotely and test them about 15 minutes later from the other side of the world, asynchronously.
This was our second time visiting Japan, and we have always wanted to learn more of the language. So we decided to build something we would actually use: a lightweight phrase app with useful tourist sentences and built-in text to speech. Things like ordering in restaurants, asking how much something costs, or navigating train stations.
The funny part is how it evolved.
While I was driving between cities, my wife would sit in the passenger seat dictating changes and features into Terminus on my iPhone, connected via SSH to my Mac back home. We used voice input to modify prompts, refine UI text, and generate new features. It became a shared game.
Development happened in short bursts, in parking lots, at rest stops, during train rides. We would ship a build, test it in real restaurants or shops, notice friction, and tweak it again that same evening from a ryokan or small hotel room.
The feedback loop was almost absurdly tight. We would use it in the real world, find awkward phrasing, improve it, redeploy, and test again the next day.
We never opened Xcode locally. We never touched the Mac physically during the trip. Everything happened remotely from a phone across continents.
What started as a workaround to avoid bringing a laptop turned into one of the most fun and lightweight building experiences I have ever had. It did not feel like working on vacation. It felt like co-creating something useful for the trip itself.
By the end of the journey, the app was not just a prototype. It was stable, usable, and something we genuinely relied on.
More than the app itself, the experiment was the interesting part: remote vibecoding, persistent sessions, AI-assisted iteration, and building in real-world feedback loops instead of simulated ones.
It made me rethink what a development environment even means.
Happy to answer questions about the setup, tooling, workflow, or what broke along the way.
TomKwon•1h ago
lordokami•1h ago
That said, testing the phrases in real situations was invaluable. We could try them in restaurants, shops, or train stations, and even ask locals how something should be said more naturally. That real world loop shaped the app much more than instant UI feedback would have.
The app probably contains some translation imperfections, and we are fully aware of that. It was built by us and for us. The goal was not linguistic perfection but usefulness. And for our own trip, it genuinely worked and made things easier.