Hack Cambridge 2018

This weekend I had the opportunity to attend yet another hackathon. This is my second MLH hackathon, with the previous one being Great Uni Hack 2017 in Manchester. Unlike at GUH however, I aimed to build something of value and challenge myself.

I was nervous at first, particularly because I was going alone and had no team. Fortunately, I met two other like-minded students and we immediately got along. Interestingly, we were all coming from different backgrounds and universities. One came from a computer engineering background, the other was more into high performance computing while I was coming from a service oriented/full stack development background. Nonetheless, we managed to work well as a team.

We decided to tackle Microsoft’s challenge, which included creating an app that utilises their own Cognitive Services. These are a set of robust computer vision and machine learning APIs that are quite easy to use. They include face detection, speech recognition, natural language processing and knowledge processing.

Eventually we came up with the idea of Really Smart Ads. The next time you pass a bus stop or train station, think about all those posters that are printed, usually several times at every corner. The problem is that these posters are static and (try to?) target the general audience. The idea we wanted to introduce with Really Smart Ads was that the right advert should be shown to the right crowd. One of Microsoft’s face detection APIs also returns certain attributes for each detected face such as emotion, predicted age and gender (amongst other attributes). Our solution was to periodically take pictures of a crowd and determine the average emotion (e.g. happy, sad and neutral), age range and gender division. We then had an algorithm that, based on this information, will show the advert that is best suited for that crowd. For example, if there are quite a large number of children in the crowd, a children’s movie poster can be shown as an advert.

2018-01-21

A server would store all the adverts, each defined with its target audience. Every time an advert is shown, a counter is incremented for that advert. This not only provides feedback on how frequent an advert is shown, but also explores the alternative of advertisers paying only for how many times an advert is shown, rather than renting a whole poster board for a period of time. They will also have a good idea of how effective their advert is in that particular area. This is also a win for the target audience, because they are shown relevant adverts to them without the intrusion and history tracking that is usually used by corporations for showing target adverts. This video shows our demo working.

We used three different technologies for our solution. We used Python to access the Microsoft APIs and capturr/load images. The advert information was stored in a separate service, which was implemented in Java spring boot application. Finally the Admin Web app was implemented in ReactJs.

Despite not winning any prize, It was definitely a hackathon to be proud of. Building a solution with complete strangers, each coming from different backgrounds, is no easy feat. It was quite an elegant solution and, while not being a technically challenging one, I was impressed with how we managed to formulate a good business case for our idea.

As I’ve written before, do grab any opportunity to attend a hackathon, even if you don’t have a team or know anyone. I was surprised with the outcome of this hackathon, and I must say that I’ve enjoyed more than my last time. I look forward to my next one.

Feel free to look at the code. Here are the repositories:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s