Data visualization

Obama Garland Congress salary realtime counter

Realtime cost of leaving a Supreme Court seat vacant (Fusion)

I made a realtime graphic showing the number of days since President Barack Obama nominated Merrick Garland to the Supreme Court versus how much salary Congress has collected since then. The graphic updates every second.

Fusion Millenial train

Millenial Train (Fusion)

I animated a train route across America for a Fusion article about a cross-country rail trip taken by 18- to 34-year-olds who volunteer on projects at cities along the way. I used D3.js and plain Javascript to draw the rail route as the reader scrolls through the article.



Datavizz is where I make and post data visualizations in my spare time. Mainly D3-powered, I’ve made charts and graphs about subjects like data journalism or the gender pay gap in America. maps data on average wealth, rent and other demographics in every neighborhood in America

Rich Blocks Poor Blocks shows income, rent and other demographic data for every neighborhood in America.

I built this mobile-friendly site from scratch with PHP, HTML, CSS and Javascript. I made the maps with Google Fusion Tables and Google Maps Javascript API. Data comes from the U.S. Census.

pbc 2014 parcel map

Palm Beach County property values map 2014 (Palm Beach Post)

An interactive map showing property values in Palm Beach County, and how they changed from 2013 to 2014. I helped clean data for this map, which won a Sunshine State Award from the Florida chapter of the Society of Professional Journalists.

Web scraping

Metacritic web scraper image

Metacritic videogames scanner

This web scraper gets information on critic and gamer reviews from video game review aggregator A shell script splits the script into many different instances, each of which targets a different video game system. The script pauses occasionally so it does not overload Metacritic’s servers.

Florida flag

Florida political finance webcrawler

Webcrawlers that scan millions of campaign donation records for state-level races and put the info in a MySQL database. logo

Lyrics webcrawlers

Three web scrapers I wrote for German marketing firm Trendgroup GmbH. The scripts downoaded almost a million lyrics from, and Lyrics Wikia.

Palm Beach County logo

Palm Beach County (Fla.) political finance web scraper

These Ruby webcrawlers get thousands of political donation/expense records from the Palm Beach County Supervisor of Elections website and putting the data in a MySQL database. logo just-sold web crawler

Ruby-powered web scraper that scans thousands of auction records from web domain-flipping site The script puts the data in a MySQL database.

Source: web scraper

Crawls through thousands of drug test results from and puts the info in a SQLite database. For each pill, the script finds info on what substances were found and how much of it was found.

Reporting and writing

Boynton Beach, Fla. resident Byron Harris was accused of ramming his car into a cop in October 2014 and leading police on a high speed chase. Harris said that after the chase, officers beat and Tasered him. (Source: Palm Beach County Sheriff's Office)

Man accused of hitting Boynton officer with car says cops beat him (Palm Beach Post)

I obtained unredacted police reports detailing how Boynton Beach (Fla.) officers in August 2014 went on a 100-mph chase to apprehend Byron Harris, accsued by his passengers and police of crashing into an officer. Once police caught up with Harris, they punched, kicked and Tasered him and his passengers.

Chaz Stevens talks with reporters after setting up his Festivus pole made out of beer cans at the Florida Capitol building in Tallahassee, Fla., Wednesday, Dec. 11, 2013. Stevens placed the pole across from a Nativity scene. Since Florida considers the Statehouse rotunda to be a public forum, people can use the space to express themselves or protest, as long as they first apply with a state agency. (AP Photo/Brendan Farrington)

Satanic invocation could be coming to Lake Worth commission meeting (Palm Beach Post)

Preston Smith led an atheist invocation at a Lake Worth (Fla.) city commission meeting, and four commissioners walked out on him. Afterwards, another atheist named Chaz Stevens said he wanted to do a Satanic prayer to show that invocations are ridiculous.

Palm Beach County Commissioner Melissa McKinlay. Source: Madeline Gray/Palm Beach Post.

McKinlay’s $387,478 appears to set commission fund-raising record (Palm Beach Post)

I scraped all donations to 2014 Palm Beach County Commission candidate Melissa McKinlay. My analysis showed McKinlay raised a record amount of money for a county commission race.

A big chunk came from one of the world’s biggest sugar companies, a local billionaire family, a trash-hauling company, lawyers and developers wanting to build on restricted farmland.

Poll worker error disenfranchises voters in close Lake Worth (Fla.) election

Poll worker error disenfranchises 14 Lake Worth voters (Palm Beach Post)

Lake Worth (Fla.) had a close election in August 2014 to decide on raising taxes to fix most its roads. It failed by 25 votes. Fourteen provisional votes got rejected because poll workers messed up their paperwork.

Homeless Panhandler

Lake Worth panhandling ban would be unconstitutional, says ACLU lawyer (Palm Beach Post)

Lake Worth (Fla.) passed a big panhandling ban covering busy parts of the city. But the ban unconstitutionally banned constitutionally-protected speech, ACLU lawyer James Green said.


Who can I blame for high gas prices? (Bankrate)

Using data on oil demand, the strength of the U.S. Dollar, and gas prices, I show how speculators, oil supply shocks, taxes and a cheap dollar affect gas prices.


10 Cities That Have Been Getting More and More Gay (South Florida Gay News)

Using Census data, I figured out each city’s unmarried gay-couple-to-straight-couple ratio in 2000, subtracted it from their 2010 ratio, and ranked places by going from biggest increases to smallest. I included only towns with a 2010 population of at least 100,000 in order to control for city size. I interviewed local LGBT figures from the top-ranked towns to get their opinion on why their cities’ gay populations increased. Fort Lauderdale, where South Florida Gay News operates, came out at number one.