It was 2015 when I attended my first Scala Italy conference. I was freshly landed in the functional programming magic world and I was tasked by my boss to asses whether Scala was a technology with a future or just a fade. I sat there, as proved by the picture used over the years as a background for the conference website, and enjoyed the show.
The conference was well organized, with a bunch of sponsors and some hundred people attending. My report, reinforced by attending Scala Days 2016 in Berlin, was that Scala was viable with quite a strong interest and support from the industry.
Then the Covid pandemic came disrupting all the social in-presence activities, that up to that point didn’t require the in-presence remark. Scala Italy had IIRC an online-only edition in 2020, then went silent until this year. Scala Italy 2023 returned as an in-presence event held at Buildo headquarters in Milan.
What struck me first, was that attending people were just a fraction of what they used to be. We fit in a medium-sized meeting room. By thumbometric estimation, I would say we were around 30 people, no more than 40 for sure.
Not that this is bad per se, somewhat less confusion, and for shy people like me, easier to network, easier to approach the speakers. On the other hand, only Buildo was left as the conference sponsor (kudos!), with the other big names such as Bitrock (former Databiz), Vodafone, and Unicredit, missing.
Does this reflect a diminishing interest from the industry for the Scala language? I would say so… also, overhearing talks during the breaks, it looks like Scala is no longer used in new projects.
What happened? Hard to say. For sure there have been several factors that didn’t help:
- The switch from Scala 2 to Scala 3, fractured the code base due to incompatibilities;
- A divided and often competitive community, I won’t take part since I didn’t go into details, but there have been arguments between authors of major libraries;
- Some bad stories of harassment from a prominent Scala personality;
- Lightbend – the commercial sponsor of the language – failed to identify and promote a killer app to push the industry to switch to Scala;
- Java evolution partially filled the gap with Scala, offering some tools and libraries that were once uniquely provided by Scala.
Anyway, this is just sad, because I think that Scala is a sound and powerful language, that offers interesting and expressive features for programmers at all levels, helping the development of robust and safe software.
But let’s not digress. Here you are my analysis of the conference and a brief introduction to the talks. Possibly you will be able to find the talk online in a while.
The headcount was quite low to produce some meaningful stats. I would say that age was quite spread, with a predominance of males. That’s a pity, especially after having been at Codemotion where the population is starting to be diverse.
In my report on the last Scala Italy, I wrote that the average age was increasing over the past editions and the number of attendants went down. I interpreted those as a sign of maturity. But looking at this 2023 conference, it suggests it was the beginning of the dawn.
Well, no stands. Buildo, as the only sponsor, and the host of the conference, was very present and very available. I expect at least a presence from BitRock, the Italian partner of Lightbend since Bitrock’s website claims that 70% of their projects are based on Scala.
Food & Location
Let’s start from location. Venice and Bologna were notable for their locations downtown, the Milan conference was hosted in a skyscraper in Gae Aulenti Square, and the Rome and Florence conferences were in gorgeous hotels.
Scala Italy 2023 broke this tradition and brought the conference to an old, half-refurbished, industrial warehouse. Don’t take me wrong – the place was comfortable, and the rooms were modern and well-equipped, but the context was a bit industrial-archeology style. It has to be mentioned that the conference price this year was 1/10 of the price it used to be, nonetheless, it included the conference T-shirt and the food (more on this below).
The conference had been hosted in two rooms – one where the talks were presented and the other one for breaks and lunch. Between every two talks, a break offered the chance for a short walk, a coffee, or some food.
Food was abundant and always present – from croissants and pastry for breakfast to lasagna and crespelle for lunch.
The break room also had a foosball and two videogame positions where guests could play together.
Zero to Full-Stack Hero in Scala
In this talk, Daniel Ciocîrlan led us through a lively coding of a simple application from the database to the front end. Using several libraries (cats and Circe are the first that come to mind) and Scala.js Daniel managed to code in a hour the whole example.
For sure it is an impressive feat, that highlights the advantages of using the same language for the backend and the frontend. On the other end, the example was really basic and not very representative of a real application, especially for the front-end part.
Far more than you’ve ever wanted to know about ADTs
This talk by Nicolas Rinaudo was a very good and well-organized introduction to ADTs. Starting from the problem that ADTs can help solve, Nicolas made his way all through the ADT, GADT justifying and motivating their introduction. Plus, he used Gundam as the character for the running example and this alone bought me.
Simple TCP chat with simple native client
Antonio Gelameris presented a simple chat system using Scala native. He talked about the Scala native project status and features before delving into the code and walking through the sample application.
I’d like to give Scala native some more attention, but I learned a couple of surprising facts. The language port is currently single-threaded. They managed to get many libraries working thanks to some tricks, but if you need real multithreading, you have to wait for future versions.
The other surprising fact is that even if compiled into native code and optimized using the clang backend, the performances are worse than the interpreted version on the JVM. JVM JIT compiler does a great job at speeding up bytecode execution. Nonetheless, the compiled version of the same code runs at some 50% slower than the JVM version.
How incremental compilation makes Scala 3 builds faster, and can we do better?
Jamie Thompson is a compiler engineer at Scala Center, so he is in a very good position to present the compiler internals and talk about the designs and the optimizations used to make the compiler faster. In this talk, Jamie showed which bottlenecks slowed down the Scala compiler and what designs were chosen to speed up the process.
He spent a good time describing what needs to be recompiled when a line of source code is changed and how dependencies are computed and navigated.
This also provided some hints on how to structure your project to take advantage of the incremental build and avoid configurations that potentially prevent some optimizations.
SNUnit: scaling down HTTP services with Scala Native and NGINX Unit
This talk by Lorenzo Gabriele was about using Scala native and NGNIX Unit (not NGNIX) – a lightweight webserver.
Scala in Academia: Insights from teaching, distributed large-scale systems and machine learning research
This is a very long title for the last talk of the day by Gianluca Aguzzi. Here Gianluca showed how Scala could be used proficiently instead of Python for several projects. Very interesting the option to use Scala with Jupyter and the Scala-Python interoperability achieved via ScalaPy.
I want to praise the organization, very competent and professional while welcoming and open. This year I appreciated the price tag and the conference day. Both these allowed me to attend without the sponsorship of my employer.
I do hope this is not the swan song for Scala, the language has still a lot to say and it is an important stronghold for functional programming in the industry. Taking out Scala from the industry would leave the industry lacking a modern language for using good and sound concepts from the functional paradigm.