At the start of last week a few of us here at Mind Candy attended a fantastic 2-day Skills Matter conference on Scala, with a fascinating keynote by Martin Odersky highlighting just how much Scala adoption is on the rise as of late.
To give you an idea of how mainstream Scala is now (sorry hipsters!), it has been adopted by the likes of Twitter, Foursquare, Tumblr, LinkedId, Intel, Amazon and eBay. Odersky recently ran a Coursera course on Functional Programming Principles in Scala, which received over 50,000 sign ups, of which around 20% submitted solutions to the problems (scoring an average of 8/10 for each problem) – in case you don’t know, this is remarkably high for a free course!
But why has it gained such popularity? Odersky attributed this rise in adoption to 2 main reasons:
- Moore’s Law is now achieved by increasing the number of cores rather than clock cycles
- Modern applications have to deal with huge workloads that require horizontal scalability
These 2 factors bring about a “triple challenge” of dealing with parallelism, asynchronous events, and distributed systems. By programming functionally and not using mutable state, we can make these challenges that much simpler, and this is becoming clearer to those of us in the industry.
Odersky’s covered this in his Keynote as well as a brief history of Scala (talking about how the early adopters were using Scala because of its XML support of all things!), along with some discussion of upcoming features in Scala 2.10 (including string interpolation, futures and implicit classes).
Other Interesting Talks
All of the talks from the conference are available here, but to save you some time, the following are the more interesting / useful talks from the conference:
- Philipp Haller gave a great talk on Futures and Promises, talking about have they been implemented in several existing libraries (causing much fragmentation), and the motivation behind bringing them into Scala 2.10 [SIP-14]. To clarify, a Future is a container for some result that may exist at some point, and a Promise is an abstraction that (only once) allows you to put a value into that container – together they provide a concurrency abstraction that allows determinism in your system.
- Viktor Klang gave some pragmatic tips for Evolving a Scala Project to avoid tech debt and save time chasing bugs that have worked for his team whilst working on the Akka project (a lot of these tips are actually pretty language agnostic). Make sure to watch out for the useful Scalac options provided towards the end!
- Daniel Spiewak‘s talk on Functional Compilers was probably one of the best of the conference. To be able to give a talk on such a dry subject and yet manage to hold the audience’s attention for the entirety is quite an accomplishment. Maybe it was something to do with his use of interpretive dance throughout…
- Alex Prokopec gave a talk on a Scala Performance Regression Testing suite called Scalameter, and talked about how it can help deal with some of the issues of performance testing on the JVM can be made tricky by dynamic optimisation, JIT compilation and garbage collection.
- Roland Kuhn explained the use of Clusters in Akka Coltrane, explaining how they are used to manage actor hierarchies to make remote deployment a lot nicer in Akka 2.2, as well as improving actor migration and replication, and node failover
- Stefan Zeiger introduced Typesafe’s Slick Database Access and Query library, which was designed to be the successor to ScalaQuery (check it out here)
- Jon Pretty told us about Rapture I/O, a general library for handling IO, with some very nice JSON support (get it here)