Philly Hoods

Sep 09 2013

Today I’m releasing Philly Hoods, a neighborhoods API for Philadelphia. For now it’s pretty simple: give it a pair of coordinates in Philadelphia and it’ll tell you what neighborhood you’re in and give you a GeoJSON representation of the neighborhood polygon. Or, pass a string and it’ll try to match one or more neighborhoods to it. Check out the docs for more information and a demo. The code’s on GitHub.

It’s a simple project but it was fun to do and like all my side projects it gave me a chance to mess around with some new technology for the first time:

Node.js: This is my first project in production using Node. I’ve been messing with it for a while on some larger things (some still in the works) but it’s good to get something out the door. Again, I’m not really doing anything crazy here, I’m using callbacks, I haven’t yet gotten into the promises and all of the more advanced stuff. But I think Node is ideal for writing APIs and will continue to look to it in the future for that.

I decided to go with Restify over Express for writing the API and I’m really glad I did. It’s designed specifically from writing RESTful APIs so it does a lot of the work for you or makes other things easy with built-in Bunyan support for logging, throttling and a few other small things that were helpful.

PostgreSQL and PostGIS: This is one that I’ve been wanting to dig into for some time. It’s a database that I’ve messed with but never had to work with from front to end on a project. It took me a while to figure out to convert and insert the polygons into a table from a shapefile but eventually I got it. Once you get the hang of the spatial queries that you can do with PostGIS you realize that the possibilities are pretty much endless. It’s kind of addictive. Definitely be using PostGIS again in the future if a need something spatial.

OpenShift: I’ve used Heroku as a PaaS before, but never OpenShift. I think the two of them are pretty similar from a workflow point of view (deploying from a git push, what a beautiful thing). What I liked about OpenShift is that you can actually SSH in to your gear (like a dyno) to get a better sense of how it works. Some people probably prefer to keep the platform as a black box but I like the flexibility to poke around a little bit if I want to. Heroku on the other hand probably has a smoother command line API to get stuff done but OpenShift isn’t too far behind. Another appealing feature of OpenShift is OpenShift Origins which appears to be a way to run a local copy of the OpenShift platform for development. This could be a better way to get a local environment close to what will be run in production than the Vagrant path that I went for this project. Origins is also how you go about developing your own “cartridges” (or “add-ons” in Heroku-speak) that you can use on the platform and even share with others. Open source FTW.

Yeah, so that’s about it. I’m excited to see how (and if!) people use this API. I’ve heard folks in the past talk about how something like this would be helpful, so we’ll see.

Now on to the next project...

Send a pull request for this post on GitHub.

Dave Walk is a software developer, basketball nerd and wannabe runner living in Philadelphia. He enjoys constantly learning and creating solutions with Go, JavaScript and Python. This is his website.