writing
Blog
Blog posts and whatever I'm tinkering with lately.
Why a two-user Convex chat app read tens of MB a day
Jun 13, 2026·6 min read
In Convex, bandwidth isn't the size of your data, it's how many times your reactive queries re-read it. Here are the four traps that inflated my bill and the fixes for each.
convexperformancedatabasereact
Why a static Three.js scene still cooks your phone, and the dirty-flag fix
Jun 12, 2026·6 min read
A simple Three.js board game can heat an iPhone to the touch even when nothing moves. The cause is the render loop, not the framework, and the fix is render-on-demand.
three.jswebglperformancemobile
Why programmatic inserts don't wrap on iOS multiline TextInput, and the one-line native fix
Apr 20, 2026·4 min read
Why iOS multiline TextInput stops wrapping on programmatic inserts, and the one setNativeProps call that fixes it.
react-nativeiosdebugging