Breakout, with my phone as the paddle

A breakout game built on godom: laptop renders the game, phone is the paddle controller via gyroscope, both connected to the same Go process.
Projects, experiments, and lessons from software and markets.

A breakout game built on godom: laptop renders the game, phone is the paddle controller via gyroscope, both connected to the same Go process.

Go shells out to ffmpeg, decodes a video into JPEG frames, sends them to a browser canvas. No HTML video tag, no streaming, no codecs in the browser.

godom doesn't ban JavaScript; it pushes it to the edges where it actually pays for itself. Three tiers, one rule, and the trap to avoid.

I wrote a 3D engine in Go and let the browser draw 2D circles. No three.js, no WebGL, no JS math libraries. Just a list of 2D draw commands per frame.

godom's composition model: stateful islands, stateless partials, slot-based content, and the shared-pointer trick for state across islands.

I ran the same regime-filtered breakout on four configurations. Three broke in different ways. Here is what that taught me about strategy fit.

I built a browser-based terminal in Go using godom and xterm.js. Then I ran Claude Code inside it. It just worked.

godom uses binary Protocol Buffers, not JSON, with a deliberate Browser→Go split between input value sync and explicit method calls.

I built godom mostly with Claude as an implementation partner. Here's what that actually looked like.

I ran a plain Donchian-channel breakout on NQ 1H, NQ Daily, and Gold 1H. One worked, one was lukewarm, one lost money.

How godom builds a virtual DOM tree in Go, diffs it against the previous tree, and ships only the patches the browser needs to apply.

godom ships a docs/llm-reference.md aimed at AI agents writing godom apps. Why that doc exists, what it covers, and what the workflow looks like.