Excelsior has just turned 13 and we had decided to mark our entry to teenage years by celebrating the anniversary like never before: conduct a hack day, aka hakathon. Here is a brief report.
The rules were simple: arbitrary teams do hacks of any kind, show to each other, and vote for winners. The event spanned two working days, Friday and Monday, so those in the mood to hack continuously also had the entire weekend.
How It All Happened
On Friday, October 5, morning really started at dawn. Lots of people in the office at 9am, traffic jams notwithstanding.
After a light breakfast, everyone sat in front of their keyboards, and only gathered again to consume the lunch, delivered from a nearby bar’n’grill, and an assortments of pizzas and pies in the evening. A few engineers indeed came to the office on weekend, and some worked on their presentations until the very last moment on Monday.
At last, we had a chance to see who accomplished what. For an hour and a half we enjoyed listening to each other, watching presentations and demos, asking questions, and laughing at jokes.
And then we voted and the winners got their prizes.
Here is how it looked:
A total of nine projects have been completed. And by completed I mean that no single team has failed to produce at least a proof of concept, which only made it harder for everyone to distribute points during voting.
Each project was in its own way cool, and I cannot resist the urge to tell the world about them.
Can a pair of engineers retarget an industrial compiler to a new CPU architecture in one day?
The answer has turned out to be yes. Although of course it depends a lot on who are those two engineers and which compiler they retarget. And although the team was the best possible, nobody has stressed that particular compiler in such a way before. So everybody has been wishing that project a success.
In the end, the working “Hello, World” has impressed even those very people who made it possible. I still cannot believe it, even after seeing it myself.
Needless to say, this project has won the main prize with enormous gap, plus the “Most Impossible Project” prize.
(Sorry, but we cannot tell you yet what the compiler, language, and CPU are. “Hello world” working is far from being ready for general use, and we do not like to release vaporware. Will let you know in due course.)
Build System Monitor
Over the years, we have developed a proprietary system for building, testing and benchmarking our JVM. The original idea was to utilize all PCs in our office during their idle hours, so the entire process is still called “night build”, even though it oftentimes happens during the day now. However, one important piece of usability had been missing up until the Hack Day.
The result of putting all this computing power to work used to be condensed to a few dozen emails, which every developer had to go through first thing in the morning. Every working day, year after year. So the engineers simply could not miss such a golden chance to get rid of that boring morning exercise once and forever.
Now the result of a “night build” is accessible via a Web browser, and it takes each engineer just a few moments to understand whether he or she has any yesterday mess to fix or can work on something new and exciting right away.
It worked great. This project was the runner-up and has been immediately put to use.
What happens if someone solders a USB port to an AC remote and then, following the great sculptors’ advice, cuts off the unneeded pieces of this project code? An elegant little program that can control room temperature via the USB port to which the remote is now connected.
To introduce the principles of Swiss democracy into office life!
Next steps: develop a Web-referendum with fraud detection, for the (micro)climate consensus to win once and forever at least in one selected room.
This project has won in the “Funniest project” nomination.
The Nothing System
Put briefly, The Nothing System implements the ideas on which Prof. Niklaus Wirth had based his Oberon System, and that were further refined and developed in BlackBox. But The Nothing System does that in Java. And because Java provides much more capabilities for implementing such ideas, those ideas have the potential to change the world, if carefully nurtured. People would forget about application installation, and Web technologies would at last turn the right side up.
You did not quite understand the preceding paragraph, did you?
Few of us understood the author of The Nothing System during his presentation, even though the idea is quite simple. But it is so orthogonal to the industry standard, conventional principles of software development, that one has to play with it quite a bit to assess the potential.
This project has won in the nomination “Shut up and take my money”.
This project may be continued if the author manages to find two or three technical people sharing his vision.
- The author presenting The Nothing System at 2GIS DevDay (video and slides, in Russian)
- Source code on GitHub (in Java and English)
Generic Programming Injection
It is well known that generic programming is a paradigm for designing and developing reusable and efficient collections of algorithms. In particular, C++ templates, Java generics, etc., enable a single implementation of an algorithm to be reused for different data types, hence reducing code duplication.
It is also known that support for genericity has not yet been introduced into some languages that deserve it. Among them is one language that we are using intensively these days.
This project was a heroic attempt to catch up and save colleagues’ time and brain power.
The result is a working prototype, cheers from the audience, and a bright perspective of productization and industrial use, in one selected company for a start, and then worldwide. Again, we shall communicate the details, but only when the time is right. Sorry for now.
Keyboard layout locker for Eclipse
This project is of no interest to you the English-speaking developers out there in English-speaking countries. You are lucky: you write keywords, identifiers, comments, string literals, and documentation in the same language, which happens to be the default and only language on your system.
Those whose language’s alphabet is Latin-based do not normally suffer from the problem this project addresses either.
Everybody else has to switch keyboard layouts. For instance, here is how keys are laid out on a typical Russian PC keyboard:
Image courtesy of Wikimedia Commons
And when you accidentally or deliberately switch the layout to Russian, the hotkey combinations that include English letters simply stop working!
It happens all the time to every Russian developer that we know of. And annoys.
The result of this project is a single toolbar button in Eclipse. Clicking it once disables keyboard layout switching. Another click, and switching is back on.
No wonder the #1 post-presentation question was “Where do I get this?”
IDEA from Eclipse
I am not sure about you and your colleagues, but at Excelsior we have fans of the Eclipse IDE and fans of IntelliJ IDEA. And every engineer thinks that his/her favorite IDE is much more powerful and convenient.
The authors of this project attempted to blur the line between the two a little bit, by implemented in Eclipse one of the small features of IDEA: vertical indent guides that facilitate source code typing, formatting, and reading.
Result: It works! To be productized and published.
File Exchanger for the Masses
Forcing customers to use FTP for transferring large files e.g. to techsupport sounds inhuman today, when inexpensive online storage services are abundant.
However, it is similarly inhuman to ask them to sign up for a particular service to transfer a single file. Unfortunately, none of the popular services allows us to give our clients unlimited anonymous free write-only access to our storage space.
This project aimed at the creation of a simple file exchange Web application for the needs of our employees and clients.
Result: a working prototype that the author is already using, and plans to productize it and deploy on our file exchange server (which supports only FTP at the moment.)
Skype IM Pretty Printer
Even our Director of Marketing has jumped in and automated a bit of routine out of his day-to-day work.
Skype IM is his second most used communication medium after email. Problem is, a chat looks nice in the Skype client, but a copy/paste turns it into an unformatted mixture of names, timestamps and messages, Sending a chat excerpt by email therefore requires manual editing, out of respect to the recipient. Not good.
The author has selected Visual Basic for Applications as a tool, so as to not go too far out of his image, and added a macro to Outlook.
Noblesse oblige, so this project will be published. There are already three users inside our company.
Update: The project is on GitHub.
First of all, I want to thank everyone who participated in this event. Without you, it would have missed the most important – the somewhat crazy atmosphere of this professional creativity festival. And the festivity itself would have gone too.
To be continued…