Thursday 25 September 2014

Microservices Hackathon September 2014

Practise improvisation daily. Practise making these harmonies or chord changes connect in a flowing, melodic way when improvising. - Horace Silver, The Art of Small Combo Jazz
We held our second microservices hackathon in London on 13 September (Programmers' Day, as it happens). Wow!

All these folks (and more who didn't make the picture - about 15 in total) are working in teams on a single application - a wacky cross between Tetris and Scrabble. We had teams coding in Java, Python, and Javascript, all communicating in the combo style. The result was a game server capable of running at least five simultaneous games without breaking a sweat, with a high-score board and very responsive gameplay - see Dan's video to get a sense for the game. OK, you only scored points for one word ("HORSE") but it was still a lot of fun to play. To see the code, visit the hackathon repo.

As with our previous hackathon, we learnt all kinds of things about how to run a good hackathon and about the microservices style - for example:
  • RabbitMQ connections, channels, exchanges, and topics can be confusing! We use only a simple subset of RabbitMQ's features - just pubsub really - and some of these elements are redundant for our purposes, hence troubling to newcomers. The combo API helped some folks, and we'll try to give an initial intro and provide examples to ease the way next time.
  • Speaking of examples, we had several ideas on how to help participants master the tools faster:
    • We should provide a pointer to previous hackathon repos to help people get started faster.
    • We should build a sample app to help teams see how their components could look.
    • We should provide a sandbox where teams can publish test facts. In several cases, a test publication by one team crashed another team's under-development component - ten points for robustness testing but minus a lot for inconvenience and surprise!
    • After the event, Tom Marks contributed a Python example client.
  • One person (Stans I think?) set up a Slack chatroom which was very helpful for exchanging fact formats and announcing events. We'll be sure to have this up before starting next time.
  • The process of setting up and co-ordinating the teams was lots of fun as always. We came up with some good ideas for collaboratively designing the facts and behaviours:
    • Tom put some of the facts on the whiteboard, together with the teams that were interested in them - see the bottom half of the above picture.
    • sleepyfox had a nifty idea we'll try out next time - creating CRC cards for each component and having the teams pass around notes representing the facts to see where the collaboration works (and where it doesn't!) 
  • Finally, we can't forget to have nametags next time, for forgetful folks like me.
Our next hackathon is coming at the end of October - feel free to join us!