Senior frontend engineer + freelance web developer · San Francisco

I build websites, web apps and the occasional browser game.

This is where I keep all of it: the apps I build for fun, the work I do for clients and teams, and the games I make.

Day job
Sweating the details as a frontend-leaning full stack engineer at R-Zero
After hours
Making games for GameFrame, building toy web apps, reading a good book, or watching YouTube
Good at
Design systems, accessible React and TypeScript UIs, and data-heavy dashboards
Open to
Freelance web projects

Work

Startups I've helped build

Shipping beautiful, accessible and measurable web experiences for small, scrappy teams that move fast.

AdStage · acquired by TapClicks

Designer to Senior Designer / UI Engineer

May 2013 – Feb 2020 ·

Hire #8 at an ad-analytics startup, designing and building its product UI from the ground up.

  • Built most of the original platform’s UI
  • Redesigned and rebuilt the company website solo, on a tight deadline
  • Built an Ember.js component library for the whole product suite
  • Designed and built the Calculated Metrics Builder
  • Ember.js
  • UI design
  • Frontend

Plaid

Web Developer to Design Engineer

Jan 2020 – Jul 2024 ·

Three teams in four and a half years, ending on the design system the whole company built with.

  • Second full-time engineer on Threads, Plaid’s React design system
  • Shipped accessible components, visual regression testing and codemod tooling
  • Lifted new-developer onboarding completion 12% with multivariate experiments
  • Helped move plaid.com to Next.js and Contentful
  • React
  • TypeScript
  • Next.js
  • Contentful

Hearth AI

UX/UI contractor to Senior Product Design Engineer

Aug 2024 – Mar 2025 ·

A three-month contract that turned into a full-time job one month in.

  • Revamped the whole product UI for Hearth’s AI contact book
  • Built features end to end, picking up Python along the way
  • Art-directed two product videos and steered the iPhone app work
  • React
  • Python
  • Product design

R-Zero · right now

Senior Frontend Engineer II

Mar 2025 – now ·

Showing customers how much energy their buildings save, and helping the team ship faster with AI.

  • New features and polish on the core building-analytics dashboard
  • HVAC energy-savings workflows and the dashboards that show what customers saved
  • A framework for bespoke, client-by-client dashboards, built with agentic coding
  • Leading the team’s AI-assisted development practices
  • Next.js
  • TypeScript
  • n8n
  • TimescaleDB

Up next

Your project, maybe?

I’m open to freelance web work: new builds, rebuilds and the stubborn bugs nobody else wants.

Apps

Small ideas I brought to life

After-hours personal projects that scratched an itch.

01

VibeTV

YouTube, but it works like an old TV with a remote. Flip through your subscriptions feed like channels. Adjust volume, toggle captions, like, dislike, etc.

  • Next.js
  • YouTube API
Turn it on
02

Amgine

Send encrypted messages to your friends. (Not intended for anything serious, just a fun toy. See if you can figure out the cypher!)

  • TypeScript
  • Cryptography
Try it

Games

I make games, too

GameFrame is my one-person game studio. Every game runs right in your browser.
I make games that appeal to me, but hopefully others will enjoy them, too.

Games about things nobody makes games about.

  • 01
    Writ of Combat A courtroom game where a losing case can lead to a courtroom brawl.
  • 02
    Paper Football A classic cafeteria game made digital, with semi-realistic physics.
Play something