Software engineer based in Chicago.


Worked across engineering teams to isolate customer/developer/QA environments, automate testing in CI pipelines, and increase deployment confidence for Q2 Software’s Helix organization. This included writing tools for load testing and data population, as well as self-service tools that allowed developers to stand up the infrastructure and services for a fully featured environment in less than 15 minutes.

Tools: Ansible, Azure, C#/.NET, Docker, Go, Linux, Nomad, Python, SQL Server, Terraform, Windows

Developed consumer and back-office financial technology products for Q2 Software, including personal financial management and person-to-person payments.

Tools: Docker, JavaScript, Jenkins, Linux, Nomad, Python, SQL Server, Windows
Live election results
Election app

Live election results for Louisiana using precinct-level maps. This required aggregating precinct GIS files from state and parish offices before correlating the maps with precinct-level results from the Secretary of State. On election night, data processing scripts sent results to the front end for constantly updating tables and maps.

Tools: AWS, Bash, GIS, JavaScript (D3, Mapbox, React), Linux, Python
Oklahoma poverty
Oklahoma poverty map

Examining poverty rates across Oklahoma’s census tracts.

Tools: GIS

Election results analysis for Oklahoma’s presidential race and state questions.

Tools: AWS, Bash, GIS, JavaScript (D3), Python (Pandas)
Payment processing
Support Us

Combined Stripe payment processing and Salesforce donor tracking for a donation system for The Lens. The Lens used this page to accept online donations from 2016 to 2019.

Tools: JavaScript, Linux, Python (Pandas), Salesforce, PostgreSQL

This project combined 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, and on-the-ground reporting.

Tools: AWS, Bash, JavaScript (Mapbox), Python
Property sales tracker
Property sales tracker

A web scraper that downloaded New Orleans property sales and a web application that made the archive searchable and visible on a map.

Tools: CSS, HTML, JavaScript, Linux, PostGIS, PostgreSQL, Python (Flask), Selenium
Contracts tracker
Government contracts tracker

A web scraper that downloaded the City of New Orleans’ contracts and a web application that allowed users to search the archive.

Tools: AWS, CSS, HTML, JavaScript, Linux, PostgreSQL, Python (Flask), Selenium
Side projects

A command-line interface for analyzing Pocket data.

Tools: Python
Geographic data

This is a fully scripted geographic data-processing pipeline for Louisiana and New Orleans. It combines a Makefile and command-line tools to download and convert raw geographic data into Shapefile, GeoJSON, and TopoJSON file formats. This was created to eliminate duplicate work and increase development speed for new graphics.

Tools: Bash, GDAL, GIS, PostGIS, PostgreSQL

A collection of data visualizations I have created while practicing D3 and Adobe Illustrator.

Tools: Adobe Illustrator, GIS, JavaScript (D3)
Small Team, Small Budget? Yes, You Can Hire a Developer (ONA)

Erin Skarda and I discussed our experiences with hiring and including developers in newsrooms. We talked about why they are important, why they are worth the investment, and how they can boost the newsroom. Slides. Tipsheet.

Simple mapping with Fusion Tables (IRE)

A hands-on workshop teaching Google Fusion Tables. Tipsheet.

Intro to SQL (IRE)

The introductory portion of a three-part series of hands-on workshops taught by me, Ron Campbell, and T. Christian Miller. This tipsheet covers my portion of the series. Tipsheet.

When Excel isn't enough (IRE)

A presentation arguing the case that journalists should continue to advance their data skills even when they are proficient at Excel. Slides.

Red alert: Tools to automatically generate story leads (NICAR)

Abe Handler, Todd Wallack, and I presented some of our favorite notification tools that assist our reporting and shared the stories that they yielded.

Oklahoma Society of Professional Journalists
  • Interactive graphic (2017-2019)
  • Election coverage (2017)
  • Digital innovation (2016)
  • Web graphics (2016)
  • Investigative reporting (2014)
  • Multimedia element (website) (2013)