Last weekend I attended the Dutch Open Hackathon
in the UP building (previously known as IJ-toren) in Amsterdam.
I went there as part of team 'Pi Ducks'. The team consisted of some colleagues from bol.com (where I started working in July) and a front-end designer we met through Twitter. We had a pretty broad range of skills in one team!
Going on holiday
Our working title was "Ik ga op vakantie en neem mee" which is a Dutch little memory game where everyone has to cite a list of items to bring on holiday, pick a new item and then the turn goes to the next person, who has to cite that entire thing again. N+1.
The idea of the app however, is that you think of a mood or some type of holiday characteristics such as "snow", "sun", "sea", "city" or "adventure". Based on what you like, we will pick a destination for you. After you pick the flight you want, we look at the current weather of the city you're headed for. Based on the temperature among others, we also give you a list of products to bring. So you want "sun" and "sea" in Barcelona? How about some sunscreen, beach towels and a book to read! To get into the mood even more before your holiday begins, we also suggest some dishes based on the location. We had thought of this idea a bit before the hackathon during a meetup we had planned, but we weren't really sure if it was the final plan.
We had quickly decided to make it an HTML5 web app which would make it compatible for all devices. Also something lightweight with a REST API backend. The front-end is a heavily modified Twitter Bootstrap with jQuery for event handling and loading and parsing of the JSON. Meanwhile, we used CSS3 for some subtle animations. The backend is a Gradle project written in Java/Groovy (not everyone knew Groovy well enough, so it got rather mixed) which boots up a Jetty server with Jersey, so we would have a REST API.
Flow of the app
The flow of the app was to find flights leaving from a specific airport for that day from transavia.com (makes it limited to their journeys), then get the prices and the weather for the destination, after that we would load products from bol.com based on the type of weather (hard coded mapping, "sun" == "sunscreen") then we would load recipes from ah.nl (hard coded mapping, "spain" == "spaans", which won't find "paella" unless "spaans" is included in the title).
Use ALL the APIs!
API-wise we used the APIs provided by Transavia (flight data), Schiphol (airport data), bol.com (product data), Albert Heijn (recipe data). We also used some APIs and data from other sources, outside of the event, namely openweathermap.org (weather data) and two big JSON lists of airports and countries worldwide.
Of those APIs only the bol.com API is up and running, the other APIs were specifically built for the event. Which is a little sad, as it is great data. But perhaps this event has opened their eyes?
The app is unfortunately not able to go to production or a cloud of some sorts. This is mainly because most of the APIs aren't live anymore. The Transavia API was also not really used, we used the XML dump that they had made because it offered a little more flexibility. The Transavia guy also suggested this to us after we asked how to do slightly more difficult queries. He told us that the API was purely built just for this weekend.
There was also some hardcoded categories and mappings in our app. But it was still dynamic and it worked. If someone didn't want to do our Barcelona example, they could easily change it and they would get different results. But in the end, with not enough API data and not enough time or resources to do some smart mapping or machine learning for that 'personal touch', this app won't go live.
The result is a nice looking application that actually works (something I particularly like to point out) and if there was full support for APIs and data could actually work rather well.
I guess by definition this would count as my first hackathon, but it didn't feel like that. The Dutch Open Hackathon (where 'Open' is made significant by the large enterprises; AH, bol.com, Transavia, Philips, TomTom that actually opened up their (often) closed data) was a great success!
There were a couple of issues though. The building was nice and the organisation was thoughtful about a lot of things, but the floors had been unused for a while and the AC didn't work or nobody was able to turn it on for day one. So 40 sweaty nerds with 50 laptops and about 10 external monitors were producing a lot of heat.
Also the communication wasn't that great. Often people had to come in and say "this and that starts right now, even though the program says 9am". I still don't really know who was running the show. There were people in black polo shirts with the Dutch Open Hackathon logo and "Staff" badges, but there were also people in red shirts who were "Organisation". It was a good thing they were all friendly people!
One last tiny issue, but maybe that's personal. I didn't like that in the end we had to do pitches and that that's also how they were judged. Our app lost to a team that only had minimal coding working and just had a good idea and some photoshop prints. But maybe I'm just a sore loser :)
But let's not forget about the good parts, logistically everything was pretty well arranged. There was ample food and even more drinks like water, cola and energy drinks (as everyone knows, caffeine == coder productivity). They managed to get a lot of field beds and blankets, great for those 3 hours of sleep I got. (Guess I should have used the earplugs and sleep mask like my teammate did, who managed to get 8 hours of sleep)
The companies actually showed up and their teams were really helpful. I spoke with Maarten Korz, a representative from Rabobank. He was really happy that he was able to represent his company, and they were finally willing to go forward with APIs and opening their data.
What I also really liked was that we were able to go on the roof of the 18th floor and look over Amsterdam. I loved that.
So will I be at the next hackathon? Hell yes! Will enterprises be there too? I very much hope so!