Leethack alpha 2Posted 2016-09-19
As a side project at tretton37, a few of us ninjas have been working on a project we call LeetHack. It’s a system for competition, a chance for learning and a social event for nerds. We had our second alpha testing this weekend during our companies Double Knowabunga at Råbocka Lodge and about 18 brave ninjas participated. It was a showdown.
What is LeetHack exactly?
It’s a competition really. You set off hacking your way through a cluster of nodes, each posing some sort of challenge that you’ll have to solve using your programmatic skills. As an example, one of the challenges was guiding a skier down a slope so that he/she didn’t hit a tree or a rock but at the same time picking up as much “ingredients” as possible for the after-ski. Since the slope was very deep this couldn’t be done by hand, instead you had to come up with an algorithm for safely bringing the skier down. You would then get points for how much goods you brought to the party afterwards. Just focusing on getting the skier down would solve the challenge, but not beat everyone else.
The competitive element was new for this alpha and was one of the things we wanted to really start incorporating after the first event. The initial alpha was just a working system with challenges that you could solve but without any real gamification. This was the goal for the second attempt. Apart from just being able to get different points for a challenge, the nodes of the system were not all accessible from the start (as they were in our initial alpha), instead you had to chose a path when hacking away.
Starting in a black hole in the middle, you hack challenges in node clusters springing from it. Badges are awarded for special feats during the game.
The whole networked design was new as well as the original didn’t have any challenge structure. This is something that we’ll keep working on for alpha 3 in order to make the game more challenging and to promote tactical thinking.
How is this built?
We eventually staged the whole system in Microsoft Azure which allowed for us to avoid the hassle of keeping a server running somewhere.
How did you run the event?
We paired up our fellow ninjas as best we could as the game is fairly well suited for pair programming. Then they logged in to the system and chose a challenge. Every challenge comes with instructions, most likely an example and then in most cases some complementary data. In the example mentioned earlier where you would bring a skier down a steep slope you would get terrain data describing the slope. This data could then be used to calculate a safe path down.
Many different languages were used, but most bizarre was one groups morbid decision to use Excel and it’s abominable VBA to solve the issues. As weird as it was, it did prove that the system really is open for any language.
The contenders thinking hard and long
And you had no problems whatsoever?
Well, maybe a few. As the players started to chose challenges and try to solve them we did realize that we hadn’t spent enough time describing the challenges enough. We had spent a lot of time working on the purely technical part, but the problems that people had were more concerning what kind of data was expected in the answers, or what the rules were in a specific challenge. When designing puzzles it’s sometimes hard to thoroughly describe a problem that you yourself understand completely.
Other than that the event went smoother than we had hoped. Apart from issues understanding the challenges themselves people did not have much problem with the infrastructure of the game itself. It wasn’t until we started getting connection problems that we hit any major difficulties. But when we started having trouble reaching our Azure server it got increasingly difficult for the contestants to submit their answers and after about 4 hours of playing we decided to call it quits. All in all we’d had a good evening and all good things must come to an end anyway.
Well it was a close one. The winner was our own ninja (a surprise at an internal event) Zacharias Björngren. This guy is already a living LeetHack legend as he won the first LeetHack alpha as well.
From the left our winner Zacharias Björngren, then our runner ups Erik Juhlin and Daniel Ignat and in third place Peter Kedemo
In second place we had Erik Juhlin and Daniel Ignat who did compete for the first price for a long time. In third place came Peter Kedemo who became the first ninja to solve a challenge during the evening and who also held the record for bringing down the most “ingredients” from the slope in our skiing challenge for a large part of the evening (eventually beaten by team Nick & Hektor).
So, why then?
Programming is fun! That’s why we are in this business and that’s what we want to get better at doing! Even when our workday is over a lot of us have projects going, either because it’s fun or because we want to help out in some open software project or similar. One of the things that makes programming so splendid is the multitude of new languages and frameworks out there, but it’s sometimes hard to find ways and time to learn new ones. LeetHack is a perfect event for doing that. By having a set time to solve language agnostic puzzles you have the perfect excuse to throw yourself into something new. Maybe you don’t learn all the basics of the language and even miss out of some of the important stuff, but sometimes hands on action can teach you a lot more than hours of reading and watching video tutorials. Sometimes you just need a challenge with a time limit.
Besides, good company and fun prizes makes for a pleasant evening!
Where are you taking this?
To the stars :)
We have currently kept this project in-house as far as events go, and we still haven’t arrived at a point where we have something that is “production ready”, so to speak. We are hoping to host a public event sometime in the future but we’re not setting any dates. This is a project that moves rather slowly and at the will of its members.
We have plenty of ideas!
The LeetHack team
Shameless plug: Are you a ninja? We are hiring in all our offices.