I still build. Product leaders who can't engage technically make worse decisions about architecture, feasibility, and build-vs-buy. This is the technical judgment that informs how I lead.
Client Work
Judicial Selection Map
Brennan Center for Justice
Interactive map of state judicial selection practices across all 50 states and DC, covering State Supreme Court, Appellate, and Trial Court levels.
d3.jsmappingcivic tech
Campaign Finance Data
Campaign Finance Institute
Interactive visualizations exploring campaign finance data and political funding patterns.
d3.jsdata journalismcivic tech
Ribbon
Stanford University
Music visualization exploring melodic patterns and compositional structures.
d3.jsmusicresearch
Agent-Based Property Game
UC Berkeley
Game theory simulation exploring cooperation and defection dynamics using cellular automata and agent-based modeling. Collaboration with Thomas Maillart.
d3.jssimulationgame theory
Pairwise Voting Detail
Private Commission
Interactive radial visualization of pairwise voting results, showing yes/no vote distributions for organizational decision-making.
d3.jsdecision scienceUX
Pairwise Voting Overview
Private Commission
Timeline view of all questions across users, grouped by category and ordered by recent activity.
d3.jsdecision sciencetimeline
Personal Projects
metrograph.ai
Personal Project
Natural language interface to 9M+ Oakland and San Francisco 311 service requests and 1M+ crime incidents. A two-stage RAG pipeline routes queries using pgvector/pgai embeddings, then uses DeepSeek to plan and generate responses over composite PostGIS geospatial datasets. Full-stack Django/Svelte app deployed on Hetzner with Cloudflare CDN.
Django/PostGISSvelte/D3RAG/AIcivic tech
Gentoo Linux Galaxy
Personal Project
Interactive timeline visualizing Gentoo Linux developer activity from 2000 onwards, tracking the growth of the open source community I helped scale from 15 to 150 developers.
d3.jsopen sourcecommunity
72 Batman Symbol Silhouettes
Personal Project
Animated morphing through 72 distinct Batman symbol silhouettes from comics, films, TV shows, and video games.
d3.jsanimationsvg
78 Years of Batman Logos
Personal Project
Animated SVG morphing through every major Batman logo design with metadata about each design's origin, from 1939 to present.
d3.jsanimationsvg
Flight Paths Edge Bundling
Personal Project
Force-directed edge bundling visualization of flight routes between US airports, combining map and graph visualizations.
d3.jsmappingnetwork
Brush & Zoom with viewBox
Personal Project
S&P 500 stock price visualization using focus+context pattern with SVG viewBox for efficient zoom/pan operations.
d3.jsfinanceinteraction
Euro Debt Crisis
Personal Project
Chord diagrams visualizing creditor-debtor relationships among European nations during the debt crisis.
d3.jsfinancechord
Quantile Choropleth
Personal Project
US unemployment rates by county using quantile classification and ColorBrewer sequential color scheme.
d3.jsmappingchoropleth
Real Time Chart
Personal Project
Reusable D3.js component for streaming data visualization with automatically scrolling time domain.
d3.jsstreamingreusable
Get in touch.
VP or Director of Product, full-time or fractional. Somewhere the org needs building or rebuilding, not maintaining.