Back in February 2012 I installed OpenPaths on my phone after watching this TED talk by Jer Thorp. As a holiday project I thought it would be fun to make a visualization of my 2013 location data. Below is a video of my 2013 data, as well as the JS code for the visualization using Mapbox.js, and a heatmap of my life in NYC. I have also documented how I made these visuals in case anyone wants to make their own.


  1. Download all of your open paths data as csv

  2. Clean up, subset, and format the data (script here)

    I wrote the following R script to minimize the file size as the original file is too large to load client side. The adjustments involved:

    • Deleting replicated points
    • Decreasing the precision of the Lat Lon coordinates
    • Subsetting for only 2013
    • Deleting measurements less than 10 mins apart
  3. Convert into geoJson (script here)

    I wrote a basic ruby script to turn the CSV into GeoJSON Lines that can be loaded as a JS file in the browser.

  4. HTML File w/ Mapbox.js

    The HTML page for the visualization utilizes Mapbox.js. I played around with Mapbox’s set of fantastic examples to learn how the library worked, before combining elements from several tutorials into my own.

  5. Heatmap of NYC

    I also made a heatmap of my life in NYC using Mapbox’s TileMill tool. I loaded the GeoJSON file as a layer, and then used their example code for making heatmaps. The example code doesn’t work with the last public release of TileMill, so I had to download one of the production versions. I also used the basemap plugin, then saved and uploaded the MBTiles to a Mapbox account for sharing.

2013 in 70 Seconds

Animation Of The Past Year

Heatmap of 2013 in NYC

Post Publish Notes

It is interesting how the package I use for dates in R doesn’t actually generate the correct day of the week (ie. it says that December 26th was a Friday).

I increasingly find myself using Uber in NYC primarily for the convenience of e-hailing and not waiting on the street. I oppened the app yesterday to do just that, but didn’t use the service as surge pricing was in effect and the price ridiculous.

However, the effect of surge pricing across their service was fascinating. UberX and Uber were the same price, and an SUV would have ended up being cheaper than both. Rather counter intuitive!

UberX Pricing

Uber Pricing

Uber SUV Pricing

UberSUV had a more expensive base rate, but cheaper per mile and per minute surge pricing.

Over the summer my younger brother and I challenged each other to write an AI for reversi. I finally put up the code I wrote. You can check it out and critique it here:

I am most proud of the fact that the program hasn’t lost to a human yet :)