City of Calgary hosted the open data hackathon with Calgary Region GIS over the weekend of March 4th to the 6th. This idea and code crunching event kept 150 brain juices going for more than 30 hours excluding the minimal sleeping time. I had the opportunity to be involved with this event, and be among a bunch of intelligent people. There were a mixture of attendees, including students, technology specialists, and business enthusiasts.
Hackathon is not a well known event in Calgary, even though its birth place was here in the city. There were citizen asking, “Is this even legal?” (LOLz). The idea of hackathon is to have a working prototype of an idea based on the theme and resources given. The theme of this hackathon was “connectivity” with the city’s recently opened big data sets. Each team must have at least two to six members. Any wildest ideas are welcome.
I went into the hackathon looking to network with the industry, learn from team members, and give hackathon another try (I had a bad experience prior with another organizer). This event allowed attendees to find team members based on ideas and interests. With the ice-breaker activity, “Pitch Perfect”, we got a little warm up to brainstorm ideas. I found my team members based on my ability to assist, and started off to work on YYCWalks.
Our team consists of one full stack .NET developer, one telecom engineer, and me. From my past experience, I knew we need to keep track of time and avoid scope creep. The team was very focus with our idea, to generate an mobile application which allows user to take a historical walk in the city. With the Discover Historic Calgary open data set, we were able to create a custom walk based on our starting point at the City Hall.
I’m all about open source development, I suggested having a web application with Node.js with Express.Js web framework, MySQL database, and Cybera Rapid Access Cloud for deployment. Since I’m the one with much more experience with application development, I took on the behind-the-scene tasks. After the basic designs are set for the app, I took off to parse the data into the database. We converted the KMZ file to KML, and I was able to successfully parse the KML file to GeoJSON via a Node module, togeojson. We used Google Maps API to apply the GeoJSON and plot locations.
I had some struggle with the Cybera RAC instance; I couldn’t get the database accessible. I was fighting with it at 3AM on Day 1 (considering no sleep), and a little bit more in Day 2, finally I decided, there’s no point. We made the decision to go off a smaller set of data, and just parse the data on application load. Since my team members are not familiar with web application development, they had hacked up a one page application. No complaints, I can work with that. I then Bootstrap-ed the application to make it mobile friendly. Towards the end of Day 2, I’m fighting again with the instance, now with deployment. I didn’t solve the external access issue earlier in the day, now I have to host the application (FML?). The end of the day came, I smarten up this time and decided to sleep on it.
The final day started, after few hours of research and poking at NGINX setups, I had no leeway. In the end, is the IP address forwarding made things work. Once the web application was live, minor modifications was implemented on layouts and contents. We added the complete walk tour distance calculation to better use the data. We tested out our app on mobile devices, and took it out for a stroll. The geofencing worked out great, the notification showed up when arrived on location, and all functionalities worked as expected. We were ready on time for the qualification round judging at 1PM.
I don’t believe the event organizer expected the amount of teams generated, they were very behind on judging. There were three pairs of judges, we did not get evaluated until almost 4PM. At one point, I was going to judges asking, “Are you looking for K1?” (teams were randomly numbered), we were worried. I got a chance to tour a little bit to see what other teams had done while waiting. Most teams have mapped the open data, which was a no brainer. There weren’t a lot of ideas on manipulating data to create meaning. Perhaps we were too fixated on getting Google Map to work? When it was judgement time, our judges didn’t seem to be engaged at all. One of them was clearly distracted with phone calls, and we were asked with one question, “What is the potential profit of this app?”. Now I’m just confused, tired, and very confused. I thought the theme was “CONNECTIVITY”. Maybe we missed some fine notes in the criteria?
The top six finalists gave their presentation a bit after 5:30PM. Most of them were doing sales pitch about their ideas without a working prototype. The winning team was CycloConnect, which depended on crowdsourced data to make bicycle parking safe and accessible. It’s a great idea, no doubt, but I thought we’re supposed to utilize existing data instead of creating new data. One of the member from the finalist teams mentioned that it took him more than 12 hours to parse the existing data, thank God I didn’t fall into that rabbit hole. He also suggested that it would be nice that the region not only collect data, but clean them. Some consistency, would be nice.
Overall, I had a great experience. I didn’t go in to win, I was there to learn. I was disappointed that we didn’t get a great chance to connect with the fellow attendees. Everyone was head down, busy. I would like to see what every group had done. The judges gave me the sense of bias, perhaps I just need more justification with the result given. After all, congrats to all the winners, I got a piece of cake (literally), I will be just fine.
I learned from a hackathon, so should you.