I joined the Wall Street Journal’s graphics department in 2014 and produced dozens of graphics over eight years. My speciality is web graphics — interactives, news apps and data visualisations.

U.S. Surpasses One Million Covid-19 Deaths

A sombre data visualisation to mark the millionth (recorded) Covid-19 death in the US. Part of a broader story produced with Jon Kamp and Stephanie Stamm.

How the 9/11 Attacks Remade New York City’s Financial District

A richly-reported visual essay on how lower Manhattan has changed, for the 20th anniversary of the attacks. Made using three.js.

Covid-19 Vaccines vs. Infections

A timely analysis of Covid-19 vaccination rates across the U.S. I used the Python library Pandas to analyse the data and produce a static draft for editing. Once the contents were locked down, I coded this animated version, which uses D3 and an internal scrollytelling framework, Storyboard.

The SPAC Boom, Visualized

This quick-hit graphic was published around the top of the 2020/21 SPAC boom. I produced it using a combination of D3, Adobe Illustrator and ai2html.

How Money Flowed (and Ebbed) at GE

A giant, vertical streamograph rendered using D3. I’m most proud of this piece for the mobile-friendly solution to incorporating annotations into such a dense chart.

Midterm Elections 2018: Live Results

I led a team who worked on this results page, plus live graphics embedded within the WSJ homepage, app and election night liveblog. My biggest contribution to the codebase was the ‘Pachinko’, a novel data visualisation that uses animation in a fun way.

4,925 Tweets: Elon Musk's Twitter Habit, Dissected

I worked closely with Scott and Samarth to find the right format for this analysis of Elon Musk’s tweets. We settled on a trendy ‘tap story’ with lot of charts and embedded tweets.

How Facial Recognition Software Works

This interactive explainer uses a JavaScript library called clmtracker for live face-tracking and rudimentary emotion detection. It uses web media APIs that were cutting-edge at the time and so may no longer work correctly in some browsers.