After a company-wide call for developers to compete in the ProSiebenSat.1 (P7S1) Hackathon in Munich, three of our willing and motivated developers quickly volunteered:
- Kevin from our User Experience (UX) team
- Stephan from our Mobile team
- Alexander from our Middleware (MW) team
This is the story of their weekend in Munich.
It all began the Friday before the Hackathon.
Promptly at 18:30 they opened the gates and herded us to the top floor of the P7S1 building, where a large conference room pretended to be a banquet hall with a balcony overlooking all-things ProSieben.
There was a certain electricity in the air, yet still relaxed.
We eagerly began chatting with the other developers, and by the time the buffet was opened, we had already met quite a few people.
There was grilled stuff galore. Pork steaks, beef steaks. Turkey breasts. Grilled vegetables. Potatoes. Potato salad. Green salads. Other side dishes. Drinks, both with and without electrolytes. It was a real smorgasbord. They had it all.
While we were finishing up dinner, Sven Gold, the moderator of the Hackathon, and Patrick Keller of P7S1 came forward to welcome everyone and present the official theme of the Hackathon:
Smart Entertainment Everywhere
The classic television format has been showing its age, becoming more-and-more outdated as each year passes, falling in the shadows of Netflix, smartphones, and their ilk.
So this year for the hackathon, we were tasked with coming up with an idea that would revolutionize the media market!
A grandiose goal for a 24-hour hackathon, we thought. But as they say, you have to go big or go home.
The evening wrapped up with a few rounds of drinks and conversations around 11:00, possibly a bit longer than decency and good judgement would dictate, but so it goes.
Day 1, Breakfast
Morning came quicker than we would have liked, but we were greeted with a hearty breakfast in the dining hall. No schedule or program had been posted or presented yet. We were still waiting on the last of the participants to straggle in.
70 people in total, we were a motley sort. From groups completely decked out with 3d-printers and VR glasses to groups with no computers and even some with no development experience at all.
We didn’t know what to expect, other than it would be interesting.
At 10 O’clock they finally presented the rules and requirements:
- Each team may consist of up to five people
- The team has 24 hours to complete a working prototype, with an emphasis on working. It must be more than conceptual
- The product must be presented to the judges the following day
- The prototype must utilize at least one of the following APIs or provided devices:
- Pro7Sat1 TV Schedule API: airtimes of television programs and which advertisements are run during each ad slot
- Weather data API: various weather information for a location over a period of time
- Adex DMP Data: anonymous user data that has been collected by our sister company Adex for statistical analysis
- P7S1 Sports API: all sorts of sports data. (Live) events, results, teams, league, roster data, and much more
- Car2Go Sim API: information about the Car2Go car-sharing fleet. What makes and models they offer, where are the available cars, how much gas they currently have. (For the Hackathon, no live data was provided, only simulated data)
- AWS (Amazon Web Services): Each team received a $50 voucher for the Amazon AWS services, which could be used for any services provided by AWS.
- NFC Tags and Reader/Writer: The company NXP provided some attachable NFC tags and an NFC cube, hardware for reading / writing tags and for connecting to a PC.
- Samsung devices: TVs, Galaxy Phones, and smart watches were been provided by Samsung
At this point, we were given time to form our teams.
A couple of groups arrived to the hackathon fully staffed. Some people came entirely alone looking to join a team or start one from scratch. Most fell somewhere in between. We, of course, were one of them with 2 free spots.
Each team went on stage to introduce themselves in an attempt to recruit others.
Since we were all wearing purple jerseys, when it was our turn, Alexander dubbed us “Team Lavender.” He went on to say we work for ADITION and that we liked tracking.
For some unknown reason, that last point didn’t seem to win us many fans.
After the round of introductions, we approached a duo sitting at the next table where Lea and Lena sat, a radio-presenter and a PR manager, respectively. They looked confused and a bit out of place.
Neither of them had ever programmed, so they weren’t sure why they were there, but we realized they had the components our team was missing: ideas and presentation skills.
We agreed to collaborate and searched for a quiet space to begin.
This was the hardest part of the hackathon for our team.
We first toyed with building a game, but after a good bit of back-and-forth discussion, we couldn’t really think of a good way to combine the APIs in any coherent manner, nor did we think we had enough time to complete a whole game, much less one for a smart-TV.
At some point we were interrupted by a short tour of the broadcasting center and a couple workshops from the Hackathon partners. It wasn’t exactly an unwanted distraction, seeing how we couldn’t come up with an idea. At that point we were hoping something, anything might spark an idea.
We tossed around a few more ideas, but it wasn’t until around 7pm that we finally agreed upon a project: Tour2Go
Tour2Go would consume the Car2Go API and use NFC tags and Samsung phones to create a platform for a private alternative to a tour bus/guide.
Here’s how it would work:
- The user searches for a nearby, available car via an Android app
- Inside the car, they hold the phone to an NFC tag, identifying the user as a customer of Car2Go
- The user then constructs a route around the city by selecting various tourist attractions in the area
- Once satisfied with the route, the app guides the user around the city, explaining the significance of the locations as they arrive or pass by
After familiarizing ourselves with the APIs, deciding to use Mapbox as a map and navigation service, and determining the API contract with our own server-side API, we split up the development tasks and worked in parallel:
- Alexander, Lea, and Lena designed a landing page,
- Kevin (later joined by Alexander) worked on the rest of the web app, and
- Stephan built the Android app.
But like all good Germans, we didn’t let work get in the way of food, so we took advantage of the catering service before embarking on the programming.
The landing page was a simple brochure website with general information about Tour2Go and a download link. It would be used in the sales pitch.
After this was complete, Alexander joined Kevin, while Lea and Lena began work on the rest of presentation.
The web project was built with Symfony, a PHP framework, and roughly consisted of three parts: an admin interface, a wrapper around Car2Go, and the API.
The admin panel, built with bootstrap, is where information about the available points of interest could be entered. Each destination required the following:
- two pictures,
- a short description that would be read by the App as the user drives by, and
- the GPS coordinates
So as the user created their route, the PHP application would take the coordinates of all selected sites and calculate an optimal path through all of the points, starting with the point nearest the car.
The Car2Go wrapper was essentially just a cache of all available Car2Go vehicles, which was loaded via the external API. This cache could be refreshed after some arbitrary interval. This made it easy for the Android app. It just had to send the current location with a search radius.
The API was a REST interface using JSON. Its task was to handle queries from the user and transform the route information and Car2Go data into a simplified format, requiring the Android app to only worry about presentation.
The Android app turned out to be the most complex and problematic task.
We originally chose Mapbox because the first requests are free and the installation, according to their website, seemed quite simple, with “seemed” being the operative word.
The first attempts to integrate the map according to the official instructions failed beautifully. The stacktraces generated were essentially useless. They used special UTF characters that couldn’t be displayed properly on our machines.
We eventually gave up and resorted to taking the example app and ripping out what we didn’t need.
Integrating the NFC tags was surprisingly easy. We didn’t even need a third-party library.
Communication with the server was just as painless.
It only took 13 hours of continuous coding, obscene amounts of caffeine, and energetic music to finish the first prototype. It needed a few more tweaks, but the basic functionality was there.
The morning after
After a short night at the hotel for two of us and a sleepless night for Stephan, who was still hacking away and breaking things the next morning, we reunited with Lea and Lena to put the finishing touches on the app and presentation.
Fortunately Lea and Lena completely owned the pitch, allowing us time to hammer out the last few bugs and cram in some last-minute embellishments and submit the app just 15 minutes before the 12:00 deadline.
We had a short lunch break, but it was long enough for us to make screenshots for the presentation while teams were frantically rehearsing.
Then the pitches began.
Each team got three minutes to explain their product, followed by a two minute Q&A session.
We were 6th in line of 15 teams. As our turn got closer, the anticipation mounted.
Then we were up.
Lea and Lena took the stage.
They role-played two friends, one visiting the other. Lena dragged an suitcase over to Lea where they greeted each other with a hug. They tried to decide what they wanted to do, agreeing that the bus/tour guide model was so out of date. They stubmled upon the Tour2Go app, and from their presentation transitioned into a more traditional marketing presentation.
For the Q&A, we had to defend against the judges taking turns trying to poke holes into our app idea and business model, the whole time watching a timer count down.
The pitch was intense but handled gracefully by Lea and Lena, and questioning was equally so, but we managed to persevere.
After the 15th team left the stage, the judges convened to make their decision.
All things considered, we felt pretty good about our chances.
The first place team created “CuteCoin” which used NFC coins as a medium to control and meter the amount of time children spend watching television.
We didn’t win, but we proudly came in a close second. For our efforts we each received a Samsung Gear 360 camera and tickets to the TV show “Das Duell um die Welt”.
After the awards ceremony and a photo-op, we spent the rest of the day enjoying tasty beverages with the contestants and just hanging out until we had to begin our journeys home.
It was a weekend full of action in a wonderful location surrounded by many motivated, talented hackers. We met many interesting people, not just fellow competitors but the organizers and ProSiebenSat.1 staff as well.
Despite being stressful and utterly exhausting, we wouldn’t have missed and look forward to returning next year.
We recommend everyone trying this at least once in their life.