SOS Website


Home page of the Science On a Sphere Website

I designed and built a new website for Science On a Sphere™ (SOS), replacing an old website that had grown to span multiple databases, a two Django applications, PHP, and hand-coded HTML. The new website is statically generated using Eleventy, with some AlpineJS used to provide interactivity in the dataset catalog.

I met fortnightly with the rest of the SOS team to review the changes I’d made in that time and get their feedback. Over the course of less than a year—with me working half-time—we designed, migrated, and launched the new website.

Stream Attribution


A Sankey diagram indicates how users navigate from the home screen of the Spotify mobile client to find a track to stream

I designed this tool for data scientists, product owners, and designers at Spotify to explore how Spotify’s listeners navigate the various clients to find something to stream. It provides both a high level summary of how many streams can be attributed to any page, and a detailed view of steps taken by users to reach a stream. The application helps its users understand how the Spotify clients are used by listeners so that they can make better product decisions.

Polio Dashboard


A mockup of the printable performance dashboard designed for UNICEF's Polio eradication efforts showing over thirty different indicators tracked in Nigeria

At Seed Scientific, I worked with UNICEF to design and develop a tool for tracking the key indicators used to monitor UNICEF’s polio eradication efforts in Nigeria. At the time, Nigeria was one of three countries — along with Pakistan and Afghanistan — in which wild polio virus still circulated. (In 2020, the WHO certified Africa as being free of wild polio.)

The dashboard displayed over thirty indicators and needed to highlight trends in each one. In addition to being interactive on the web, the dashboard also needed to be printable on a single sheet of paper so that it could be used as a hand-out for leaders of the polio eradication initiative during briefings.

Energy Capture Map

Student Project

A map of the world covered by horizontal bands in green (corn) and magenta (sugar cane), indicating the amount of energy produced by each crop. Below the map is a scatterplot of the same data

“Energy capture” is a measure of the amount of energy per hectare produced by a crop. Using this measure to compare the energy efficiency of corn and sugar cane, we can see how each has evolved to grow at different latitudes. Sugar cane (pink) is more efficient in equatorial regions, whereas corn (green) has evolved to grow more efficiently further north.

The map uses colored bands to indicate the amount of energy capture for each crop at different latitudes. Higher energy captures are presented as darker colors. The scatterplot shows the data points from which the map was generated. The red line represents a minimum threshold of energy capture, below which data is not shown on the map. Thus, users can set a minimum energy capture for crops on the map to see how that affects where in the world those crops could be grown.

Jigs: Visualized

Student Project

A network of red circles each representing one jig connected to other jigs by white lines against a black background

This data visualization attempts to show how much similarity exists in a corpus of Irish jigs taken from The Session, an online database of Irish tunes.

Each tune is represented as a node in a graph. Similarity is calculated for a pair of tunes as Levenshtein distance between the ABC notation for each of the tunes. If the similarity is above a threshold, an edge is created between the two tunes. The higher the similarity, the stronger the force on that edge, drawing the two nodes closer together. Each node is sized according to the weighted degree of that node: the larger the node, the more tunes it’s related to.

Be a Tree

Student Project

My final piece for Golan Levin’s Interactive Art & Computational Design wherein the viewer is transformed into a tree while standing in front of the piece with arms raised. The body forms the trunk, and the arms form large boughs, as branches sprout from the viewer and eventually grow blossoms at their tips. Built using openFrameworks, the piece uses OpenNI to detect the viewer’s pose and place branches along the torso and arms.