Software engineer based in Atlanta. Lately I've been building small instruments: single-purpose tools that answer one question and then let you close the tab.
| Project | Description |
|---|---|
| on-the-clock | A fantasy draft board built from your league's actual lineup. Value over replacement against its real roster shape, cost of waiting from public ADP, and a phone-first tracker that follows the live ESPN feed. Python does the thinking, the browser draws the board. |
| painterly | Watch a photo get painted. A big brush lays the ground, finer brushes return only where the picture still disagrees with it, and every stroke runs along the image instead of across it. Hertzmann's 1998 algorithm, seeded so the same photo paints the same way twice, in 7.4 KB of TypeScript with nothing else to install. |
| self-drawing-svg | Blueprint plates that draw themselves in on view, develop to cyanotype on hover, and trace their own most meaningful line. Deterministic linework, and all of the motion is CSS. |
| appear-on-scroll | Reveal elements as they enter the viewport, with a slide that knows which way you're scrolling. IntersectionObserver, zero dependencies, about 2.9 KB gzipped. |
| overflow-x-culprit | A Chrome extension for the mystery horizontal scrollbar. It outlines every element actually causing it and ignores the ones that only look guilty. |
| skills | The Claude Code skills I use every day, cut down to the ones that make sense on someone else's machine. Nothing in it calls a metered API. |
At Amazon I'm the front-end technical lead for a React app 68,000+ people use every day. The work I'm proudest of there is the unglamorous kind: unifying three design systems into one across 20 repositories, reducing my team's average CI/CD build time by 65%, and taking a Babel config from 276 lines to 40. None of it was assigned, but it compounds.
The long-form versions, tradeoffs included, are on davemaynard.dev.

