EuroClojure is the largest Clojure conference in Europe. It is organised by Cognitect and is a single track, two day event organised this year in Bratislava, Slovakia. Zalando was excited to sponsor the event and send engineers to meet hundreds of Clojurians, attend great presentations, and enjoy the beautiful city.
One of the most anticipated topics at EuroClojure were the presentations about clojure.spec, a new feature in Clojure 1.9 which is in the alpha stage. The talk that excited us most was Simon Belak’s presentation “Living with Spec”. Simon showed how the promises of spec translate well into large scale projects from tutorial examples. Simon elaborated how they originally viewed it as providing schemas, but they found out quickly that there were many other features like transformations, destructuring, and generative testing they got out of the spec for free. Clojure.spec seems very versatile and the performance improvements in the later alphas have addressed the biggest concerns that the Clojure community had.
We had great expectations for David Nolen’s keynote, having graced the Finnish Clojure community with a visit to the ClojuTRE conference in September where he spoke on the history and evolution of ClojureScript. His sequel talk at EuroClojure highlighted the next step: How, from a technical point of view, ClojureScript is ready for prime time and it’s now time to get more engineers onboard.
Some talks that were of special interest for Zalando were about crossing the chasm between Scala and Clojure. Zalando has a strong Scala community in addition to our Clojure developers, so combining and comparing the two is of great interest to us.
The first Clojure/Scala talk was “Clojure is a Foreign Country: Combining Datomic with Scala” from Peter Brachwitz. Peter presented an interesting case where his company wanted to reap the benefits of Datomic while developing with Scala. The topics that stood out were how to create typed queries and how to map the data back to typed objects on reads. Peter made interesting comments on the costs and benefits of using types. This brought about some questions: How could the same guarantees be provided with spec on the Clojure side, and would the costs and benefits be the same?
The other Clojure/Scala talk of interest was “Machine Learning with Clojure and Apache Spark” by Eric Weinstein, which presented a good primer on machine learning with decision trees using Spark and deep learning with DL4J. Eric explained the basics of machine learning and gave some good tips on what tools to pick up when working with them in Clojure. We’re eager to try out Flambo and Sparkling for Spark with Clojure.
Daniel Lebrero’s “Automating resilience testing with Clojure and Docker” was a favourite talk for Zalando’s engineers. It was premised on the ideas of antifragility in Michael Nygard's "Release it!". Daniel showed how they had been able to automate the installation of an isolated version of what they have in production, and then using generative testing to kill random nodes and verify that the invariants and guarantees they promise still hold. The whole topic would have been of great interest to those who don’t or can’t have Chaos Monkey running wild in their infrastructure.
On the entertaining side, Srihari Sriraman spoke about making computer-generated music. Not only was it greatly directed, but his presentation was also very insightful into Indian classical music. Srihari explained the basic concepts of the Carnatic system of music and then explored various possibilities to recognize and generate it in a programmatic way. The samples of his own singing were amazing; it’s always great to witness someone excel not only in one skill area but in several, and watch how different domains of knowledge become merged together.
The final and the most inspiring keynote was given by Carin Meier. Her appearance was announced by David Nolen, who referred to her as a speaker he personally admires, which turned out to be true for us in attendance as well.
Carin introduced a classification of programmers into four categories: Explorers, Alchemists, Wrestlers, and Detectives. She took the Alchemist path and showed two examples of how biology can be combined with IT. In the Genetic Programming case, given a vector of random values, a spec was bred that was able to conform the provided data without errors. In the Self-Healing Code case, a way to automatically replace erroneous parts of code in run-time was presented. This and the other talks we attended about clojure.spec unveiled the wonderful world of possibilities that the spec gives, which is inspiring and exciting.
EuroClojure 2016 turned out to be an awesome conference. The city, the venue, the people, and the talks were all better than we expected. Additionally, it was great to talk to engineers and share what we are currently building at Zalando. We love spreading the word about Zalando and how we’re building microservices with the hottest technologies that scale to web scale.
We’d love to share more information with the broader community about our Clojure initiatives at Zalando – reach out to us via Twitter at @veikea.