I explore creative curiosities and big social issues with code. I’ve used Node, Express, Next.js, React, GraphQL, SASS, P5, PostgreSQL, MongoDB, and other technologies to bring narrative to data and help communities better understand their past, present, and future.


Trans Legislation Tracker

This data visualization project tracks 170+ anti-trans bills moving through 30+ states in 2022. Aggregating data from the ACLU, HRC, Freedom for All Americans, and expanded upon through independent research, the site aims to be the most complete public record.



  • NBC News

  • Vice News

  • Them

  • Cambridge University Press

  • + More

Next.js • Vercel • React • Custom charts • Data analysis • Legiscan API • Interviews & Research

Trans legislation data story

Data visualization story about the rise of anti-trans legislation and the record-breaking legal challenges to trans rights faced in 2021.


Data analysis • React • Custom charts • CI/CD

Music Club: Quarantine Edition

When we couldn’t meet up in person for our music club in 2020, I created a site powered by a shared Google Sheet. The site then connected our song picks with APIs from Spotify & Youtube. This site allowed us to share songs, memories, and a bit of hope in a dark time.


Node.js • Express • React • Spotify API • React-Materialize


I’m a contributor to Artbreeder (formerly GANbreeder), a collaborative artistic platform that uses BigGAN to connect artists and explore high complexity spaces.

Node.js • BigGAN • Pug • PostgreSQL • Knex • AWS S3

(sub)mission control

Helping Submittable users explore their submissions, successes, expenses, and more! View the code on Github

Node.js • React • Custom Illustrations • Heroku


A place for literary data that can help writers understand the fiction marketplace.

Node.js • React • Highcharts • React-Bootstrap • MongoDB • Heroku

American Lynching

This American history project received 2nd place in the National Endowment for the Humanities Chronicling America Data Challenge. This project combines the Library of Congress newspaper API with landmark lynching datasets from the past 100 years. Users can see articles and opinion pieces form their own state or explore documented lynching cases that lead them directly to primary sources.

Chronicling America API • Highcharts • Bootstrap • Custom Maps

MIDI Collaboration

Play music online with friends! Real-time MIDI collaboartion with USB controllers. Custom 80s themed UI for a throwback feel. • Node.js • Express

Wichita Bridges

Wichita Bridges creates an interactive map from the location and notes over at

“How to scrape with Ruby and Nokogiri and map the data” published with Free Code Camp and featured on TechBurst’s “Ruby on Rails Top 10 Articles”

Nokogiri • Ruby • Google Maps

ProPublica API

An API for ProPublica’s “Spending at Trump Properties” data. It accpets queries by date, property, spender, and other properties, returning data about political and taxpayer spending at Trump Properties.

Google Cloud – Endpoints • Chai Unit Testing • MongoDB • Swagger Documentation • Node.js • Express

Citizen Complaints

Visualizing Cincinnati Police Department complaint data by race, gender, and neighborhood.

SODA API • Custom SVG • ChartJS

Annotation Genius

Adding Genius-style markup to web documents! It’s fast, simple, and comes ready with custom CSS. See it in action on Vimeo.


NYT Best Sellers List

Pairing the New York Times and Google Books APIs to create a visually engaging list. Tutorial published with Free Code Camp.

Google Books API • NYTimes API • JavaScript

Terminal Game

I presented a lecture on Ruby & CSV at Ada Developers Academy in Seattle. This terminal game uses a few gems to illustrate Ruby’s CSV library methods and have fun with planetary data!



“How to see your React state & props in the browser” — Free Code Camp

“How to scrape with Ruby and Nokogiri and map the data” — Free Code Camp (TechBurst’s “Ruby on Rails Top 10 Articles”)

“How you can build a terminal game with CSV and Ruby” — Free Code Camp

“Build a Best Sellers List with New York Times and Google Books API” — Free Code Camp

“How to Build a Collaborative MIDI App with Express.js &” — Hacker Noon & republished by The MIDI Association