Writing
Notes from systems, light, and process.
The notes here stay near the work itself: product logic, technical tradeoffs, observational lessons, studio rhythm, and recorded changes worth keeping.
Featured note
March 10, 2026
How I Escaped the localStorage Limit Without Rewriting My App
Keeping synchronous APIs while moving heavy data into IndexedDB with an in-memory cache.
I migrated large PGN and engine datasets off localStorage by preloading IndexedDB into memory, preserving synchronous reads and enabling far larger storage.
Read noteWhy this page exists
To keep the writing tied to the actual work instead of turning into general advice.
To let software, painting, and observation share a vocabulary without collapsing into branding language.
To record change while it is still happening, before the sequence gets cleaned up into hindsight.
Archive
Archive
The archive stays intentionally selective. New notes should come from practice, not content pressure.
Product reading
April 7, 2026
Designing Mobile-First Analysis UX for Serious Study
Serious mobile analysis worked once the board became a hard layout constraint, navigation was optimized for fast scrubbing, and advanced controls moved out of the primary study path.
Product reading
March 31, 2026
How I Validate Move Classification Quality
Move labels start with deterministic centipawn thresholds, then get softened or overridden based on depth, stability, mate context, and MultiPV ambiguity.
Product reading
March 24, 2026
Why I Stopped Trusting Browser Multithreading Checks
Feature detection can say multithreading is supported, but only runtime validation, fallback paths, and recovery logic make browser-native analysis reliable.
Product reading
March 17, 2026
Running a Chess Engine in the Browser Isn’t the Hard Part
Browser Stockfish integration was straightforward; designing stable, trustworthy continuous analysis required explicit promotion rules.
Product reading
February 24, 2026
How I Designed ChessIQ Around Repeated Real Use
ChessIQ evolved through daily use: test real games, surface friction, remove low-value features, and keep what improves review quality.
Product reading
February 10, 2026
Why I Built ChessIQ
ChessIQ began as a way to remove friction from post-game review and evolved into a dependable analysis workflow shaped by daily use.