Map Sandbox Project

A choropleth map showing crime incident levels in Pittsburgh census blocks. Original 2008 Pittsburgh incident data from GIS Tutorial for Crime Analysis; Census blocks from City of Pittsburgh.

Earlier this year I became interested in geospatial visualization and analysis, and so began a self-guided study of the field in my spare time, focussing on crime mapping. I recently kicked-off a project blog hosted on GitHub Pages to document my progress:

I’ve always found the best way to learn a new topic or technology is to build something, a tool of some sort, that drives the learning process and provides a conceptual scaffolding upon which emerging concepts can grow. So I’ve been working on an idea for a mobile and/or web app for visualizing a side-by-side comparison of neighborhood livability metrics. My initial focus will be on crime statistics to keep it focussed initially, but what I’m building should be extensible to other kinds of socioeconomic attributes.

I’m doing this project ‘just for fun’, purely as an evening/weekend side-project. I’m drawn to this kind of project because there is a mix of problems to be solved that engage different parts of my brain: data wrangling/modeling/analytics, infographics and UI/UX design, and software engineering.  In the short term, I’ll embark on a series of exploratory spikes as I make my way through the fundamentals of geographical analytics and figure out how to best achieve the desired features. I’ve already begun working my way through various articles and books.

In parallel to the project blog, I’m also maintaining a GitHub repo of my code. Initially I’ll be tapping into the scientific computing platform Mathematica (recently rebranded as the Wolfram Language), which is my go-to tool for these kinds of projects (I worked at Wolfram for nearly six years before pivoting my career into mobile app development). In parallel I’ll be learning python, since there are so many open-source geo-processing tools available. As a side effect, it will be useful to have two distinct implementations to verify and validate as I go along.