April 25, 2026
State of Kaviox
It's been two months since the last post. I've been working on Kaviox basically every day in that stretch, mostly on my phone, mostly through Claude Code, in the small windows where it's easy to open up an agent and write some code before bed. That's good. It's also why I need to write this. Real progress isn't made in those windows. It's made here, on the page, when I make myself sit down and actually think about what I'm doing.
The question I want to answer is what Kaviox is actually for, and why I'm still working on it.
I'll start with the honest version. Kaviox started as fake-it-till-you-make-it. I had real anxiety about AI taking my job, and the most obvious hedge was to own capital that AI would make more valuable. So I started looking for arbitrage. The first idea was AI dropshipping — too logistically gnarly, too much legal headache. The second was an AI blogger. I set up the Mac Mini, ran OpenClaw, and watched the bots produce garbage. I vibe-coded a harness to improve the harness. The output got marginally less garbage. Eventually I pivoted to games.
The pivot is where the project actually started. The initial thought with games was that maybe games would be easier than blogging, and that maybe having a real project would ground the agents into producing better content (spoiler: it just wasted tokens). But the lesson that fell out of it was that taste matters more than I'd realized. When I told the agents to go do something valuable, they produced slop. When I gave them specific instructions they could actually accomplish, they shipped. So I stopped wasting tokens on OpenClaw's autonomy theater and went directly to Claude Code and Codex.
Wild Lands and Ridge Run
Wild Lands had no taste because it had no vision. It morphed and accreted out of the original hallucinated prototype. I had vague thoughts about Factorio and Diablo, but vague thoughts don't survive contact with an agent. Polishing it was lipstick on a pig.
Ridge Run was the next step up. It had taste, but the taste was borrowed — it leans heavily on Hill Climb Racing and never escaped that orbit. I worked on it diligently for a few weeks, dragged friends and family into playtesting, polished the mobile experience, added vehicles. Then I announced it on r/aigamedev and got 1.4k views, 1 like, and 1 click through to the site. The 1 click was possibly me.
I want to come back to the announcement, but first I want to talk about the playtesting, because the two are connected in a way I didn't see at the time.
When I was in Argentina on a family dove-hunting trip, I spent most of my alone time building Kaviox. I showed everyone Wild Lands and they thought it was cool but didn't care enough to play it. The dirt bike game — Ridge Run, before it had its name — was different. They actually played it. Sometimes for five minutes, sometimes for fifteen. It felt validating to watch them have fun with it, and the game progressed quickly because I had real feedback from people I knew would actually open it. We were in rural Argentina, the internet was spotty, conversations would lag, and the game was something to do. It served a real need.
It also wore people out. I think it overstayed its welcome a bit. Family understands that kind of infraction, but the truth is I used up my playtesters on that trip. By the time I was getting close to launch, I was waiting on the announcement for fresh motivation and energy. The Argentina playtesting taught me something I'm still working out: it's disrespectful to playtesters, and a bad strategy for launch, to give people a game that's in too early a state. The game can't be slop when you give it to playtesters. I should feel good about a game before I ask people to play it. I don't think I did anything wrong in Argentina — it made sense in the context of the trip — but I won't burn social capital on an unfinished game again.
So the announcement was carrying more weight than it should have been. In the day or two leading up to it, I kept finding ways to stall and things to improve. I had an existential crisis when I saw a game someone else was building because it made mine feel like shit. I felt surprisingly vulnerable about it. It's a driving game. Basically for kids. Not something any serious adult would work on. And I care about it? What does that say about me? And, oh yeah, I didn't even write the code. AI did. So why are we even surprised that people didn't like your little slop game?
When I posted it and the stats weren't moving, the first thing I did was find a real bug — we weren't logging Ridge Run events the way we were for Wild Lands. (That's a good example of a broader standardization theme I should be thinking about more.) Then I quickly realized how much I had overestimated the response. It sobered me up. It felt like someone slapped me awake after getting too drunk on slop.
That's the moment that matters. Seeing those metrics was the start of thinking I can't just keep doing obvious things. I have to try harder than that. I actually did try pretty hard on Ridge Run, albeit for two or three weeks on my phone with AI as the coding assistant. Realizing that wasn't enough kind of snapped me out of the get-rich-quick fantasies I'd been carrying since the start of the project. Building Kaviox is going to take more mental and creative bandwidth than I've been giving it.
Giving Ridge Run its flowers
All of that said, Ridge Run is genuinely good for what it is. I played it for hours before I got tired of it. It's fun for the same reason Hill Climb Racing is fun. You start with a shitty car. You drive it to get coins and fuel. Pretty soon it starts feeling a lot faster, climbing up hills that used to stop you. The map feels real-scale, with hills that get large and terrain that gets interesting. Keep going and you unlock a dirt bike and a bush plane that each give you new ways to experience the runs. There's an achievement system that ties into the economy. There's a grasslands map with big rolling hills, and a canyon lands map.
It's also a base. A lot of the infrastructure of a game now lives in Ridge Run: menus, cross-device save persistence, fullscreen support across mobile browsers, procedurally generated worlds, 3D assets, the driving physics engine, the plane physics engine. That work compounds. The reception underperformed and the foundation is load-bearing. Both true.
I don't have features I'm itching to add to Ridge Run anymore. My creative energy has moved on. So I'm calling it complete. The next thing I learn from it will be a marketing lesson, not a development one.
The surfing game
I've thought a VR surfing game would be amazing for years — I may or may not have first heard the idea from Palmer Luckey. There's a real gap in the market for high-quality watersports games. A Strapped Crew game, GTA-V-style, set on Maui in the 80s where you level up and progress to tackling the biggest surf on Maui would be awesome. Same with a Kai Lenny game. Or anything that would let you play a game that felt like surfing OB on a big day or kiting Nazare and taking off a hundred feet into the air. These are the kinds of ideas that make me think modern games haven't even scratched the surface of what games can do. Hence Kaviox.
That said, I wasn't sure AI could actually do it yet. I'd put off the project after how badly it had gone the first time I tried — my first ever vibecoding project was a 3D wave in a box, intended as a building block for exactly this. Ridge Run was actually built in part because I thought if I could build hills and make them move, that's surfing, right?
So when I finally started prompting the surfing game, there was real anxious tension. The harness held. The first version produced something that did look like a surfboard, hovering in a huge standing barrel. It looked completely wrong, but it was wrong in a way that made me think this is completely possible. The next aha moment came when the initial Boneyards wave was giving me trouble and I asked it to make Waikiki instead. It pretty much one-shotted a beautiful wall of a wave that resembles Queens.
Means of Production
Means of Production is the third game and the strangest data point. It's an idle game about supply and demand, building out an economy by buying and selling resources. It's the first game I've made that I couldn't stop playing during development.
A short playtest would turn into thirty minutes, an hour. It happened on a weekend in Haleiwa. I was at the kitchen table most of the day, iterating on the game. I could have been outside. I could have been swimming, surfing, anything. Instead I was sitting inside playing the idle game that I was making. That's a signal I haven't gotten from anything else I've shipped, and I've been underweighting it.
I haven't had Means of Production or the surfing game playtested by anyone yet. Partly that's the Argentina lesson — I want to feel good about them first. Partly it's that I'm still working out what they each are.
What the three games tell me
Three games, three different relationships to my own work. Ridge Run is the game I built and showed people. The surfing game is the game I want for me. Means of Production is the one that pulled me in. Looking at them next to each other, the pattern that jumps out is that the one I worked hardest on is the one that landed flattest, and the two I almost didn't make are the ones I'm most excited about. Ridge Run had execution taste — I cared about how it felt to play, what the mobile experience was like, how the progression paced. What it didn't have was creative or design taste. The vision was borrowed. The other two games are the first ones where my own creative judgment is actually load-bearing in deciding what they are. That's the thing I want to pay attention to.
Which brings me to the thing I've been dancing around. My actions have outstripped my thoughts. I've been so focused on doing — shipping, announcing, iterating — that I haven't done the harder, slower work of thinking through what's actually worth building. Whenever something gets too hard for the agents, I move on. That's a viable strategy for building a habit. It's not a viable strategy for building anything good.
I want to be careful here, because this is exactly where I can backslide. My lifelong failure mode is the opposite — sitting on the sidelines, thinking and not doing. Kaviox was the corrective. It worked. The risk now is that "I should be more intentional" becomes a thoughtful-sounding way of relapsing into not shipping. So this isn't ship less and think more. It's keep shipping and route some fraction of that effort through actual depth.
Things I've been working around
The way I'll know I'm actually doing the deeper work is whether I start making progress on the things I keep noticing and routing around. In no particular order:
- The name. I don't love Kaviox. I don't have a better one. If I found one I think I'd feel more comfortable pushing the project publicly.
- Actually designing a good UI. I can spot bad alignment and unnecessary buttons. Beyond that I don't know what makes a UI good or bad. I'm guessing at colors, button styles, layout. Either learning enough to have real opinions or finding tools and people to lean on would lift the presentation of everything I'm doing.
- Writing and marketing. I'm not a strong writer yet, and I don't have experience marketing. That gap shows up in every funnel, including the announcement that flopped.
- Funnels, engagement, conversion. I don't use social media. I've never sold a product, mine or anyone else's. This whole muscle is undeveloped.
- Auth and security. Google OAuth solves some of it. There's a lot I wouldn't put on the site as it stands — anything that consumes my OpenAI or Anthropic credits, for instance. I need better primitives before I'm comfortable putting sensitive workflows up there.
- Code quality. I haven't read the codebase since the last refactor. Given what an external audit found last time, I should assume parts of it have drifted. I should do another pass and start thinking about background automation for refactors, tests, and documentation.
- Standardization across games. The Ridge Run analytics bug was a small instance of a bigger problem — each game doing its own version of things that should be shared. Logging, saves, menus, settings.
- Finance tracking. I don't have good visibility into what I'm spending on the project month over month. I should.
- 3D models, SFX, music. I don't know what good looks like or how to source it. AI? Pay for it? Some combination? Open question.
- A real knowledge base. Start collecting links, posts, and principles on design, UX, and game feel. Build a reference I can actually point agents at.
Some of these are next-month problems. Some are next-quarter. The point of writing them down is to stop pretending they're not problems.
What's next
I'll ship initial versions of the surfing game and Means of Production. I'll keep posting. And I'll start working through the list above — probably code quality and design first, since they show up in everything.
If the first post was about getting the spark back, this one is about realizing the spark isn't enough on its own. It has to be spent on the right things. The slap-awake from the Ridge Run launch was the start of figuring out what those are. We'll see what gets reported next month.