I started this blog at NBC Bay Area to showcase some of my less tv-centric data visualizations and to provide a venue for deeper dives into investigative stories.
This map accesses the USGS API to bring an always up-to-date view of earthquakes in the immediate Bay Area. User interactions on the table update the map’s view and vice-versa.
An animated “square-bin” style country choropleth that shows changing laws on same-sex marriage across states. The binning reduces some visual bias by equalizing the size of each state. The animated slider shows the change over time.
This story analyzes a huge federal dataset that indicates how much military gear each state has obtained through the “1033” Department of Defense program. Features an interactive map and an interactive chart, both in D3.js.
This month-long investigation into drinking-water infrastructure required several public records requests for geographic data. The map has many features for data exploration including a search box with on-the-fly geolocation and a range slider to subset the data.
This collection of “small multiples” provides easy comparison across two categories: place and year. The bar charts, written in D3.js, are “linked”, allowing mouse events in one chart to produce effects in all the others.
This story was part of a week-long infrastructure investigation into earthquake safety. Features a complex map with many layers written in Mapbox.js and D3.js.
This story attempts to demystify voter turnout numbers and puts California’s somewhat low turnout in an critical context. Features two graphics in D3.js and was produced on a quick turnaround.
This story expands on the reporting the Investigative Unit began on the danger wildlife can pose near airports. Features two interactive charts in D3.js.
This story is part of a year-long investigation into Silicon Valley labor practices by the NBC Bay Area Investigative Team and the Center for Investigative Reporting. Features data obtained through a web scraper I wrote in Python, and a small, interactive map in D3.js. Required a FOIA request and significant data cleaning using CSVkit, SQL and Open Refine.
This story was produced in partnership with the Center for Investigative Reporting. We scanned and analyzed thousands of records by hand to create a searchable database of daycare records.
This story examines the many chemical plumes that dot the landscape of Silicon Valley. Features an interactive map of plume regions using Leaflet.js.
A searchable database of the top 100 worst-offending California companies by wage-claim. Built with my fork of Chris Keller’s well-known tabletop-to-datatables.
In this document-heavy story I take a deep dive into over 800 pages of internal police emails requested by the NBC Bay Area Investigative Unit. I describe the narrative of the Palo Alto Police Department’s response to a whistleblower investigation and uncover evidence that the department was internally confused about whether or not quotas were in effect.