Narwhal November 2012
Narwhal was the famous technology infrastructure behind Barack Obama's 2012 Re-election campaign. It was a Python-based interface and integration layer that allowed us to unify the disconnected pieces of what we knew about voters, volunteers, event-goers, voting locations, etc. I was one of the top 5 contributors to the Narwhal project.
The integration side was a small web layer that handled syncing data with our vendors in realtime. Incoming data was saved to a local database and then became queued via SQS for translation and loading (by our integration workers) into the Narwhal interface layer. Here I extended existing integrations and built some parts to sync voter applicant and precinct data.
The interface side allowed us to use this unified data to quickly build dozens of client applications for various tasks across the campaign. I spent most of my time in Narwhal building and extending models and endpoints to support client application needs. The pieces I worked on helped support pollster surveys, phone canvassing, volunteer organizing, image processing, voting location lookup, incident tracking, etc.
I also built a thin Ruby Gem that allowed our ruby based client applications to quickly and easily interface with the Narwhal API.
The integration side was a small web layer that handled syncing data with our vendors in realtime. Incoming data was saved to a local database and then became queued via SQS for translation and loading (by our integration workers) into the Narwhal interface layer. Here I extended existing integrations and built some parts to sync voter applicant and precinct data.
The interface side allowed us to use this unified data to quickly build dozens of client applications for various tasks across the campaign. I spent most of my time in Narwhal building and extending models and endpoints to support client application needs. The pieces I worked on helped support pollster surveys, phone canvassing, volunteer organizing, image processing, voting location lookup, incident tracking, etc.
I also built a thin Ruby Gem that allowed our ruby based client applications to quickly and easily interface with the Narwhal API.