ClojuTre Report

Attending the ClojuTre conference

ClojuTre Report

September 18, 2015
Jon Pither

This was my first time at ClojuTre, a Clojure conference in Finland organised by Metosin. This conference is entirely free for attendees, and so immediately there's a feel good factor and positive vibe about it. Free maybe, but the event was still well polished and executed, so full credit to Metosin.

JUXT sponsored the conference alongside other companies, and Malcolm Sparks from JUXT also gave a talk on yada. This meant myself and Malcolm traveled up to Finland beforehand where we got to experience beer drinking and Clojure discussions while sitting unclothed in a hot sauna room with other speakers and sponsors. Post-sauna we enjoyed a fantastic speakers' dinner and the drinks continued to flow freely, gin in particular. Later on Sam Aaron got some tunes going.

Tampere in Finland is a beautiful place, and flying in over the forests and lakes one can imagine holidaying here, doing some fishing, kicking back, perhaps engaging in a coding retreat. We were treated to some excellent weather and so it was a gorgeous few days, idyllic.

You can see all the talks here. The talks were 20 minutes in length, which I thought worked well. It's rare that people manage to hold their attention span for much longer, and it can quickly become grueling to sit through a sequence of 45+ min talks. Also, Metosin started the day in the afternoon, which complemented my post-gin-recovery temperament well.

To get started, Micha Niskin gave us an overview of Hoplon that uses Javelin as opposed to the virtual DOM. There's lots going on here with using composable 'cells' as opposed to global atoms, and a literal HTML syntax. Hoplin seems fairly radical (not just another React implementation), and so is definitely worth checking out.

Renzo Borgatti gave an entertaining and useful talk on pearls of the Clojure core API. These are functions you probably don't know about that are potentially useful (i.e. destructure and clojure.reflect/reflect). Good old fnil was in there also, a function that I know about and should use more.

Sebastian Bensusan talked us through a comparison of the various of forms of polymorphism found in Clojure code-bases in the large, and observations on striking the right balance between getting things done and keeping things tidy. He ended the talk with a nice demo of a graphical interface he's developed for viewing namespace graphs.

Jonas Enlund gave a talk on alternative data structures, in particular core.rrb-vector giving us 'logarithmic time concatenation and slicing' and data.avl for sorted sets and maps giving rank operations and logarithmic performance for certain operations. It's good to learn about these data structures when you need help with performance.

Joseph Wilk gave us a stunning demonstration of Clojure produced music and visuals, using Overtone and OpenGL Shaders. This was a welcome interlude to the technical talks, giving us a chance to reflect on the beauty of life, to have our minds temporarily lifted.

Martin Klepsch's talk on "Desktop Apps with ClojureScript" was useful if you need to build a desktop app (to get the dock icon), and you also want to maintain writing the front-end in Clojurescript and React etc. He builds Clojurescript apps using Electron.

Markus Hjort gave an experience report of the differences between writing microservices in Javascript, Scala and Clojure. Needless to say Clojure wins, and he had some amusing remarks such as "You can tell when a colleague is working on a Scala service, because you can hear the CPU fan".

Malcolm gave an 'intro to yada' talk. yada is a framework where we can specify our web resources in data, providing a simple way of serving resources using yada that totally nails the HTTP spec, gives you lots of async goodness, out-the-box Swagger support which is all the rage.

Tommi Reiman of Metosin talked about a library he's building called 'Kekkonen' that helps to compose 'commands and queries' in your Clojure web application. I've felt the pain I believe Kekkonen will hopefully alleviate; i.e. you want to build APIs you can call from ClojureScript, but it can be over the top to build RESTful APIs for each command and query. That's a lot of boilerplate REST code, and lots of potential debates about constructing the perfect RESTful endpoint, when it's only internally consumed anyway. Kekkonen will provide a lightweight 'registry' where you plug your commands and queries into, and all the web routing plumbing is done for you. It will also help you with security and HTTP options around the commands and queries, using meta-data on the command/query API functions. Interesting stuff.

Ari-Pekka Viitanen talked about building multi-tenant SaaS application, and how he approached data segregation between clients. He illustrated their use of dynamic scope, developing a with-tenant macro to switch between tenant contexts, while added a cautionary note of the dangers of dynamic scope in general.

Luke VanderHart gave an inspiring talk on 'Simplicity in Practice'. Luke is an engaging speaker, encouraging us to think about wieldly systems, bringing together the concepts of simplicity and ease, which are not mutually exclusive. This is basically a talk exploring how we can be better programmers.

"Wherefore art thou LFE?" by Robert Virding was the last talk, basically a Lisp on the Erlang VM. If you're on that particular VM and you want a Lisp then check it out.

All in all an enjoyable and relaxed conference. Sam Aaron and Joseph Wilks once again provided some tunes at the conference after party, where there was a mass of pizza and black sausage, and the beer also flowed.