Mostly data + web dev here.

Texas Redistricting

Texas Tribune I worked with reporters to design and produce an interactive visualization, which demonstrated how Texas's 35th Congressional District violated the Voting Rights Act.

QGIS, Mapbox, d3

Vote Tracker

Texas Tribune I helped create an app that allowed reporters to easily track and visualize votes on Texas legislation from a Google Spreadsheet.

Nunjucks, Google Spreadsheets

Javascript Frameworks

Side Project I trained a neural network to generate new Javascript framework names. Some of them were pretty neat!

Torch, Amazon EC2, BeautifulSoup

Special Session Cost

Texas Tribune Analyzed and visualized the cost of the upcoming Texas special session (plus, it's adjusted for inflation for extra transparency!).

JS, d3


Side Project Worked with Eunice Lee and Bomani McClendon to design and create Waves, a Raspberry Pi project centered around transforming the transience of the spoken word into something concrete and physical. This project was debuted at the Segal Design Expo, and featured on the Raspberry Pi blog!

Python, JS, Flask, Raspberry Pi


Side Project Built a Chrome Extension that replaces monetary values on web pages with the equivalent number of avocado toasts, since that's what millennials are all into these days.

JS, Chrome Web Tools

Court Vacancies

Texas Tribune Created a visualization of the court vacancies remaining in Texas.

JS, d3

Summer Meals

Texas Tribune Cleaned and analyzed data on summer meals programs for a reporter, and visualized the trends in Texas's decline in its summer meals program.

JS, d3, Python

RideAustin Analysis

Texas Tribune Created a visualization pinpointing the drop in RideAustin ridership after Uber and Lyft returned to Texas.

JS, d3


Side Project Built at the Propublica Vital Signs Hackathon, Eunice Lee and I created a Facebook messenger bot that helps college students find mental health specialists nearby. This project won best use of the Better Doctor API and the Yelp API! We also wrote a writeup of the project here.

JS, Node, Express, FB Messenger API


Side Project NEWSounds is a data sonification experiment that imagines what the news sounds like. Using features including random seed generation, sentiment analysis, and topic categorization, I mapped headlines from the New York Times into music and an accompanying visual display.

HTML, CSS, JS, Tone.JS, Node, Express, NYT API

Chicago Marathon Visualization

Research Worked with a team of researchers to develop a data visualization system for the Chicago and Houston Marathons using the LAMP stack. I was involved with the design and development of the entire system, which features race simulations from previous years, real-time data incorporation (I built a separate Selenium scraper for the Houston Marathon), and the visualization and display that would be shown in forward command on race day. This research project is still ongoing.

JS, d3, PHP, Python, MySQL, BeautifulSoup, Selenium

Northwestern Soundscapes

NBN A collection of the everyday sounds on Northwestern's campus. I led the design, development, and audiovisual components of this piece.


Check Mark

Meedan Worked with Meedan to build a browser extension that allows users to use Check - Meedan's crowdsourced news verification tool - without navigating to the Check webapp itself.

JS, React, Redux, GraphQL, Chrome Web Tools

This is Not (a) Normal Todo

Side Project Chrome extension experiment on motivating myself and others to participate more in civic engagement, in wake of the 2016 election.

HTML, CSS, JS, Chrome Web Tools


Side Project A dumb Slack bot to make bad goat puns. It's pretty easily modifiable to other text replacement applications, though!

Python, Slack API


Class SnailPost is a mobile communication app designed to bring back the sense of slow, thoughtful satisfaction of snail mail, in an era where most communication is built upon instant gratification. Three classmates and I co-developed this app in conjunction with clients from Northwestern's Masters in Product Design program.

AppGyver Supersonic, AngularJS, Firebase

When should you go to the gym?

NBN An interactive look at the busiest times to go to Northwestern's gyms.

JS, d3

Lost in translation

NBN I worked with a writer to develop a story focused on students for whom English is not their primary language.


When should you do laundry?

NBN Take two of visualizing Northwestern's busiest facilities - this time, the laundry machines. I used a Python scraper to retrieve the data from LaundryView, then built the visualization with d3.

JS, d3

Radio Drama - Influential Friend

NBN Developed an audio/text piece with NBN's Writing Section focusing on influential friendships in college.


Winter weather recap

NBN A glance at an unusually warm weather in Evanston. I gathered weather data from the National Weather Service, and visualized it in d3.

JS, d3

Tracking the transfers

NBN A chord-diagram visualization of Northwestern's interschool transfers. The data and idea was provided by another NBN staffer, and I created the visualization.


Valentine's Day Emojis

NBN Made a fun little Valentine's Day page with NBN's Life and Style Section.


Northwestern Eateries

NBN Helped the current NBN Interactive Editors develop and compile a guide to campus eats.