This is my honest build journal. Not a polished marketing page — just me writing down what I made, what broke, and what I learned. If you've ever wondered whether a real person is behind a small game site, this is my answer: yes, and here's the receipts, warts and all.
For a long time every game here was my take on a classic (Snake, Pong, Breakout). I'm proud of those, but I kept feeling like the site lacked something only I could offer. So this month I built two games on mechanics I invented from scratch:
Building something that doesn't exist elsewhere is harder than recreating a classic, but it's the first time the site feels genuinely mine.
I'll be transparent: this site got rejected from AdSense several times. First for "unoriginal content" (fair — the earliest version was too derivative), then repeatedly for "low value content." Each rejection stung, but each one forced a real improvement: I deduplicated templated text, wrote every game's technical notes in my own voice, added canonical tags when I discovered Google was treating my www and non-www as duplicate pages, and added structured data.
The hardest lesson? Word count isn't value. I once thought "more text = better." Google disagreed, and honestly Google was right — filler text doesn't help anyone. Real value is a game that works, a tutorial that teaches, a log like this one that's honest.
I shipped a full visual redesign (light theme, new font) and… nothing changed live. Cloudflare kept serving the old cached CSS no matter what I did. I tried query-string busting (style.css?v=3) — cached. I tried renaming to main.css — cached. I finally renamed to a never-used filename and only then did the new design appear. Lesson burned into me: CDNs cache aggressively, and sometimes the only reliable cache-bust is a brand-new filename.
Every game worked great on desktop and was unplayable on a phone. Keyboard games like Snake had no touch input at all. I wrote a small mobile.js helper that adds an on-screen D-pad and swipe detection. The subtle bug: tiny finger jitters registered as swipes and sent the snake backwards. Fixed it with a 30-pixel swipe threshold. Sometimes the fix is one number.
I implemented minimax for the Tic Tac Toe AI. Because tic-tac-toe is a "solved" game, a perfect minimax player cannot lose — the best a human can do is draw. A friend asked me to "make it beatable," but I kept it perfect on purpose: the fun is in understanding why you can't win, which is a tiny lesson in game theory.
I crossed from "a folder of HTML files" to "a website": proper navigation, a blog, legal pages, a sitemap, and a cookie consent banner. The unglamorous truth of web dev is that half the work is the boring glue — footers, 404s, meta tags — not the fun game code.
My first Snake clipped through walls if you pressed two keys too fast (a classic input-race bug). Fixing it taught me more about event handling than any tutorial did. I celebrated with instant noodles, and I've been hooked on making games ever since.
"I keep this log public because honesty is the only thing a small site has that big sites can't fake." — Ace
Want the polished write-ups instead? See the blog. Want to know who I am? See About.