It has been years since I last pulled an all-nighter - but they've always been for good causes. I just did another one - and has an immense amount of fun in the process. The reason? GovHack.
GovHack was an event with the aim to work as a catalyst to encourage the AU government to open up as much information as possible. The process to achieve this was to take the scattered bit of information already available, and disseminate it into useful tools or visualizations for the public to use.
I arrived at about 1:45, as the registration was at 2:00, and was a little worried what I had gotten myself into: there were signs everywhere, but only two people in the room. However, very quickly over the next 30 minutes people started filing into the room, and soon it was too full. A lot of teams came from different organizations, but I came flying solo. Soon I started talking with Christian, a web guy from Melbourne, and Doris a network visualizer also from Melbourne. We started talking about ideas and started to settle on lobbying within the government. After the kickoff ceremony we came back, and I walked to the car to pay for 20 minutes extra parking (we all know the parking rangers get you in those last 20 minutes). When I cam back we had assimilated a few more people flying solo - Michael and Alex. Another colleague, Tim, stayed for a while, but had to unfortunately work the next day.
One observation I can make in retrospect: over the entire 24 hours, not one member of the team had anything negative to say about lobbying or lobbyists - we just wanted to visualize the relationships between the different organizations.
Christian and I helped roadmap the features we thought would be neat to have - and a range of features that could be delivered. Because we didn't even know if the visualization part woul work, we also created a plain categories view, and a geospacial view. We divided up goals and rough divisions of work (although there was a fair amount of overlap), and started hacking.
Alex took on the responsibilities of helping assimilate the data, and create the insanely cool visualization; he was able to do this with a library he had never seen, nor worked with before. Michael assimilated the rest of the data, and somehow kept adding tables to the database with more and more information. Christian created the categories view, and basically glued everything together.
My primary role was to create the geospacial visualization. One element I really wanted to display was the electoral boundaries used throughout Australia - on a 'slippy map'. This proves difficult, as the data isn't in OpenStreetMap, and the KML file is 16 MB large, far too large for a web browser. I ended up writing a little script that took the ESRI file and created the custom tiles for the slippy map - all 70k of them. My little laptop didn't like all that CPU, so I fired up an image on EC2 and eventually uploaded the tiles to S3. If you would like to use them, you can: http://cdn.kelvinism.com/audivisions/ - the code snippit is:
map.addLayer(new OpenLayers.Layer.TMS(
"Election Boundaries",
"http://cdn.kelvinism.com/audivisions/",
{
type: 'png', getURL: osm_getTileURL,
displayOutsideMaxExtent: true,
isBaseLayer: false,
wrapDateLine: true
}
));
Anyways, after creating the tiles I added the lobby agency locations. Everybody on our team basically managed to stay up the entire night - not one wink of sleep for most of us. After finding a json feed that had the agency offices, I was able to do a lookup of representative -> division name -> lon/lat of division. Lastly, and left slightly incomplete, I created simple table with the sum of all the value of government money that went to each supplier. There are 7,000 suppliers though, so displaying all of those using javascript just won't happen. In fact, the map is heavy in its current form because of the 200-300 pins that exist.
Overall this project was really fun to work on; the judges gave the project a "Best in Show", which I missed as I needed to get back up to Sydney (darn!) "Team7" came from all different areas, with different skills, but all had decent experience. One example is when we decided early on to choose a revision control system:
We're considering entering it in the mashup contest, but some things will need to be tweaked. For instance, I would like to make the map lighter, and would like to add the suppliers onto it. Alex has a few things up his sleeve as well.
Our entry: LobbyClue
Update: We received a Notable Mashing Achievement in the MashupAustralia competition. Good job team!
Tagged as:
gis
| government
| govhack
| lobbyclue
| osm
| python
| web
Awesome man. Pretty amazing the product your group cranked out in such a short time, you all should be very proud.
Question on your Geospatial Visulization though, when I click the icons (money bags or little castles?) nothing happens...should it? Tried in Firefox and Safari.
Mr Speaker: Luckily we had all agreed on using SVN to control the project, so the actual restore was pretty painless. There were some things lost, but none of it was mine, so it was funny enough to see :P
Ian: No extra data from the cash bags or little castles, although it would be very, very easy to add the bubble. In fact, if you open the KML in Google Earth it will actually display the names on each node.
This entry is from my journal and was written on Nov. 2, 2009. It's been tagged with gis and government and govhack and lobbyclue and osm and python and web. There have been 3 comments so far.
Twitter contact import script seems to be broken and spamming my requests - apologies if I sent you 10 emails; I'm stubborn like that. (about 6 days, 16 hours ago)
My favourite part of your team's effort was the 3am back-up that resulted in the deletion of a large part of the project. No tears, and relatively few swear words emerged - just straight back in to doing it all again. Very cool!