Designing Glowtris in the barracks
I'm a 7-year designer. I can't code. Here's how I built a game, brand, and blog by talking to Claude — the actual design process, every decision, every fix.
So I've been building a browser Tetris game called Glowtris for a while now, and I figured it's time to start writing about it.
I'm a designer. I can't code — not really. Every feature in this game was built by describing what I wanted to Claude and then staring at the result until I could articulate what was wrong with it. That loop, repeated a few hundred times, is how you get a game.
This blog exists because that process is actually interesting, and commits like fix: daily board reset timing don't capture any of it.
The real subject is vibe-coding a real product — what it feels like to build something you can't directly write, where your main skill is knowing what you want and being able to say what's broken.
DEV — Technical decisions, but told from the angle of: what was the actual problem, what did I ask Claude to do about it, and how did we arrive at the solution. Not a tutorial. More like a lab notebook.
DESIGN — I'm a designer by training, so this is where I talk about the visual and UX decisions: color systems, typography, why something felt wrong and what I changed. The actual design process, including the prompts that got me there.
UPDATE — Honest feature release notes. What actually shipped vs. what I planned. What I had to cut and why.
GUIDE — Tips for getting good at the game itself. T-Spins, combos, sprint strategies.
NOTICE — This. General announcements.
Quick context: Glowtris is a free, ad-free browser Tetris clone I've been building solo. It has daily challenges, sprint mode, leaderboards, and a push notification system that mostly works.
Available at glowtris.com but still "beta" because the game engine isn't where I want it for v1.0 yet. The bar I've set for myself is higher than what's live. That gap is what this blog is about.
I'm a 7-year designer. I can't code. Here's how I built a game, brand, and blog by talking to Claude — the actual design process, every decision, every fix.
The Duolingo trick — using date-keyed Redis buckets to make a leaderboard appear to reset at local midnight, while keeping the old data around.
Why setTimeout-based game loops are a trap, how I fixed it with a 1000Hz fixed timestep, and what sub-frame input handling actually means.