Experiments

2026

Project timelines that don't suck

Cursor.ai html css javascript

I found creating project timelines in Google sheets, Coda, Notion, or similar tools tedious or annoying, so I decided to see if I could roll my own little timeline creator. I tried to take some of the best parts of music and video sequencers like Ableton Live and Adobe Premiere. I was also on a mission to make creating and editing timelines quick and easy (hello keyboard shortcuts).

Timelines app preview Make a stupid Gantt chart →
2025

Audio frequency response graph in D3.js

D3.js Cursor.ai Xcode
Audio frequency response chart
2025

Volume slider on iOS

Cursor.ai Xcode

Design in Figma only takes you so far. The best volume slider imaginable needs to be sculpted with the exact device material, in this case iOS, including haptic feedback (of which there are actually quite a few permutations)

2020

Sentence combiner

html css javascript

An attempt to use sentence structure for exploring data. Inspired by Bret Victor's statement that words and sentences are one of the oldest ways for humans to understand information.

2019

Salary benchmarking with D3.js

D3.js html css javascript

A salary benchmark tool intended as a way to make generalized industry salary reports personalized and relevant to the reader.

2019

AQI.fyi: Beijing air quality visualized

html css javascript

In Beijing, the air quality is the weather. But to stay in that analogy, is the climate improving? That's what I wanted to find out. This was also my first foray into visualizing data with D3.js.

AQI.fyi Beijing heatmap visualization AQI.fyi →