I'm the data and graphics editor at The Trace, where I develop interactives, newsroom tools, and more. Before that, I was the web editor of The Phnom Penh Post. My work has also been published in The New Yorker, FiveThirtyEight, USA TODAY, Slate, and The Daily Beast. I live in Toronto.
Explore Nearly 2,000 Gun Dealer Inspection Reports
The Trace / USA TODAY • May 2021
For this investigation into the federal government's failure to regulate gun dealers, co-published with USA TODAY, I also parsed and analyzed thousands of pages of documents in Node and R, and then published them in this interactive database built with Sapper and Airtable. I produced explanatory scrollytelling components for the main feature story using Svelte. Shortly after publication, Congressional Democrats introduced legislation to tighten the penalties for lawbreaking gun dealers.
A Historic Surge in Gun Violence Compounds the Traumas of 2020
The Trace • December 2020
This story was an attempt to make sense of the surge of gun violence that accompanied the social upheavals of 2020. Centering the perspectives of violence prevention workers and members of communities that bear the brunt of gun violence, it also incorporates national and city-level crime data and rich photography to create a holistic picture of the toll guns took in 2020.
How Much is the NRA Spending to Reelect Donald Trump?
The Trace • August 2020
The NRA is facing unprecedented turmoil, but that hasn't stopped the group from spending millions of dollars to back Trump and other Republican candidates in the 2020 election. Using data from ProPublica's Campaign Finance API, I built this tracker to monitor the NRA's independent expenditures in real time. Behind the scenes, an AWS Lambda function periodically checks the API for new entries and writes them to a MongoDB database, which gets dumped to a S3 as a JSON file. On the frontend, the single-page application is rendered with Svelte.
How Many Guns Did Americans Buy Last Month?
The Trace • August 2020
The FBI's monthly gun background check data became major news amid 2020's coronavirus fears and social unrest, but the top-line numbers lack important context. To give readers a clearer picture of the trend, I built this gun sales explainer and database, using the raw FBI numbers to produce seasonally adjusted sales estimates at the national and state level. My analysis draws on the work of economist Jurgen Brauer, as well as prior analyses by BuzzFeed News and The New York Times. The project updates on a monthly basis as new data is released.
Personal • July 2020
Svelte has been my go-to framework for a few years now, and I recently created this small library which provides an idiomatic wrapper component for the <canvas> element. Users can create layer components that encapsulate individual portions of the canvas, and write reactive render functions that redraw whenever the variables that they depend on change. The library enables canvas-based interactive visualizations to be built using familiar Svelte conventions.
Gun Shops Flouted State Closure Orders in April as Industry Notched Another Big Month
The Trace / USA TODAY • May 2020
In the early days of the pandemic, five states declared gun dealers nonessential under their stay-at-home orders. Federal background check data revealed that gun sales continued in all of those states. Reporting with my colleague Champe Barton, we found a pattern of stores openly defying shutdown orders, and states hesitant to take action against them. This story was co-published with USA TODAY.
Fireproofing the Future in California
The New Yorker • February 2019
I created two maps for this New Yorker/Van Alen Institute video about California's wildfire epidemic, one showing the extent of wildfire footprints around Santa Rosa and one illustrating wildfire risk zones statewide. I pulled geospatial data from CAL FIRE and the US Census Bureau, processed it in R using the sf library, built the maps in D3 using shaded relief layers from SRTM, and delivered them as SVGs to an animator who produced the final visuals that appeared in the video.
The Trace • February 2019
This project, which tells the stories of more than a thousand children killed by gun violence, was a huge collaboration between The Trace, The Miami Herald/McClatchy, and more than 200 student journalists, with a standalone website built by Upstatement. I worked closely with the Upstatement team and fellow Trace staff to conceive the design and functionality of the project site — my contributions included key features such as the category-driven navigation and star motifs. I also coordinated a team-wide push to prepare the site's content for production in Google Docs and AirTable.
America’s Gun Stores Are Easy Targets for Thieves
The Trace / The New Yorker • February 2019
I worked with reporter Brian Freskos and The New Yorker's digital team to create two Mapbox maps for this multimedia feature built in React. The first illustrates ATF crime gun traces by connecting states with swoopy arrows, which were drawn with Turf.js and baked out to GeoJSON files. The second uses a scroll-driven flyover to explore the locations where several dozen stolen guns were recovered.
An Atlas of American Gun Violence
The Trace • December 2018
Using a dataset provided by Gun Violence Archive, I built this interactive map of more than 150,000 shooting incidents spanning five years. To tackle the challenge of smoothly mapping that many points, I used the incredibly performant deck.gl library along with Mapbox, React, and Redux. A search feature shows users the number of shootings in their vicinity by linking the Mapbox geocoding API with Turf.js's geospatial analysis tools. I did a Q&A about this project that was published on Mapbox's Points of Interest blog.
The CDC Says Gun Injuries Are on the Rise. But There Are Big Problems With Its Data.
The Trace / FiveThirtyEight • October 2018
Sean Campbell and I teamed up with FiveThirtyEight's quantitative editor Mai Nguyen to investigate the flawed approach used by the CDC to generate estimates of nonfatal firearm injuries. We developed a methodology for comparing the trends indicated by the CDC's data with those in other public health datasets, and found that the high degree of uncertainty around the CDC's estimates had serious implications for public health research in the United States. This article and its follow-up prompted a group of senators to demand answers from the Secretary of Health and Human Services about the CDC's data quality issues.
The Mystery Firm That Has Become the NRA’s Top Election Consultant
The Trace / Politico • July 2018
For Mike Spies' story on the NRAs's dealings with its top election contractor, I created charts and an interactive explainer to illustrate the convoluted scheme. The reporting and subsequent follow-ups led to a congressional investigation into the NRA's relationship with the firms. The article and accompanying graphics were also published in Politico.
What Members of Congress Do — and Don’t — Say After Mass Shootings
The Trace • February 2018
After the Parkland shooting, I wanted to find out how prevalent the widely mocked phrase "thoughts and prayers" actually was. So I used ProPublica's Congress API to find the text of more than 800 statements released by members of Congress in the aftermath of mass shootings. My analysis found that two-thirds of all the statements contain the word "pray" — and also that Marco Rubio is the only Republican ever to utter the words "gun control" after a mass shooting. As the final step of the interactive, built with D3, a search interface lets users query the data themselves.
Rising Firearm Theft Is Quietly Fueling Violent Crime
The Trace / NBC • November 2017
The Trace's Brian Freskos launched an enormous investigation into gun theft by requesting data on stolen and recovered guns from hundreds of law enforcement agencies around the country. I helped to clean and analyze that data, writing scripts to normalize hundreds of spelling variations, identify errors in serial numbers, and comb through the records to match stolen and recovered firearms. We partnered with more than a dozen NBC stations, who used the data, as well as graphics I produced, to report on gun theft in cities around the country. We also published the raw data. This project was awarded Best Reporting by Independent Digital Media at the 2018 Deadline Club Awards.
Personal • October 2017
As I was reading Liu Cixin's The Three-Body Problem, I wanted to get a better understanding of the mechanics of the actual three-body problem. So using three.js, React, and a dim recollection of physics I learned in a college astronomy class, I built a little website to simulate it. You can see the code for the project on GitHub.
Visualising Cambodia's national budget
The Phnom Penh Post • November 2016
In Cambodia, public data is scarce and often difficult to access. When I got ahold of four years of national budget figures, I built this interactive budget explorer to make the data available as a public resource.
The changing face of Phnom Penh
The Phnom Penh Post • July 2016
The city of Phnom Penh is being dramatically — and often violently — transformed by large-scale construction and land reclamation projects. For this interactive, I created immersive time lapses of Google Earth satellite imagery to illustrate the city's astonishing pace of growth. A locator map built in Mapbox provides geographic context.
Only 20 percent of PM's recent Facebook 'likes' from Cambodia
The Phnom Penh Post • March 2016
In 2016, Cambodian Prime Minister Hun Sen was engaged in a Facebook popularity war with then-opposition leader Sam Rainsy. Using data from a social media analytics site, I discovered that hundreds of thousands of the Prime Minister's Facebook likes had come from countries outside of Cambodia, such as India and the Philippines. The story sparked international coverage and led to a legal dispute that between Sam Rainsy and Hun Sen that is still ongoing. This article was also published in Khmer.