ArticleMarch 21, 2018 · 6 min read time
This is a story about how our team of Digital engineers won silver in the 2017 AWS re:Invent Non-profit Hackathon. Careful preparations at home as well as prompt communication in the hectic hackathon environment proved to be successful when creating our life-saving solution.
In May 2017, I was throwing around an idea of taking part in the re:Invent Non-profit Hackathon with a team of Nitoreans. I sent a company-wide invitation to join a journey that was sure to be both challenging and educational. Quite quickly we got almost a dozen people that were interested in joining. The final team that ended up flying to Las Vegas was: Björn Heselius (designer), Juha Syrjälä (frontend/backend), Michal Lison (frontend), Jukka Miettinen (mobile), Richard Weber (backend/frontend), Timo Tenhunen (backend), Antti Turunen (backend), and I, Pasi Niemi (backend).
I and our Co-Principal Cloud Architect Mika Majakorpi started thinking of some form to this initiative. We set out to simulate the hackathon with the full team as many times as we could. We would solicit subjects or just pick one of our internal initiatives. Just to have some form of problem owner that could give us some guidance as to what was wanted.
On the 30th of August, we arranged our first simulation. I was happy with the team setup at this point since Michal Lison and Jukka Miettinen had joined to bolster our frontend capabilities. Thus we had a few backend wizards, a few frontend experts, a mobile app developer and a designer.
As the exercise subject, we decided to create an AI lobby greeter that would recognize the face of the person and offer personalized info about the office. We did manage to put something together – the facial recognition based on Rekognition did work for example, but we realized that we need to have some basic components ready to go to make anything useful.
We spent the following two workshops on creating ways of working around a serverless project, a React single page application and various AWS services. By the time we had our last workshop before flying to Las Vegas, the organizations taking part in the hackathon were announced, and we decided to imagine a subject based on what we could gather about the organizations.
We ended up doing a few things around the Federation of Internet Alerts. Our ideas revolved around new ways of delivering the alerts. We looked into delivering alerts as push messages to an Alexa, or as voice messages read out by AWS Polly into a public announcement system.
Alexa push messages were not publicly released at the time, and we had some problems with our hardware – we had Raspberry PIs and had problems with the sound as we were trying to run Resin containers. But I was happy with how the team worked on various parts of what we were trying to do: constantly communicating and working through issues while keeping everyone busy. By the end of the day, we managed to simulate a PA system on a laptop and so managed to get an end-to-end alert to voice flow.
Viva Las Vegas!
Pasi Niemi and Michal Lison taking part in the annual AWS Harley Ride.
We flew to Las Vegas on Saturday the 25th of November so that we get one full day of adjusting to the time difference. Also, it gave me a chance to take part in the annual AWS Harley Ride!
The morning started with the non-profits introducing themselves and their problems that needed solving. For us, the subject selection was a bit of a toss-up between FIA and Thorn, the child abuse prevention organization. Thorn had lots of needs that could have had nice, technically cutting-edge solutions. One thing we considered doing up to the moment we selected FIA as our organization to help, was doing transcribing and a search index for videos. Good thing we dropped that since AWS Transcribe was announced the next day.
FIA was looking for solutions to more easily accept alerts with optional moderation. So that is exactly what we set out to do. We drew out a serverless architecture that would achieve this including some stretch goals like an Alexa skill to send alerts and Rekognition for automatically annotating pictures attached to alert notifications. We presented it to FIA, and the feedback was “Great! If you do that, we will deploy it tomorrow!”.
We decided to keep hourly stand-ups to keep everyone informed of progress and resolve any dependencies. In the beginning, everything obviously depended on the missing backend parts, so we tried to get those out of the way as quickly as possible.
The whole experience of trying to get something complete and good looking out is very intense. There is constant pressure to execute and other people depending on your output. Also, the hackathon starts at 8 AM, and you are supposed to stop working at 9:30 PM. That’s a long day of intense execution.
At around 6 PM we started to have all of the minimally required stuff implemented so we could even tackle some of our stretch goals. We made the Alexa skill to send in an alert and an XSLT transformation for the CAP feed to transform it into HTML. We didn’t have the image pipeline in good enough shape to do any of the stretch goals related to that.
The instructions for the final presentations were pretty strict: The presentation was supposed to be 180 seconds including time for questions and scoring. Since we are Finns, we took that literally. Hence, we made recordings of all our demos so there is no chance of failure and we can speed things up to fit into the 120 seconds we allocated for the actual presentation. Our presenter – Richard – actually rehearsed his lines to fit inside that tiny timeslot.
Here is the actual presentation we made. In hindsight, all of this effort was probably the biggest thing we could have done better. Just forget the time limits (just as all the other teams did) and talk also about the things like sensible IAM policies between all the parts of the solution that were implemented “under the hood”.
Architecture diagram of the final solution
The judging went in two rounds. First, each of the non-profits selected their favorite solution out of the teams that selected their problem. Those went on to the final round where an international panel of experts selected the best one.
For the first round, we hit the allotted time for the actual presentation even though the resulting discussion went into overtime. For the final round, we were told to stretch our 3-minute presentation into 15 minutes, which we managed to do.
The team that selected Thorn had more of the kind of story we should have had and clinched the victory, with us coming in second.
We got out at 12:30 AM feeling exhausted, a little disappointed, but mostly just very proud. As far as the actual implemented solution goes, I don’t think we could have done anything significantly better. We’ve also learned that FIA is taking our solution into production to save actual lives!