Some ideas are so dumb they circle around to genius - or back around to dumb.

How It Started

"What if Tom Cruise was running to Mars - and anyone could make him a little faster? Would he get there before Elon Musk?"

I don't know why I thought this was a good idea, but once I did, I couldn't stop until it existed. Pitching it to my developer friends at the bar was easy: everyone got instantly excited by something so beautifully absurd. Come tomorrow, however, and the now-cool-and-sober heads would always realise just how much work this silly project would require. I even found the perfect domain name - tom.cruises - but not a single line of code got written. Desperate, I launched a Kickstarter for a line of toilet paper instead of lines of code. Every roll sold would make Tom go a little faster… but it didn't go anywhere.

Over a year later, I'm at the bar with those same friends again. One of them tells us about this massive 30-day hackathon bolt.new had organised. I didn't even realise the opportunity until he turned to me and said, "Hey, Ignat, you should do it!" There were only 15 days left to build the app from scratch, but one of the categories was the "Stupid Sh!t Challenge": how could I pass that up?

Absurdity Is the Meaning

When I take out my phone on the toilet, I want to relax and chuckle at something pointless - without an algorithm turning my brain to mush with an onslaught of 10-second videos. The internet has become this hyper-optimised attention marketplace with no room left for the kind of unoptimised absurdity that gives you the best laughs because it serves no other purpose than to exist.

Absurdity is universal. It's relatable because it has no hidden agenda: it's doing something just because it's fun. In a digital world of doomscrolling, outrage, and information overload, I want to see more harmless silliness and creative chaos. Because inside every one of us is a child that never grows up - and that child needs to catch a fucking break.

So, why Tom Cruise? He runs in every movie just because he can. His Facebook page literally reads: "Running in movies since 1981". And he makes movies just to entertain. No message, no BS: pure cinema.

And why Elon Musk? Because he started SpaceX just because he wants to go to Mars. And how incredible would it be to witness interplanetary travel in our lifetime? Maybe even go ourselves one day? Let's give him - and the thousands at SpaceX and elsewhere working on that dream - a little extra motivation.

Tom vs Elon face-off

The Game: Get Tom Cruise to Mars

I named the game Tom's Cruise. It's an interactive post on Reddit where a fictional Tom Cruise is running to Mars on a black pixel canvas, with live updates on his progress: speed, distance, ETA.

You can upvote the post to make him go faster.

To make this journey a story worth telling - and to tell the stories of the years until Tom reaches his destination - everyone can colour one pixel of the cosmic canvas every minute. You get 9 colours to choose from, but if multiple people colour the same pixel at the same time, the resulting colour is a blend, allowing you to get more creative through collaboration - or chaos.

To keep the canvas feeling cosmic (and to stop it from becoming stale), all pixels fade to black by 1% every 10,000 pixels placed. That way, at most half of the 2M-pixel canvas can ever be lit up at the same time, with older pixels slowly fading away like distant stars.

How I Built It (and Nearly Lost My Mind)

I built Tom’s Cruise using Bolt’s code generation on Reddit’s developer platform, Devvit. There were lots of constraints, but also two big advantages:

  1. I could use Reddit’s authentication and upvote system to make sure that only real humans influence Tom’s velocity (as much as possible). Only authenticated accounts can upvote to speed Tom up—and they can only do it once. A bonus side effect of this implementation is that people rooting for Elon can downvote to slow Tom down.

  2. Reddit handles running and scaling the game for free. Important for something designed to last for years.

Building with Bolt was a blast. Sure, my code may trigger uncontrollable screams of confusion in actual developers, but being able to program without knowing how to code is a dream come true—though it’s not a magic wand. You need to break your project down into tiny tasks, follow at least some development best practices, and have the patience to (re)explain what you want until Bolt gets it right. The AI can get quite stubborn, so sometimes you just have to reset the conversation and start over.

Debugging can also turn into a loop of fixing, deleting, re-fixing, and second-guessing, until you finally realise that you're not talking to a magical AI that "thinks in 0s and 1s" and inherently understands everything about your code. It needs debugging tools just like you do (and lots of micromanagement). Give it a clear diagnosis and a precise outcome to aim for. If you're stuck, ask it to build better debugging tools until you truly understand the issue - once you do, it will too.

I spent two days trying to figure out why the app was using too much CPU and draining my phone’s battery. I was convinced I had messed up the canvas rendering. I explored every possible cause: nothing was working. Bolt was telling me it was out of ideas too… until I noticed a tiny warning in Chrome’s performance tab: “Forced reflow.”

Me: “What does ‘forced reflow’ mean in the Chrome console inside the subreddit where I’m testing the app?” (I had to be that specific, yes.)

Bolt: “Oh, very simple! It means you’re re-rendering your entire canvas unnecessarily—60 times per second. It’s probably because of [line of code]. Common mistake!”

One line of code later, the problem was fixed.

Like any tool, AI code generation is only as good as the person using it.

Some Technicalities

The main challenge was making the game feel multiplayer, cosmic, and alive—while still playing nice with Reddit’s strict platform limits (notably: 5MB max per request, 500MB total storage, and 1,000 commands per second). The canvas had to be big enough to feel like outer space, so we went with 2 million pixels. To manage that, the canvas is broken into chunks that are sent to users in large batches. Fewer API calls, but bigger payloads—so downloads can be slow.

To keep everything smooth, the canvas is rendered using a double-buffering technique. Pixel data is first drawn onto an offscreen canvas using putImageData(), and once that’s ready, it gets swapped onto the screen using drawImage(). This trick avoids flickering during updates and gives us crisp visuals even on high-DPI displays. It also allows for precise pixel control, smooth zooming and panning, and generally makes the whole thing feel perfectly responsive.

Because real-time gameplay isn’t feasible at this scale under Reddit’s constraints, users place one pixel at a time into a shared queue that runs every minute. Once the queue is processed, the canvas updates for everyone. If multiple people target the same pixel at the same time, the colour is blended. Pixel data is stored as a 32-bit integer (RGBA).

Tom’s progress is handled by a scheduler that correctly calculates his position even if the system crashes. Another scheduler—the “monitor”—keeps an eye on both the pixel queue’s health and Tom’s progress, restarting them if anything breaks. Mods have a few extra tools: they can restart the monitor manually from the subreddit menu and place pixels without restrictions.

How to Join

15 sleep-deprived days later, I finally brought my stupid idea into the world - a labour of love, delivered literally seconds before the hackathon deadline. It won't change the world. It won't plant trees or save whales. But it might make you smile - and that's enough.

Come drop an upvote. Or I don't know, draw something on the canvas. It'll stay there for others to see while you get on with your life, with Tom Cruise slowly counting up the kilometres on his way to Mars.

Built With

Share this project:

Updates