I enjoy making tools that improve data related workflows. I really enjoy working in the open on tools that have the potential to make many people more productive.

Built an in-browser editor for quickly making, editing, remixing and sharing d3.js code examples. Implemented search for more than 12,000 examples.

Open source and funded via Kickstarter.


Helped prototype and build this desktop app that quickly checks datasets for common errors.

Open source and funded via the Knight Foundation.


Before Blockbuilder there was Tributary, an open source in-browser editor for d3.js inspired directly by Bret Victor's Inventing on Principle.


A simple utility to help manage local web servers. Designed for simplifying front-end focused classes and workshops.

d3.js community
I've always enjoyed bringing people together, especially when it comes to mixing my own interests in art and science. d3.js turns out to be a technology that attracts people with diverse backgrounds and open minds.
Bay Area d3.js meetup

Co-founded the meetup in Feb. 2012 and have grown it to over 4,000 members today. We record and post as many of the talks as we can.
The screenshot is a visualization of our first 1,024 members.


Co-founded and co-organize this annual unconference where 100 d3.js practitioners gather in San Francisco to discuss, learn and advance d3.js together.
Watch a quick overview from 2015 or read about organizing the first one in 2014

Talks & Workshops

I've given many talks and workshops about d3. My most well known workshop is available as an online course on Frontend Masters.

YouTube Tutorials

I also like to share my understanding via short video tutorials and demos. I've got more than 100 videos covering various aspects of d3, web mapping and graphics programming.

Data visualization
Data visualization is an exciting area to work in because it brings together communication and complexity, aesthetics and automation. There is art and science involved in crafting an effective visualization, which makes it consistently interesting. blog post

Helped develop an interactive visualization to help explain a data story about interview performance for See how each (1) iteration (2) evolves (3).


I was the first hire at Lever where I helped design and build the data infrastructure for the app, as well as numerous product features including Reports.

Tremulous Hand of Worcestor

This is an ongoing research project I'm working on with my father. He is studying annotations by a particular monk on medieval manuscripts, so I wrote an app to help him collect data and visualize it

How pinyin works

我会写中文,在大学学的。I learned some Mandarin in college and spent a few summers in 天津 (Tianjin). I'm fascinated by Chinese writing systems and their computational implications.

BART Strike

When BART service was stopped due to two strikes in 2013 I organized a series of meetups to make visualizations that could help us understand the conflict. A couple of the visualizations developed by participants were used in news articles.


As I develop visualizations and learn new web programming techniques I practice with small examples collected in my bl.ocks.
I've written about my practice here.

Future work
I'm interested in working on new products and visualizations that help people implement and understand complex, data-related systems and workflows. The following diagram attempts to capture where I'm most valuable in the process of creating a new product or visualization:

I've found I am most effective early in the product-development process, especially in the prototyping phase. The diagram shows the progression of an idea to Minimum Viable Product as I see it. Often times the first question to follow an interesting idea is "Could this work?", and my favorite thing to do is figuring out if it could. After figuring out that it does indeed work, the hard but neccessary part for me is developing the functional prototype into some sort of minimum viable state that can be consumed by other stake-holders in the project. There is of course still a lot that needs to happen before a product can ship, but ideally I'm prototyping the next idea.

Interested in involving me in this part of your process? Reach out at