A Scala Days Retrospective

A Scala Days Retrospective

A few months have passed since Scala Days in Madrid took place in September, and with all the videos now available, it's the perfect time for us at VirtusLab and Software Mill to share our top picks with you, especially since we were present at the event.

We've long awaited the conference with the main focus on the Scala programming language. September 2023 witnessed its anticipated comeback after a three-year hiatus due to the pandemic. Normally, happening each year in Europe and America, the conference chose Madrid for its return on the old continent, drawing a significant audience eager to delve into the latest advancements in Scala.

So let’s get to it and start with the first talk.

  • A Deep Dive into the Mill Scala Build Tool Li Haoyi

Haoyi Li , who is the author of Mill and other open-source projects, demonstrated how to create custom integrations using the Mill build tool, exemplified by a custom Java integration. It turns out that Mill is quite user-friendly for various integrations, offering all the necessary caching through writing what essentially is standard Scala code. This can be particularly beneficial for projects involving multiple languages or tools, especially for those who prefer not to invest in Bazel, which is more complex.

Tomasz Godzik , Senior Scala Developer @ VirtusLab

Video: Haoyi Li - A Deep Dive into the Mill Scala Build Tool


I had never watched any of Mushtaq's talks before, and it turned out to be a delightful discovery. His presentation adeptly captured the fundamentals of Akka and actor systems, while also remaining pretty straightforward. I was especially impressed with Mushtaq's use of Project Loom, which allowed him to effortlessly replicate several functionalities of Akka.

Tomasz Godzik , Senior Scala Developer VirtusLab

Video: Mushtaq Ahmed - DIY Actors using Project Loom


Daniela and Valerie demonstrated how Optimus Cirrus simplifies a developer's life. They empower developers by combining plain, fully functional code with the runtime developed at Morgan Stanley. Simply adding a @node annotation to a function activates its magic: the code becomes parallel and cached, eliminating mental overhead. They also introduced OBT, a build tool utilizing the Optimus runtime, promising remarkable performance and slated for open-source release soon. It appears to have the potential to revolutionize the Scala ecosystem.

Krzysztof Romanowski , Scala and Tooling Manager @ VirtusLab


Optimus Cirrus is a promising platform, validated by its success in the world's largest Scala codebase. was divided into two parts: the first introduced the Optimus Build Tool (OBT), adding another valuable resource to our toolkit. Designed with speed as a priority, OBT is exceptionally fast. Additionally, it implements BSP, making integration with existing tools like Metals seemingly effortless. This could be a game-changer for Scala IDEs' stability, as current build tools like sbt and bloop are either slow or unstable. OBT's effective use in building their vast codebase further underscores its reliability.

The second part of the talk focused on the Optimus Cirrus platform itself. It revolutionizes distributed computation by introducing a new annotation, @node, which can be easily implemented in our tools to enhance their speed. A prime example of its application is the Symbol index in Metals, demonstrating how it can expediently improve tool functionality.

J?drzej Rochala , Junior Scala Developer @ VirtusLab

Video: Daniela Sfregola & Valerie Saunders - Supercharge Your Performance with the Optimus Cirrus Platform


Wojtek began with an informative introduction to various forms of coroutines, explaining how they operate, where they are used, and their strengths and weaknesses. This comprehensive overview effectively helps in structuring one's knowledge. The second part was equally intriguing, demonstrating how these concepts could be implemented in Scala Native. I am eagerly anticipating the final product!? :)

Adam Warski , CTO @ SoftwareMill

Video: Wojciech Mazur - Explaining Different Coroutine Flavours using Scala Native


Paul, in addition to being a programmer, is also a musician. His talk on ADTs is excellent for beginners, and his unique background turned it into quite a performance. You get to learn about ADTs and, interestingly, about music too!

Tomasz Godzik , Senior Scala Developer @ VirtusLab

Video: Paul Matthews - Sounds of Structure - Music Modelling with ADT's


  • Crossing the Boundaries of Stateful Streaming and Actors Using Serverless Portals Jonas Spenger

Jonas delivered an introduction to stateful serverless workflows, offering yet another excellent opportunity to structure one’s understanding of the topic. He proceeded to showcase his co-authored work on portals, which enable one to "peek into" the state of a stateful stream processor. This represents an intriguing expansion of actor system and streaming technologies!

Adam Warski , CTO @ SoftwareMill

Video: Jonas Spenger - Crossing the Boundaries of Stateful Streaming and Actors Using Serverless Portals


Chris showcased an introduction to generative art using Processing in Scala. His presentation involved a lot of live coding, where he explained step-by-step how to generate "Flow Fields." Watching the art gradually take shape was truly engaging. While the project setup is somewhat unconventional, Chris has prepared a project template for Processing with Scala, available at https://github.com/ckipp01/scala-processing-giter8. Additionally, a written version of his presentation can be found at https://www.chris-kipp.io/blog/an-intro-to-flow-fields-in-scala.

Rikito Taniguchi , Scala Developer @ VirtusLab

Video: Chris Kipp - An Intro to Generative Art with Scala


  • X-Ray your Build: Build Events, Build Scans, and Caching Explained Iulian Dragos & Mirco Dotta

Iulian Dragos and Mirco Dotta demonstrated how the Scala community could benefit from using Gradle Enterprise solutions in project builds. It was intriguing to see the various graphs that resulted from their build analysis. During the talk, Iulian and Mirco conducted several surveys to gauge the audience's experiences with building – such as the average build time in our projects and which aspects consume the most time. Regarding the latter, there was near-universal agreement: tests take the most time!:)

Aleksandra Zdrojowa , Software Engineer @ VirtusLab

Video: Iulian Dragos & Mirco Dotta - X-Ray your Build: Build Events, Build Scans, and Caching Explained


Monica shared her journey as a newcomer to Scala, coming from a non-computer-science background in Physics. Despite previously knowing C, Python, and C#, she successfully engaged with a large Scala project, even one utilizing Cats Effect, which is known for not being beginner-friendly. Her talk highlighted key points for junior developers' success:

  1. Embracing Failure as a Junior: She emphasized that seniors should not solve tasks for juniors who struggle. Instead, juniors need to learn through failure, as being handed solutions teaches only a specific answer rather than the process of solving problems, which is essential for tackling new and varied tasks.

  1. Senior Support for Juniors: Seniors should be accessible to juniors, whether by setting explicit availability times in remote settings or finding time to assist when working in close proximity.

  1. Knowledge Sharing About the Codebase: It's important to take time to thoroughly explain pull requests (PRs). This practice benefits not only juniors but also seniors, who might need to understand past decisions and code changes. Detailed PR descriptions can simplify future modifications and provide context more effectively than manual code analysis.

  1. Pair Programming: Monica also pointed out the benefits of pair programming. It's a valuable method for sharing knowledge about the codebase, coding styles, patterns, and thought processes.

She concluded that without a senior's guidance, a junior developer could be significantly disadvantaged from the start. Given Scala's challenges in attracting newcomers, her insights could offer valuable lessons for the community.@

J?drzej Rochala , Junior Scala Developer @ VirtusLab

Video: Monica McGuigan - My First Year in Scala!


Tyqu is a new Scala library for generating and executing SQL query against relation database. Martin presented both API and internal design of Tyqu, showing that Tyqu heavily uses new Scala 3 features such as MatchType, Structural Refinements, and Macro, making Tyqu easier to use and typesafe. This library can be a good demonstration for the benefits of new Scala3 features!

Rikito Taniguchi , Scala Developer @ VirtusLab

Video: Martin Ku?era - Tyqu: Typesafe SQL Queries in Scala


Storch, the Scala API for PyTorch—a popular Python framework for deep learning—was the focus of S?ren's presentation. He began with an overview of the API and its capabilities, followed by a quick demonstration of training a simple binary image classifier in Scala using Storch. The second part of the presentation delved into the internals of Storch and its integration with the C++ code that underpins PyTorch.

The presentation effectively showcased how Scala, with its robust data processing ecosystem, can be integrated into machine learning. The main advantage of this approach is using the statically typed language, which offers safety and supports machine learning engineers in the development and implementation of models.

Maciej Gajek Scala Developer @ VirtusLab

Video: S?ren Brunk - Storch - GPU Accelerated Deep Learning for Scala 3

要查看或添加评论,请登录

VirtusLab的更多文章

社区洞察

其他会员也浏览了