Hello there!

Associated Press Interactive News Editor
(Sept. 2022 — Feb. 2024)

Doubled an incredible team of developers and designers, implemented two-week sprint cycles and Agile ceremonies, and mentored creative engineers to make engaging features for longform and live event journalism.
Skills: Code & Story Editing, Technical Strategy, Scrum, Core Web Vitals, Design Systems


AP News 2022 Midterms (editor)

AP News 2022 Midterms

Triaged bugs, prioritized backlogs, and managed stakeholder expectations along with technical debt across the globe leading up to and throughout election night.

"Thousands of kids are missing from school. Where did they go?" (editor)

"Thousands of kids are missing from school. Where did they go?"

Coordinated with developers, researchers, and stakeholders to on a custom React presentation via Asana and leveraging design critiques and code reviews.

The Atlantic Senior Software Engineer, Reader Experience
(Nov. 2019 — Sept. 2022)

Created and collaborated on award-winning features, rebuilt the website, and published enterprise stories biannually, focusing on media elements, accessibility, and performance.
Skills: TypeScript, Canvas, Next.js, Svelte, GraphQL, Django, SEO, Next-Gen Images & Video


"The Secret History of Family Separation" (senior developer)

"The Secret History of Family Separation"

Worked closely with developers, designers, art directors, and editors to produce the Pulitzer-winning story in English and Spanish by ensuring the custom Next.js code was responsive and performant.

Shadowland (lead developer)


An interactive hub built in Svelte for digital and print stories about conspiracy theories in America featuring canvas animations and a secret 3D timeline.

Axios News Products Senior Developer
(Jan. 2017 — Oct. 2019)

As the first full-time engineer hired, I constructed CMS features and API endpoints to embed interactive graphics. Built Axios' first election graphics framework and maintained election microservices.
Skills: React, Next.js, Jest, GraphQL, Django Rest, AWS Lambda, Jenkins, ai2html


Eden (developer)


A CMS designed for efficiency and made with empathy for visual journalists integrated with the Django Rest API using OEmbed and GraphQL.

2018 Midterm Elections (developer)

2018 Midterm Elections

Developed microservices (data fetcher & automated screenshots) using AWS Lambda for dozens of live primary and election results embeds and synchronized updating graphics on Apple News

Vocativ Interactive Producer
(Jun. 2015 — Nov. 2016)

Ran data analyses and published visualizations for one to two stories weekly and engineered newsroom tools and applications every two weeks.
Skills: D3, Sass, Electron, Pitching & Reporting


DataProofer (lead developer)


A downloadable command line app and desktop app (deprecated) for proofreading spreadsheets funded in part by the Knight Foundation.

Death Day (lead developer)

Death Day

Choose your adventure in this animated, mobile-friendly interactive story.

The Marshall Project Interactive Reporter
(Sept. 2014 — May 2015)

Programmed biweekly interactive graphics about the criminal justice system and reported on and researched digital crime. While there, I gathered data and developed contacts within the system: researchers, lawyers, advocates, and government officials.
Skills: D3, CSS, R, Pitching & Reporting


Shifting Away from Solitary (reporter/developer)

Shifting Away from Solitary

More states have passed solitary confinement reforms in 2014 than in the past 16 years. Created SVG elements that I animated with a JS timer function to help visually tell the story

A Pirate's Booty (reporter)

A Pirate's Booty

The Feds acquire a confusing asset: Bitcoin. I used R to find the story of a complex asset seizure and created a custom graphic to accompany it as I did the reporting.

ProPublica Web Producer
(Feb. 2013 — Sept. 2014)

Designed custom story layouts weekly and commissioned photos and illustrations for stories co-published with the New York Times Magazine, Boston Globe, Daily Beast, and VICE. Specific engineering contributions included improving article QA tests, developing a CSS grid for homepage redesigns, and templatizing story elements such as timelines, inserts, and sidebar graphics.
Skills: Web Design, Typography, HTML, CSS, Ruby


For a Respected Prosecutor, an Unpardonable Failure (producer)

For a Respected Prosecutor, an Unpardonable Failure

Created a custom article using a few reporting images to help tell the story of a prosecutor who convicted an innocent man.

The Military is Leaving the Missing Behind (producer)

The Military is Leaving the Missing Behind

Coordinated with reporters and graphics developers to produce a custom feature article with interactive elements about the military's failure to give families closure.

Mapbox Data Analyst
(Oct. 2013 — Feb. 2014)

Reverse-engineered enterprise sites with custom, open-source mapping software for clients such as Foursquare, Mozilla, and DuckDuckGo. After downloading a client's website, I'd create working mockups for clients with new maps designed by other team members.
Skills: GIS, Node.js, HTML, CSS, Bash




Integrated web maps into Mozilla's Location Services, a project to provide geolocation lookups based on cell tower and WiFi access point information.



Demonstrated how to use Mapbox.js to create custom branded maps with Foursquare data which later went on to become the official maps of FourSquare.

NPR Visuals Intern
(Jun. 2013 — Aug. 2013)

As an intern, I pair-programmed NPR's largest news app—its responsive editing interface, routes for reading and writing data, and an embeddable widget for member stations. For that summer, I learned key concepts like object-relational mapping, routing delete requests, and data validation.
Skills: HTML5, CSS3, JavaScript, Python


Playgrounds for Everyone (developer)

Playgrounds for Everyone

A community-edited guide to inclusive and accessible playgrounds for parents.

Houston Public Radio Intern
(Dec. 2012 - May 2013)

Co-produced stories for the web, created graphics in R, as well as shot and edited photos and audio.
Skills: HTML5, CSS3, JavaScript, R


NRA Annual Meeting | 2013 Houston, TX (photographer)

NRA Annual Meeting | 2013 Houston, TX

Photo slideshow

Driving Demand for Personal Protection (producer)

Driving Demand for Personal Protection

Every year, thousands of Harris County residents apply for concealed handgun licenses or CHLs, with more and more applications being filed since the Newtown shooting.