Journalist at The Lens in New Orleans, where I work as a reporter, developer and designer.
March 5, 2016
March 5, 2016, Louisiana presidential primary

Displaying live election results for Louisiana's presidential primary on a precinct-level map of the entire state. This required a healthy amount of data cleaning and geographic processing in order to make sure all 4,000 precincts were accurate and had the same name formats as the Secretary of State's vote results data. This was my first time using D3 in a production environment.

Tools: Bash, D3, GDAL/ogr2ogr, JavaScript, Make, Python, QGIS, S3, TopoJSON
Jan. 6, 2016
Property tax calculator

Tells readers how a proposed tax increase would affect their tax bills.

Tools: JavaScript
Nov. 21, 2015
Nov. 21, 2015, election results app

Live election results for Louisiana's general gubernatorial election, expanded to offer precinct-level details in six parishes. This project was the subject of a successful Beacon Reader crowdfunding campaign.

Tools: GDAL/ogr2ogr, JavaScript, Leaflet, Make, Python, QGIS, S3, TopoJSON
Oct. 24, 2015
Oct. 24, 2015, election results app

Live election results for Louisiana's primary gubernatorial election.

Tools: GDAL/ogr2ogr, JavaScript, Leaflet, Make, Python, QGIS, S3, TopoJSON
Aug. 27, 2015
Missing Home

Combines text, photos and interactive design to present the stories of planned and unexpected demolitions in New Orleans following Hurricane Katrina. The project drew on FEMA databases, archived photos, new photography and on-the-ground reporting.

Tools: JavaScript, Jinja, Leaflet, Make, Mapbox Studio, Python, S3
Dec. 6, 2014
Dec. 6, 2014, election results app

Live election results for Louisiana's general congressional election.

Tools: JavaScript, Leaflet, Python, QGIS, S3, TopoJSON
Nov. 4, 2014
Nov. 4, 2014, election results app

My first and The Lens' second foray into live election coverage for New Orleans and Louisiana.

Tools: JavaScript, Leaflet, Python, QGIS, S3, TopoJSON
Sept. 13, 2014
Property sales tracker

Combines a daily, automated web scraper with a back-end database to show past and present property sales.

Tools: Flask, JavaScript, Leaflet, PostGIS, PostgreSQL, Python, SQL Alchemy, web scraping
June 30, 2014
Best bars in New Orleans

The online component of Gambit's annual Best Bars issue, presented as an interactive quiz to differentiate between the different types of bars.

Tools: Google Sheets API, JavaScript
June 12, 2014
Government contracts tracker

A web scraper that grabs all of the City of New Orleans' new contracts and stores them in a fully searchable archive.

Tools: DocumentCloud, Flask, JavaScript, PostgreSQL, Python, S3, SQL Alchemy, web scraping
Oct. 22, 2013
Meth use on rise in Illinois

For my master's degree final project, I investigated the ebb and flow of methamphetamine production in Illinois. I wrote the stories and produced the data visualizations and worked with the local NPR and PBS affiliates as they produced follow-up radio and TV pieces. The radio story went on to win the Edward R. Murrow Award for best investigative reporting in a small market (2014).

Tools: Google Maps API, JavaScript
Aug. 25, 2013
Best of New Orleans 2013

The online presentation for Gambit's annual Best of New Orleans issue.

Tools: Google Maps API, JavaScript
Side projects

Various visualizations I've created while practicing D3.

Tools: D3, GDAL/ogr2ogr, Make, TopoJSON
Geographic data

A fully scripted data processing pipeline for various geographic shapes in Louisiana. The GitHub repository is constantly updated, and features Shapefile, GeoJSON and TopoJSON file formats. This speeds up graphic development and allows for easier customization.

Tools: GDAL/ogr2ogr, Make, Mapshaper, PostGIS, PostgreSQL, TopoJSON
M.S., news-editorial journalism
University of Illinois
B.S., structural engineering
University of Illinois