Mike Koss

Vibe Coding an Ad-Free Arcade on a Flight to New York

Pocket Arcade on four phones: the home screen and a Car Jam parking lot, with Lunar Lander and Breakout played in landscape
Try it Pocket Arcade

Last Thursday Deb and I flew to New York. Deb has some casual games on her tablet that she enjoys, but they have two problems. They only work online, which is no help on a plane unless the Wi-Fi is working. And they are full of ads.

So on the flight I opened Claude Code and started building her an alternative. The result is Pocket Arcade:

games.mckoss.com

The games have no ads and no accounts, the code is open source, and once you have opened the site you can install it and play with no connection at all.

The Games

There are nine so far:

  • Car Jam: a parking lot packed with cars, and only a few gates out. Swipe each car out in the right order (and wait for the grannies at the crosswalks).
  • Tap Maze: a board of interlocking arrows. Tap one and it slides off the board, but only if its path is clear.
  • Breakout: the 1976 arcade classic, in portrait or landscape.
  • Lunar Lander: fly over the mountains and land gently on the base before the fuel runs out, with the Earth hanging over the horizon.
  • Night Driver: the 1976 Atari racer, where all you see of the road at night is the posts along its edges. Later, the road forks under signs written as jokes and riddles, and one branch ends in a brick wall, a burning road or the Grand Canyon.
  • Water Lab: pour water between beakers of different shapes until you have exactly the amount the professor asks for.
  • Elevator Operator: run the lifts in an office building through a working day, from the morning rush to going home.
  • Morse Rain: letters drift down the screen; you hear one in Morse code and tap it. A way to learn the code by ear.
  • Jigsaw: a jigsaw puzzle made from one of your own photos.

Tap Maze, Water Lab, Night Driver, Elevator Operator and Morse Rain

The puzzle games never run out of levels. Each level is generated on the device from its level number, so level 24 is the same lot for everyone, and each one is a little harder than the last. A solver checks that every puzzle can be solved (and works out the fewest moves, for the star rating), and every Lunar Lander mission is test-flown by an autopilot when it is generated, so it is always possible to land.

No Ads, No Account, No Connection

Pocket Arcade is a progressive web app: a web site that can install itself like an app. On an iPhone or iPad, open the site in Safari, tap Share and then Add to Home Screen. On Android, Chrome offers an Install button. Either way you get an icon on your home screen, and the whole arcade is stored on the device. Turn off Wi-Fi, put the phone in airplane mode, and every game still works. Your progress is saved on the device too; there is nothing to sign in to.

When you are online, it quietly checks for a newer version and offers to install it. That matters, because the arcade has kept growing since the flight.

The source is on GitHub under the MIT license:

mckoss/casual-mobile-games

Vibe Coding It

I did not write the code; I directed it. I described the game I wanted, Claude wrote it, tested it in a browser and committed it, and GitHub Actions ran the tests and published the site. Then I tried it and asked for changes: make every parking lot need some shuffling, keep Breakout’s paddle out from under your thumb, charge two extra moves for driving at a granny.

The first commit went in on the morning of the flight, with Car Jam. By the end of that day there were six games. Four days later there are nine games and 99 commits, about 20,000 lines of JavaScript including the tests, and every commit was written by Claude.

There is one irony: I needed the airplane’s Wi-Fi to build an arcade whose whole point is that you don’t need Wi-Fi to play it.

Software Written for Its User

I think this is a small example of something much bigger.

Deb’s commercial games are not really designed for her. They are designed around a business model. The ads pay for the game, so the game is built to show as many ads as you will tolerate, and to stay online so it can serve them and keep track of you. A game that just let you play wouldn’t make anyone any money.

The same is true of a lot of commercial software. It is expensive, because a company has to recover what it cost to build. It is overly complex, because it has to serve every customer at once, so each of us pays for (and wades through) features we will never use. And it is locked down: a subscription you can’t stop paying, data you can’t take with you, and features that only work when the vendor’s servers do.

AI agents change the economics. When building a working app takes an afternoon of describing what you want, it becomes reasonable to build one for an audience of one. That app does exactly what its user wants, works the way they work, has no ads or subscription, keeps their data on their own device, and can be changed whenever they ask.

Not every kind of software will go this way. Anything that is valuable because everyone shares it, like a social network or a marketplace, still needs to be shared. But for the long tail of tools, games and utilities that people use on their own, I expect many will leave expensive, complicated, locked-down software behind for bespoke apps written at the direction of their own users, as AI agents become available to more people.

Deb’s arcade is one small example. It has exactly the games she wants, no ads, and it works with the Wi-Fi off.