Engineering leader, designer, and maker based in the Pacific Northwest. Over 25 years of writing software, and over 15 building and scaling the international teams that ship it... have made me care equally about architecture, developer experience, and the people doing the work.
What lives here is what I maintain on nights and weekends: CI tooling I want on every repo, a couple of conference talks, and side projects that keep me close to the code.
- career · Interactive self-assessment tool behind "Mining the Career Ladder" (SurveyMonkey Innovate Conference 2026). A framework for turning your company's career ladder into quantifiable growth goals.
- portable-hooks · Talk platform for "Portable React State Hooks" (Momentive Innovate Summit 2022). Built with Next.js, MDX, Code Hike, and React Flow.
A small family of composable actions I reach for on every Next.js repo. All share the same release-action for automated semver releases.
- checkout-setup-node-install · Bundles checkout, Node/yarn setup, and install into one step.
- job-root-cache · Save, restore, and cleanup a run-scoped workspace cache across parallel jobs.
- next-build-cache · Caches the Next.js build output for faster CI.
- release-action · Reusable workflow for semver releases, changelogs, and alias tag management.
- Semantic UI React · Maintainer. Long-running contributor to the React component library, which is how I ended up in @Semantic-Org.
- Arsenal America · Maintainer of the public tech stack for the official US Arsenal FC supporters group, including the main Next.js site and a custom ATProto feed generator for Bluesky. Volunteer work for a club I care about.
- shippo-packing-slips · Raspberry Pi automation running in the 3D-printing workshop. It prints packing slips and shipping labels and schedules USPS pickups via the Shippo API.
Off the keyboard: woodworking, photography, and overlanding into the mountains or out to the beach with our cattle dogs.





