The lab
Things to play with, and things I measured
Toys first, instruments second. Where a number was measured on my own machines, it links to the file. For who I am and the work behind this, start at coinupbtc.com.
Play
Things to play with
-
Games
The Arcade
Fourteen browser games I built off the clock, phone-first: horde survivors, a bridge-physics puzzle, tower defence, a rhythm game, blackjack, a zombie FPS. Pick one and play.
Checked Every game is held to the same quality checklist: 11 of 14 pass every item today.
Open the arcade -
Live data
Blockfield
The Bitcoin mempool as a block war: the next three blocks fighting for fee bands, live, with inscriptions floating through. Refreshes itself; nothing to configure.
Live Reads mempool.space every few seconds. The purge floor, hashrate and halving countdown are the real numbers right now.
Watch it -
Toy
Falling sand
Draw with sand, water, stone, wood and fire and let them react. Drop little people in and build them a bridge. A chemistry set with no cleanup.
Try Pick 👤 Person, draw a floor, then light a fire under the wood.
Play it -
Game
Gravity lander
Land on the moon from your phone. Thrust is a thumb, the fuel is real, and the ground is less forgiving than it looks.
Try Built phone-first in Three.js; works in landscape and portrait.
Fly it -
Measurement
Moiré bench
Two grids that almost line up. The pattern you see is where they disagree. A vernier caliper reads small differences the same way: a tiny mismatch between two scales becomes easy to see.
Try Move one layer’s spacing by a single 1% step and watch the pattern shift a long way.
Open the demo
The bench
Four things measured
-
Performance
Render cost
Selecting one row used to rebuild every row in the list. This runs the bug and the fix side by side and times both in your browser.
Measured In the real app: 13 s before the fix, 7.5 ms after, at 516 records.
Open the demo -
AI serving
Speculative decoding
A small model drafts the next few words and the big model checks them all in one pass. Move the sliders to see when drafting saves time and when it costs time.
Measured On a copy-heavy refactor, 34.33 → 74.48 tokens per second. Report §9
Open the demo -
Capacity planning
Memory packer
Pick one, two or three DGX Spark machines and the models you want to run, and see whether they fit. Each machine has its own memory; two machines are not one big pool.
Measured 121 GiB per machine; the video model holds 89.42 GiB on one after loading. Results
Open the demo -
Agent efficiency
Context carry
Every agent step re-reads the whole session, every tool result included. Watch old tool output pile up step by step, then turn on clearing it and see what that saves.
Measured On my agent, 50.8% of everything read was old tool output, each token re-read 54×. The audit
Open the demo
Notes
Write-ups
- Lean AI
A quality engineer's waste walk through four months of Hermes Agent: 7.6 billion tokens read to write 36 million. Half of what it reads is tool output it already read, and the fix was already in Hermes, switched off.
- Hermes Agent on two DGX Sparks
Four months of Nous Research's agent on a local DeepSeek-V4.1 pair: what runs, the three engine patches now upstream, and four lessons from running Hermes all day, checked against today's code.
- A 90-second stall, fixed
One long prompt stalled every live conversation on a two-machine setup, for two minutes on mine. I wrote the patch and it was merged upstream. The bug, the fix, and who measured what.