Cardiff Uni School of Computer Science Hackathon
10 May 2015It must be the season of Hackdays. Following on from Cardiff University hosting the NHS Hackday, the School of Computer Science and Informatics held a two day open source hackathon over the first weekend of May.
This was primarily organised by the students themselves, with the help of some of the academic staff. The aim was to create something demo-able within 48 hrs – no specific theme, but whatever was created was to be open sourced at the end.
While these are mainly learning / social events, they’d also arranged sponsors (with some quite nice prizes) and some judges for the usual nominal prize awarding process. Hence myself being there with a judge’s hat and writing this up.
There was a decent turnout, with five teams lasting the two days and presenting at the end.
![Not sure what's going on here...](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/What.jpg)
![AI Tetris](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/Tetris.jpg)
The first team developed an AI to play Tetris in Matlab. Now this is the first time I’ve seen Matlab used at any Hackday, so that was an immediate hook. In the end a good game was produced – fully graphical and complete with music. The AI part was… still learning though. Probably just a case of tweaking the min/max scoring, but a really impressive showing from a couple of days. Asked what they would have changed if they’d started again – spending more time planning & designing up front.
![MyBus during their presentation](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/MyBus-Pres.jpg)
Next up were the largest team, creating a public transport solution called MyBus. The scope and ambition was pretty big considering the timescale – yet they produced a slick marketing website, a mobile site for users, and a backend admin system. It’s essentially a ticketing system – you purchase tickets with the mobile webapp, then it generates a QR code to scan on the bus. They’d thought of lots of future phases – integrating with Stripe payments, and using NFC rather than QR codes.
It’s interesting to compare this to the recently launched Cardiff Bus application – that’s taken a slightly lower-tech approach of the mobile app generating a four letter “word of the day”, which you then just show the driver. Both have their pros/cons – the letter approach needs no modification to buses, while NFC would be slicker, nearer to Oyster cards.
A good project though, and one in which they learnt a lot about teamwork. Again, when asked what they would change, it would be more design up front. They originally started with PHP everywhere, before splitting into a more HTML/JS client with PHP backend (the right approach probably, if they wanted to wrap the webapp as a native Cordova type application) .
![Judges having a nose at the picking apps](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/Pickers.jpg)
At the other end of the team size scale, we had the next two projects – an outfit picker and a film picker.
The outfit picker was an entirely client side application, written by a 1st year who’d only started coding in September. It was a really nice concept – you enter what mood you’re feeling in that day, happy, energetic, sad, angry. It then recommends what you should wear. Currently colour based, but could easily be customised further. Though relatively simple, it shows the value of having a good idea and being able to do some coding yourself – something that’s being picked up across a number of industries like journalism, medicine and engineering.
The film picker application was another PHP application. This was a really good looking web application where you choose films you like, and a recommendation engine sees what other people liked and suggests what to watch next. While unfinished, it already had significant functionality, pulling it lots of data via APIs. This time when asked what could have been differently – using a different language.
I’d suggest to anyone doing a hackday type event – choose a language you’re fairly familiar with, probably a scripting language for development speed, and that has frameworks available suitable for quick prototyping. So that might be HTML/JQuery for a client side app, PHP with Laravel or a micro framework like Slim, Ruby on Rails, or Python with the Django framework. Or if you want to try something more funky, Node.js or Go…
![Always impressed by some good whiteboard action](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/Whiteboard.jpg)
Finally we had a team of mathematicians using one of those very frameworks, Django. They had a practical project that would be of value to themselves – writing a web front end for SciKit. You upload a CSV file of data, SciKit performs analysis such as linear regression, then the web app renders graphs using D3.js. Their thing they’d do differently was interesting – to write less tests upfront! Normally this is really good practice, but on a Hackday you can probably get away with skipping the test driven development. It’s always good to see non-core Computer Science people involved in these events. Incidentally Cardiff Uni has sponsored five students to attend DjangoCon this year.
In terms of prizes, we decided to drop the notional categories (“most commercial” etc), as there happened to be five teams and five prizes, so everyone was literally a winner.
![Prizes!](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/Prizes.jpg)
- Tetris – Raspberry Pis courtesy of Cardiff Uni
- Clothes Picker – TutsPlus subscription
- MyBus – Hosting courtesy of Linode
- FilmPick – Kindle courtesy of PayZip
- SciKit Maths Plotting – Amazon vouchers courtesy of Mayden
As mentioned in previous hackday write-ups, these events can work from a number of angles, possibly even more so for student led ones.
For the students, they get to work on a problem of interest to themselves. They can meet other staff & students in a slightly different semi-work like setting. When I’m recruiting and interviewing anything like these goes down well, as gives you something to talk about beyond course learning. And they get fed and watered for free in the process, and the chance of a small prize.
It’s useful for judges / sponsors too. There’s the obvious PR / awareness side. But there’s also the possibility of having students know you’re hiring, or open to year in industry placements. Personally, being responsible for a development area, I find it interesting to see what languages and ideas students have. While we tend to choose the right languages and frameworks based on requirements, knowing that the next generation all love, say Python, or PHP, can have some sway in technologies we tilt towards. And of course community work generally is just a good thing.
![Job well done all](http://blogs.cardiff.ac.uk/development/wp-content/uploads/sites/229/2015/05/Everyone.jpg)
Overall, a cracking showing, both in successfully organising an event largely by and for students, and in the quality of what was developed. If you want to know when more are coming up, follow @csicardiff on Twitter.