Jakub Kozłowski — Conquering Concurrency with Functional Programming (45 minutes)

Some people claim functional programming is useless because in the end there will be side effects — or else your program won’t do anything useful. That’s not true (at least not in user code), and as it turns out purely functional programming is really good at solving some real-world problems, like concurrency. I’ll talk about how shared mutable state, queues, …

Markus Jura — Things I wish I knew when I started with Akka (45 minutes)

Using Akka the «right way» is non-trivial. At its 10 years anniversary, I’d like to share my early pitfalls and misusage of this great toolkit and how you can master it to write fault-tolerant and elegant programs. Based on my bias opinion, you’ll learn how to structure actors inside an application and when advanced cluster techniques such as Sharding, Persistence …

Julien Tournay — Data Processing @Spotify using Scio (45 minutes)

Two years ago, Spotify introduced Scio, an open-source Scala framework to develop data pipelines and deploy them on Google Dataflow. In this talk, we will discuss the evolution of Scio, and share the highlights of running Scio in production for two years. We will showcase several interesting data processing workflows ran at Spotify, what we learned from running them in …

Miklós Martin — Scheduling and retrying effects with cats (45 minutes)

Scheduling code to run inside the JVM is a common task in my experience. The number of different implementations we had for this problem was on par with the number of services we had. Also, they were all built on top of Akka’s Scheduler which means they would not fit well in a pure program, require an actor system, are …

Anatolii Kmetiuk — Theory of Constraints in Programming: Beyond Problem-Solving

It’s talk not directly related to Scala, but about intention for problem solving. Theory of Constraints, coined by Eliyahu M. Goldratt, comes from the business world and explains how to debug complex systems with interdependencies and exploit them to their utmost capacity. Programming challenges constitute complex systems too. In the Scala community, there is a lot of attention lately to …

Xavier Tordoir — Introduction to Tensorflow in Scala (45 minutes)

Machine learning (ML) is becoming a common component of software. ML engineering is an emerging field, tools and good practices being gradually developed. Tensorflow is a very popular ML framework with a growing ecosystem for production purposes: Tensorflow Serving and Hub. Using a Scala environment, we introduce Tensorflow and its use (learning models and predicting), and how to work with …

Natan Silnitsky — Building Scala with Bazel (45 minutes)

We all know that compilation of large Scala codebases can be painfully slow, Enter Bazel — an open source build tool from Google that allows for very fast build times while maintaining correctness and reproducibility. In this talk I will share with you the story of how at Wix we have embraced Bazel and managed to dramatically improve our build …

Vitalii Honta — Cakeless — better reader monad for deeply-nested cakes

Unlike classic Reader, CakeT allows to accumulate dependencies in `flatMap` monad. flatMap takes CakeT with different dependency type. flatMap resulting type is `Union` type of both `self.Dependency` and `that.Dependency` Dependencies are picked up by special macro on the type level. By default they are represented as `shapeless.HList`. User is allowed to transform the dependency using (into other type by hands …