A group of four bevuta developers (including one of our apprentices) traveled to Bratislava to attend this year’s EuroClojure which took place there on October 25th and 26th. As always, the two days (and nights) were brimming with informative and inspiring talks both on and off the stage. Here’s our report on it!

Before we dive right in, let us begin by praising the fact that each EuroClojure takes place in a different city somewhere in Europe – you’ll get to know a new place each year! This time we all met in Slovakia’s capital, Bratislava. The venue was the beautiful Old Market Hall situated right in the old town of Bratislava which itself is definitely worth a visit with its historic alleys, buildings, and squares – and, of course, cafés, restaurants and bars.

clojure.spec @ EuroClojure

The dominating theme this year was clojure.spec. On stage, Simon Belak gave a whirlwind tour of how they use (and intend to use) it in their codebase at GoOpti and Michael Reitzenstein showed off an experimental Clojure→C compiler which utilizes clojure.spec for an unusual but promising optimization strategy. To top it all off, Carin Meier used spec as a Philosopher’s stone to produce silver and gold by applying it to the ideas of genetic programming and self-healing code. Once the videos are available, you should at least watch the latter!

Many off-stage discussions revolved around spec, too. For example, during one of those we learned through David Nolen that many people were interested in a way to attach docstrings to registered specs. This is a subset of the idea we mused about at the end of our recent post about parsing query parameters with spec. He mentioned that there was a corresponding ticket in Clojure’s tracker which we should pile on. If you are also interested in this, please do so as well!

More talks

However, spec wasn’t the only topic. As seems to be established EuroClojure tradition by now, Michał Marczyk started the second day with a well-informed talk about an interesting data structure, and this time it was about Priority Search Queues. If you enjoy the intricate details of data structure implementation, Michał’s talks are always a treat.

Jean-Louis Giordano gave an experience report of converting an existing Rails application to a ClojureScript powered single page application at Zimpler. This kind of presentation is always very instructive because it touches on a lot of practical issues one encounters when introducing Clojure into real-world projects. If you are in a similar situation, be sure to check it out!

But there were some unusual contributions this year, as well. Particularly remarkable was Mike Pearson’s account of a project he’s been working on at the University of Cambridge. He gave us insight into the realities of working with statistical data in the medical profession, specifically interpreting statistics on survival of child heart surgery. A compelling aspect of his presentation was how well Mike (who is a mathematician by trade) conveyed the difficulty of communicating these statistics to a broader public without inadvertently misleading it. He illustrated this by taking us through various evolutionary stages of his application and demonstrating how the test users have drawn invalid conclusions from the data. Apparently the way data is presented has a very strong influence on how we interpret it, e.g. one common cause of misinterpretation was that the user interface allowed to sort the data by arbitrary dimensions. They even came up with a kind of checklist which guides the user to avoid these pitfalls. Needless to say, the application is written in ClojureScript, but it was mainly the non-Clojure aspects that made this talk special. Time and time again, it’s fascinating to see how the human mind is not made to intuitively deal with statistics!

Another of those special contributions was by Malwine Gier and Arne Brasseur who talked about their experience hosting ClojureBridge events. ClojureBridge is an inspiring and energetic approach to resolve the lack of diversity within the programming community. And as we learned during the talk, it bears fruit – which is awesome. Since some of our developers were coaches at the first German ClojureBridge event in Solingen, we know how great an experience this can be. If you are unfamiliar yet with the concept, we highly recommend this presentation.

Between the main tracks

The most noteworthy change from the last years was the Unsessions at the end of the first day. Starting just after dinner at 8:00 pm, various more or less improvised sessions about prearranged topics were held, accompanied by two well-stocked open bars.

Colin Fleming for instance hosted a session about the Cursive Clojure IDE in which he demoed features (such as its capable debugger) and readily answered all kinds of questions by existing users and potential adopters. It was a particularly insightful session because Colin is the main author of Cursive. He’s also from New Zealand, though, so it was a timely coincidence that he was in Europe at the time to join us at the conference.

Another unsession about the state of server-side HTTP in Clojure was hosted by Philipp Meier and Malcolm Sparks. They gave us a historical view on how the Liberator and yada libraries came about. Interestingly, they live in peaceful coexistence: Malcolm and Philipp frequently cooperate on both projects and they share the common goal of encouraging people to use the features HTTP by making them easily accessible. In the ensuing discussion we also touched on a topic that we think is essential to understanding (RESTful) HTTP, namely the primacy of hyperlinked mediatypes. In the course of this we also learned (in a possibly not quite serious aside) that the Swagger support in yada is mainly a vehicle to drag the “HTTP API” people halfway to REST, similar to how Java was supposed to drag the C++ people halfway to LISP. We also toyed with the idea of a proxy server / middleware which randomizes URLs to enforce loose coupling (a kind of Unswagger). I We eventually agreed that this is mainly an educational issue, though, which cannot be adequately addressed by technical measures.

The apprentice perspective

EuroClojure 2016 was the first conference our apprentice Adonis ever attended. Here’s what he thought of it:

As an apprentice at bevuta IT with a little Clojure experience, I was very excited about what I could learn and take away at EuroClojure. Since I’m working with clojure.spec in my current project I found the presentations around it especially interesting. Personally, I learned a lot through the discussions with the diverse people from all over the world. Even though I couldn’t contribute to every topic, I always learned something. I also had the opportunity to talk to David Nolen, who I didn’t know up until then. I feel like this encounter really sharpened my understanding of Clojure and its principles. Generally speaking I can recommend visiting EuroClojure to anyone who’d like to broaden their perspective and am looking forward to experiencing this special atmosphere next time around!”

EuroClojure 2016 - Conclusion

While this report can only offer a glimpse of the whole EuroClojure 2016 experience, we hope it sparked your interest to watch some of the presentations. Thanks a lot to everyone who made this conference so pleasant, entertaining and educating – attending EuroClojure is nearly as nice as working with Clojure is. Hope to see you at next year’s, wherever it may be!