December 6th saw the return of the bi-annual internal Hackathon. The six months since the June Hackathon had just flown by, and we were ready to set ourselves new challenges.
The aim is to give some time for us to play with some technology. It might be a new language, a new API, a new technique, or a new idea. It is normally software, but might be hardware. We are a bunch of people with inquisitive minds, that love to explore technologies and solve problems.
The lead up to the event had us sharing ideas over Slack. Some ideas were things that someone would like to see, some were things that someone was thinking of trying, some ideas were triggered off of those discussions. There may be teams starting to form in preparation to work on a common goal. Sometimes we have a semi-coherent theme that emerges, but not this time.
The format starts with us gathering at lunchtime, where between mouthfuls of pizza, we stand up and pitch our hack. The pitch is a brief description of what we are hoping to achieve, what aspects we’re hoping to find interesting, and to drum up team members if required.
It is at this point you can see the popular themes. This time there were no soldering irons as all of the hacks were software. Looking across the hacks, 5 involved machine-learning, 3 were to be web applications, 2 were using 3rd party APIs, 2 were information mash-ups (a hack can fall into multiple categories).
The hackers are full of optimism (and pizza), and have been goaded into scope creep on their base idea. We are all ready to leap onto our keyboards.
Some team remained to undertake the hacks in a social manner, and some dispersed for familiar workstations. There were periodic mutterings, small cries of elation, and other noises of development. If a break from the keyboard was needed, a tour of the other teams for a brief update provided welcome relief.
The hackathon continued through the afternoon, with people staying as long as they wanted, or were able. Some of us retired to a local hostelry before returning home. Some returned to the keyboard in the evening, because just half an hour more could see great results.
The following lunchtime, we reconvened (no pizza this time), and each team was given 3 minutes to present their hack. This is enough time to describe what was achieved, what was not achieved, any interesting findings, and a short demonstration.
It was not just those that had taken part that were there for the presentations, but a broad slice across the company.
All but one of the hacks were ready to make a presentation, one of them was even submitted as a video due to being out of the office.
The hacks (in presentation order) were:
- John - "Little Shop of Horrors"
Use neuro-evolution to solve a simple game to move a player to a food target. The neural network evolved to the point that it looked promising. It started towards the target, but then strolled past.
- Mark - “Deep Art”
Use genetic algorithms to generate masterpieces depicting a dog. The hack focused on evolving a blob based painter towards a selected picture. The live demonstration actually produced a vaguely recognisable result.
- Ash - “Bandalyser”
A webapp using the Spotify API to see how a band’s style has changed over time. View the energy, danceability and valence of the albums and tracks over time.
- Ian - “Neuro Evolving Parallel Parking”
Using a 2D parking simulator with physics engine, attempt to evolve an AI to parallel park a car. Problems with the fitness function meant that some of the worst parking seen was replicated.
- Nick - “FIT for nothing”
A web application to upload a GPX route, process in the browser, and download as a FIT course for use on a Garmin cycle computer. The parsing within the browser of the GPX was successful, the binary FIT file was generated, but the downloading failed.
- Sam - “Deep Writing”
A neural network was trained on the text from a book, and then given the start of the text and the number of characters to generate. Despite being trained with individual letters, it managed to generate mostly words from the Wizard of Oz.
- Nik - “The Bit One”
This was looking at taking build status from BitBucket pipelines, and displaying on an information radiator. A successful proof-of-concept was demonstrated.
- Andrew - “Python ML Experiment”
This was to investigate how a machine-learning library could be used. The opportunity for presenting was declined.
- Simon & Chris - “Where’s my train”
Trying to ease the problem of finding out how your train is running. Combining the phone location with open data sources to determine nearby stations, and then use that to lookup the train.
At the end of the presentations, each person had 3 votes to assign to the hacks. You could either choose your 3 favourite hacks, or assign all 3 votes to a single hack.
The final tallying of the marks was watched with great attention, garnering “oohs” and “aahs” as it emerged that it was a close run at the top.
The hackathon was not just about the investigations, the kudos, and the satisfaction. It is also about the prizes.
The top 3 hacks were:
- Bandalyser - Ash (16 votes)
- Deep Writing - Sam (15 votes)
- Deep Art - Mark (10 votes)
What I find interesting is that the voting is not the end. You will stumble across conversations in the kitchen about further improvements made, alternative approaches, and lessons learned.
Time to ponder ideas for the next hackathon...