-
A Playable URL for Every Pull Request
When I open a pull request on the nonogram app, a bot comments back within a couple of minutes:
-
Shipping a Flutter Web Game to TestFlight: the iOS Tax
The nonogram ran on the web for two years before it ran on an iPhone. Same Dart, same widgets, same game loop. Getting that identical code through Apple’s front door...
-
Teaching CI to Approve My Screenshots
Golden tests are the reason my nonogram app survived contact with more than one screen size. I wrote about that — render the UI at five viewports, commit the resulting...
-
Building a Nonogram, From 3×3 to TestFlight
I started this project on November 4, 2023 with a 3×3 grid of colored squares. The first commit isn’t a hello-world Flutter app; it already has cell selection, drag-to-fill, a...
-
Making a Puzzle Solver Fast Enough to Disappear
A reset button that takes two seconds to reset feels broken. You press it, the board sits there, you press it again, maybe you swear at your phone. This is...
-
Shipping a Co-op Card Game in 17 Days
Four browser windows arranged in a 2×2 grid, each logged in as a different player, silently passing cards to a Cloud Run server and watching the state snap back. No...
-
Why I Rewrote Countdown
Joel Spolsky has a famous essay called “Things You Should Never Do, Part I” where he argues that rewriting software from scratch is the single worst strategic mistake a company...
-
Welcome to Sandbox Sinkhole
This is the first post on Sandbox Sinkhole. I’ll be using this blog to share the apps and games I’m building, along with links so you can try them out....