Andy Eschbacher

Projects

A small sample of projects created over the last couple of years.

Me on the rim of Waimea Canyon

CartoCamp

I’ve been running a meetup to help people learn new skills tangential to making maps and analyzing spatial data. It’s called CartoCamp. We were recently listed as one of the Top 8 Brooklyn meetups for learning technology skills.

Finding Home

Deciding on where to live in New York City can be a daunting task, so I set out to narrow where my wife and I live by using commute time data between block groups that would have small enough commute times. The goal is to find the block groups in New York where my commute by bike is 30 minutes or less, and my wife’s subway + walking commute is 45 minutes or less.

Soon I’ll post the Jupyter notebook I wrote to gather the data. The steps are this:

  1. Get centroids of all block groups in NYC
  2. Get location of place of work for my wife and me
  3. Use Google or Mapzen’s distance matrix service to get the distance for any block group center to the places of work
    • Use bike commute times for block group to CARTO
    • Use walk + subway commute times for block group to my wife’s high school
  4. Translate this data into a tabular format using pandas, adding a column of the combined commute times
  5. Send to CARTO and make a dashboard

cartoframes

I’m currently writing a Python package for integrating CARTO’s services into data science workflows. cartoframes allows users to do analysis in Python pandas DataFrames and sync up the DataFrame with a table in CARTO. DataFrames can also be created from a CARTO table, and maps can be made from arbitrary SQL queries against any data in the user database using CartoCSS.

import cartoframes as cf
from cartoframes import Layer
import pandas as pd
cc = cf.CartoContext(api_key='abcdefghijklmnopqrstuvwxyz',
                     base_url='https://eschbacher.carto.com')
df = pd.read_csv('acadia_biodiversity.csv')
cc.write(df, 'acadia_biodiversity')
cc.map(layers=[Layer('acadia_regions'),
               Layer('acadia_biodiversity',
	             color={'column': 'simpson_index'})])
# an embedded interactive map will display

See the full project at its GitHub repo: https://github.com/CartoDB/cartoframes/.

Pecan Cookies - a map thinking engine

I wrote a ‘map thinking engine’ that helped CARTO users create new maps by suggesting styles to apply to the map based on properties of the data in the underlying dataset. TechCrunch picked up the work, which lives in a GitHub repo. I wrote the decision tree and a PoC, and these stellar developers implemented it within CARTO’s Editor and packaging it as a node module.

Draft Pecan Cookies flow chart
Draft Pecan Cookies flow chart, eventually implemented in CARTO's pecan node module

The final implementation looked as follows:

Pecan cookies workflow
Pecan cookies workflow. Image from the blog post One-Click Mapping: The Mapping Revolution

Military Phonetic Alphabet Teacher

My last name is always hard to spell when I’m on the phone with my health insurance company or bank. I struggle to come up with good words for letters (“E as in Edward, S as in uhhh Sam, C as in Cheese, …”). To make my life easier, I learned the military phonetic alphabet. While just writing the words and letters on some index cards, or using an online resource that does the digitial version, I decided to write a little Python program that allows me to use one of the many great language recongnition services so I can practice speaking instead of just having to type.

The result is in my GitHub account: https://github.com/andy-esch/phonetic-teacher/. “Whikey Oscar Whiskey,” you’ll say!

andybot

I made a quick and dirty Slackbot to ‘help making some tasks easier at work’. Obviously that didn’t happen, but it was fun throwing together a slackbot anyway.

See the project here: https://github.com/andy-esch/andybot

Honeymoon mapping

My honeymoon took my wife and me from Beijing, China to St. Petersburg, Russia by train. I tracked our GPS location using Moves App, and relied on geotagged images to put the pictures on the map.

I wrote a blog post about it, and wrote some code, in a repo called img-mapper, that extracts the EXIF data, writes the long/lat (if it exists) to a table along with other information about the image, writes the images to an S3 bucket, sends the table of metadata to CARTO so that the results can be mapped.

The result is here:

Carto(DB)’s Map Academy

I created most of the education content at then CartoDB’s Map Academy, which taught CartoDB’s Editor and APIs.

The site is all open source: https://github.com/cartodb/academy