On November 2, 2015, the first hackathon took place in our company. It took two days within our department only. At 5:00 pm on the second day, everyone needed to demonstrate the results of their work. Themes could offer any. Four teams took part in it. Our team was numbered 3. I will tell you about our experience. Who are interested in welcome under cat.
Team
Our team was called Illumi and consisted of four people. People in our team were different, an approximate alignment of skills: a frontend developer who went over to the dark side of the backend; three developer backends that have moved to the bright side of DevOps and are currently more involved in process automation. We are all directly involved in programming. I didn’t really want to do the same on the hackathon. Therefore, we decided that on the hackathon we will be engaged in the implementation of code integration with hardware. When you first program, and then a physical process takes place, it is really great. If you do this every day, most likely, there will not be the same high).
Knowledge of our team in the field of programming under the Arduino, as well as the laws of Ohm, Kirgof, Coulomb, etc. limited to university and school. Therefore, within a month we were tightening the materiel and assembling our future system in pieces. And at first, we understood the concept of what we want to get, but in reality we decided on implementation only three days before the start of the hackathon. ')
What I wanted to get from the hackathon
We had a very simple goal for the hackathon - to get a lot of pleasure from the realization of our idea. For a whole month our conversations on smoke breaks, dinners and even in private time were about our project. There is probably nothing more to add here.
Formulation of the problem
Develop a system for visual notification of necessary events. For example, in case of a critical error on the server, an alarm lamp lights up.
This solution is intended to speed up the reaction to the previously formulated problem, in general, improving the quality of the service provided. Also, do not lose sight of the social aspect. People who come across such a decision for the first time will inevitably show an interest, which as a result will have a beneficial effect on the communication system within the company as a whole.
Project
In simple words, we decided to implement a system that would notify us about production packs. Two types of notifications are supported: the first, when something fell on the shelf, a flashing beacon lights up in red; the second one, when some characteristic goes beyond the permissible limits, a flashing beacon lights up in yellow. For implementation, we used:
Arduino nano, as an ignition \ quenching controller for light signals;
Two flashing beacons (red, yellow);
Two strobes, for an interactive component (blue, yellow);
Power Supply;
Two relays;
N meters of network (ethernet) cable for the transmission of electric current from the Arduino to the beacons;
3 power sockets;
Food container, for containerization of arduino. Docker, hello! We are now containerizing everything);
The side cover from the old system unit, which was used as a platform on which the beacons were installed;
An office fan, which was disassembled and used as a tripod, for demonstration;
PHP, Silex;
A bunch of different stuff.
Two days hackathon
First day
Hackathon started on November 2 at 10:00, general photos, pancakes and Dr. Pepper. It was not without late, not everyone was able to come to 10 am on Monday).
As it seemed to us, we were ready for the beginning of the hackathon. We understood what we were going to do, how we would do it, bought all the necessary components, planned out the steps and understood that at the end of each step we should have a ready result - an iterative approach. There was a video broadcast of what we would do, so we prepared a plan for interactive with users, an iterative approach helped us in this. On the first day we implemented a prototype on stroboscopes. In the middle of the first day we already had a working prototype with which everyone watching us could play around, and we continued to work. To describe the system being developed, we used the 4C approach (Context, Container, Component, Class). In our conditions, we did not fall below the level of Container. Laid out in the public interface with 4 buttons on / off, blue / yellow strobe. Then a file with interactive caught up with us, there was a delay of about 30 seconds in the video broadcast, so the interactive turned out to be not entirely interactive, but everyone who tried to control our strobe lights remotely liked it. There was even a moment when one of our employees wrote a script that constantly turns off the lamps, and no one could turn them on. I had to find and fix the person). Also at the very beginning there was a problem with various firewalls and network settings, which we didn’t even think about, spent 3-4 hours to solve it.
We parted somewhere in the beginning of 10 pm. Managed most of the planned for the first day.
Second day
The second day we started at 8 am. We expected that on this day we will get off only the physical implementations of our system. Installation and installation were invented on the go. They cut, drilled, twisted, isolated on the spot, were not allowed to solder in the office). We adhered to the modular structure of our system and decided to make a self-test button that includes our beacons for 5 seconds each. It almost became a fatal mistake. I had to spend ~ 2 hours on mastering and debugging work with the button, but the effect was worth it. Now the system could be tested simply by connecting to the power supply and pressing a button. Another problem we have encountered is the weird behavior of the Arduino. Sometimes she did not want to respond to our commands. In the long search for a solution, we realized that it needed some time for initialization, and it was impossible to work with it according to the client-server scheme. In this case, the client will always have to wait for initialization, and that is ~ 2 seconds. To solve this problem, we implemented a simple socket server in PHP, which, when started, initializes the Arduino and then allows you to transparently communicate with it without having to initialize the connection. A little later, they also implemented a socket server on Erlang, but in the end, the PHP server was still used during the demonstration, since we don’t have any strong Erlang specialists, and we didn’t want to risk it on a demo.
Hour X was at 5:00 pm by this time we had everything ready and we even came the very first to the demonstration room to prepare everything. On the demo, we showed that we created a remote control for remote control of light beacons. It was possible to go to the url from a mobile phone and manage them. While I was talking about what we did and how, everyone in the hall could play around with our decision and it was already full interactive!
Result
Our complete system (photo / video):
findings
Hackathon, this is really great and fun and a great way to diversify working everyday life;
For such an event is preparing in advance, two days is not so much time as it may seem (if you certainly do not, what you do every day);
If possible, use an iterative approach, this will help you with different failes. You will always have a finished product, maybe it will not fully correspond to what was planned, but this is better than nothing;
Feil come from where you did not expect. In such a short time, any file is felt very strongly. During our hackathon, almost before the end, our GitLab fell and for other teams it became a very unpleasant event. It was possible to revive it in a short time;
Team size Choose the size of the team best for your task, just do not forget about the knowledge and skills of each of those who will be in your team. With a larger size, you will lose a lot of time to synchronize the actions of all members, parasitic communications are evil;
Pizza. Most likely this does not apply to everyone, but there is 2 days pizza - not possible. Therefore, think about the food in advance.
Conclusions after 5 months
We have collected a huge number of wishes and problems with the first version of the hackathon;
Not all hackathons were interesting and not everyone is ready to participate in it again;
To "sell" the idea of a hackathon to a business is not an easy task. There is no solution without context;
Of all the projects that participated in the hackathon, only ours work in production and are beneficial;
To integrate into production, some parts were rewritten to Go;
We have already begun to think about ideas for a new hackathon;
We tried to preserve and apply some approaches and the spirit of the hakaton in our daily work;
If you want to do something, you should follow the rule: you just need to take and do, and for this you need to start and finish.