What's the best thing about hackathons? You can build cool stuff and have a lot of fun at the same time.
A few weeks ago, our company retreat took place in the beautiful city of Wągrowiec. It’s located next to a lake in a fresh beautiful area, perfect for chilling out and relaxing.
We took the entire Friday off as a company. We spent time together doing fun, interesting things without having to use technologies integrated into our daily lives (sorry Ruby!).
A hackathon—also known as a hackday, hackfest or codefest—is an event in which computer programmers and others involved in software development (...) collaborate for a brief period of time to build software (or sometimes hardware) projects.
Organizing Our Hackathon
Before the hackathon, we gathered ideas from our teams and generated a list of app “code names” plus a short description of the project’s concept. As usual, there were plenty of ‘-guru’ apps. Then, we passed the list around our office and people signed up for the project they would participate in.
On site, we had a large room at our disposal and worked in tight groups. We had access to a WiFi connection, but of course, it went down after a couple of minutes as the entirety of Netguru connected. To be fair, there were 40 of us—a simple access point wouldn’t have been enough to provide decent service any way. Fortunately, the 3G network was excellent, so we fired up our tethers and continued onwards.
Note for the next hackathon-retreat: Buy prepaid SIM cards and SIM-card based access points! This ensures no one dies from lack of internet access.
Here's what we built on a lovely summer day, in under 6 hours.
The aim of our project was to get acquainted with the React.js library and architecture created for it called
flux. Both projects were created by Facebook, where they are used in production. In addition, probably most (if not all) of Instagram is written in this framework/library.
ToDo applications became boring, we decided to create something that might be useful in the future, so we choose to re-implement the
LinkGuru application which is our internal app to exchange links within a company.
LinkGuru was part of a bigger application, and now has been extracted to a separate app, it will be open sourced very soon!
Lost In Translation
Lost In Translation is an improvised idea for an educational game conceived during the hackathon. It started with Brian (our Irish colleague who joined Netguru recently), who brought a list of both Polish and English equivalents. He was looking for a simple app that could aid his language learning process. After a wave of intensive brainstorming, we ended up with three potential ideas to implement it, however with the time mercilessly running out, we focused on one of them.
The end product is a simple
CoffeeScript game starts with a pop-up list of 10 words, randomly picked from the database. It requires the user to provide translations for them within a time frame of 45 seconds. Once the time is up, the translations provided are checked for their correctness and marked in green or red depending on the outcome. The number of correct words is counted and returned as score out of 10.
We made an arduino-based goal detector for foosball game. First, we put a light detector on the game board. Then we mounted a laser pointer directed to the detector. The board was connected to arduino and (potentially, but we didn’t get it to happen) mounted somewhere behind the goalkeeper on the table.
The idea is very simple: when the beam is interrupted, Arduino receives a signal and this is how the goal event is recorded. There is also a web app for that which shows the score in a real time! See github.com/netguru/fussballguru.
fun with Arduino
We noticed that as Netguru grew, and more and more people work remotely, not everyone knows each other across teams. To solve this, we created an app that helps people match and memorize faces to names. It is based on quiz that asks user to match the photo with proper name. You can play it on the web or on mobile devices. It’s simple, fun and helpful. See github.com/netguru/whoiswho for more information.
Office Stuff Finder
We wanted to create a mobile app to help us identify stuff in the office (well, the name says it all!). We created an app containing a list of things we have in office (notebooks, displays, keyboards, etc.) with the id of the current owner next to it. We generated a barcode for each item in the list, printed it, and stuck it to a given device.
We then implemented a mobile app to able to read the barcode, connect to the DB, and tell us details about the object and owner.
AchievementGuru is a web application that allows you and your team to gather achievements. What is an achievement? It can be anything valuable or funny that people in the company do. From spending a night in the office after a party, to successfully deploying to production on Friday after 6pm, or getting some number of Git commits in one day.
This application gives lets you create and manage achievements. The users can request them and admins can accept those requests. Every time an achievement request gets accepted, you see a HipChat notification appear in the specified room saying Jane Doe has just achieved N commits per day! Awesome!.
Achievements are divided into two categories: public and private. Private ones are the funny, internal and person-specific ones. Public are the ones you can and should brag about outside of Netguru! :) Some bragging rights include: conference talks, blog posts, actively contributing to open source projects and so on. See more here: github.com/netguru/achievementguru.
Our onboarding for new employees requires a
new hire checklist and it has become especially long and complex. The tasks mentioned in this checklist can be boring and takes up time (and clicking!). The idea behind this app was to automate all of the tool-related parts for a new Netguru team member. This includes: github access, pivotal, hipchat, etc. All of that in one place, where new member can see what is their current status, what else is necessary to complete the onboarding process. Also, when all steps are completed, an email containing all the required data (1st login passwords, urls, etc.) is batch sent and everyone is kept in the loop!
Following the train of thought that you can CI everything, this small project makes managing github teams and their members easy... using git! Once you push your team configuration to the project, the CI server will automagically apply it to github. This makes managing and reviewing the permissions easy and trackable. The project should be open sourced very soon :).
SlimZSH is a set of configuration files for ZSH, that aims to be easy to learn, feature-rich and fully understandable by users. See more: github.com/changs/slimzsh.
At the end of a day we made a round of quick pitches about each project and after that we voted together for the best project.
All of us really enjoyed the event. It was a rare opportunity to work together on less-serious stuff with people we don't necessarily see every day, as a lot of us work remotely. Company retreats help us to know each other better, but events like a hackathon makes it even easier to break potential communication barriers. It's not always easy for us— programmers aren’t always ready to talk to new people—but when we have a common goal, common issues and a medium which we are used to (duh, code) then people come together.
What's the best thing about our hackathon? We were able to build cool stuff and have a lot of fun at the same time! I hope hackathons will become a tradition in Netguru and we will be able to share our ideas with you every couple of months!