I've been working on this project for a few months now and think it has finally reached a point worth sharing. I think like most people in the U.S. (or world) have been pretty fed up with our politicians and inability to make simple decisions without arguing and causing undo stress on the economy. That might be my take on the situation. Part of keeping our pols in check is knowing what they are up to, so this project is my (non-partisan) attempt at doing that. I say non-partisan with the understanding that inherit bias is enitrely impossible to eliminate.
So what is it? It is a simple interactive map, that allows the user to select their congressional district (or search for their address) then find out basic information about their representative - party affiliation, age, what they look like, their vote record, twitter activity, and campaing finances. There is a lot of information out their at a lot of different websites, so this is my attempt to consolidate some of that and make it easier for the user to get this information. It is only for the 112th Congress, so no historic information.How was this done? I used a number of different javascript libraries. The map functionality is provided by Polymaps. Which as the slogan says, it's for beautiful maps. The interface functionality uses Dojo. I know people have a tendency to bash Dojo, but I found it easy to get started with, and had a lot of controls that didn't require plugins to. I also used Knockout for its MVVM functionality and binding. I used Knockout's templating which also required JQuery unfortunately. If I had to go back, I think I would have just used JQuery instead of Dojo, or figured out Dojo's templating/MVVM framework. Finally I had to use Google's javascript api to geocode people's addresses. Unfortunately, their web based one did not work. For the data, district boundaries, I got that from National Atlas, which the data is kind of crummy, but manageable. I used mapshaper to simplify the data and uploaded it to a google fusion table. To upload I used Google's python API and GDAL/OGR to convert the geometry to GeoJSON/KML/WKT and stored each as separate fields/columns. On the backend I used ASP.NET and NetTopology suite to clip out the GeoJson tiles I needed to display in the polymaps map. I cached this data in another fusion table here. All the tiles are publicly available, but unlisted. I also use ASP.NET caching to try and speed up the download speeds. The background map was created with cloudmade data. Frankly I'm still having problems with the speed, and I think it has to do with polymaps drawing out the polygons. Finally, data about the representative is collected from the NY times congress api, OpenSecrets.org, Govtrack, Twitter, and Votesmart (see the web app about button for links).
Here is the link to the web application. It should work fine with Google Chrome, Firefox, Safari, and possibly with IE 8 or later. Enjoy, hopefully too many users will not break the app.