ScalaX 2017: Scala is on the rise!
Last December, the 7th edition of the Scala Exchange took place in London. ScalaX is one of Europe’s largest annual Scala conferences, with excellent speakers from all over the Scala community. This year was no exception, with great talks from Bartosz Milewski, Holden Karau, Rúnar Bjarnason and Debasish Ghosh. At Anchormen we use Scala in a number of projects, so a few colleagues and I were given the chance to attend this great conference (my colleague Julien also wrote a short piece on his experience at ScalaX, which you can read here).
During the opening there was a round of questions for the audience and I was surprised to see that over half the people were first-timers, including myself. It seems that the interest in Scala is on the rise, and I think learning Scala should definitely be one of your New Year’s resolutions if you don’t know it already.
The keynote speaker, Bartosz Milewski, opened the conference with an interesting topic – Category Theory. He summarized it as the “Science of Composition” and continued with an introduction on objects and morphisms. Using a small set of simple introduction and elimination rules, we were introduced to a number of types (void and unit) and operations (addition and multiplication).
The talk sparked my interest in category theory and I decided to continue trying to learn more about it. Daniela Sfregola approached the subject at a more practical angle, drawing the parallel with various types from the Scala language. In her talk she explained about monoids, functors, applicatives and monads, plus how they can be applied in an effective way.
The second topic I followed throughout the conference was a more practical one – Akka. Having no experience whatsoever with Akka, I thought this was the perfect opportunity to start learning.
Christopher Batey gave an excellent introduction on Akka streams. He showed how Akka streams allow you to build async and back pressured systems. In a demo he showed how Akka streams implement back pressure all the way down to the network layer, cool stuff! Some of the advantages of using back pressure in your architecture is that it protects you from overloading downstream services, doing unnecessary computation and having a more consistent memory footprint.
Like any other toolkit, Akka has its do’s and don’ts. Manuel Bernhardt went through 8 anti-patterns in the Akka Actor model. The ones I could relate to were issues you find in many toolkits, such as sharing mutable state, the overuse of thread pools by defining many actor systems and the inefficient use of logging libraries. I really found the parts about blocking I/O useful. Manuel showed how to avoid writing blocking code yourself by using the ask and pipe patterns. Furthermore he showed how to deal with external libraries, where you just don’t have a choice but to block.
I had a great time at ScalaX. What I really liked was the possibility to alternate more theoretical talks with more practical ones. Being reasonably new to the language myself, I think it was a great way to get acquainted with the community and learn about a whole range of interesting topics.