ScalaUA-2019 Abstracts

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 times. I will also talk about "Rules Scala" - the Scala plugin for Bazel that has cool features such as "unused deps" and "persistent workers" that help keep your build configurations correct and your Scala builds fast.  
Alexander Nemish — Interesting Scala Collections (20 minutes, Lightning Talk)
Some facts about Scala Collections I find interesting, and what many developers probably don't know.  
Zahari Dichev — Backpressure over the wire — when things go wrong (45 minutes)
Frequent bursts of high load bring the need for today’s systems to be engineered for stability and elasticity. One aspect of designing reliable and scalable systems is backpressure. In this lecture we will take a look at how Kafka, RabbiMq and Akka achieve that and point out some of the problems that have recently been fixed in these products. We will conclude with an overview of StreamRefs - a great new way to bring backpressured streams over network boundaries. Expect deep dives into the internals of Akka Streams, protocols such as TCP and AMQP, lots of code examples and a great deal of fun.  
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 or directly into `case class` using `shapeless.Generic`) User can chose specific constructor by its sequence number providing literal integer. Depending on constructor number appropriate dependency type will be picked up. Also cakeless provides lifecycle management (preStart, postStart, etc.), safe resource allocation and release (using cats.effect.Bracket).  
John A. De Goes — Thinking Functionally (45 minutes)
In Thinking Functionally, you'll learn how a functional programmer thinks about problems as John live-refactors a concurrent imperative program to its purely functional equivalent—which is shorter, more powerful, more type-safe, and far easier to reason about and test. Don't miss this chance to witness both the "why" and the "how" of functional programming and learn more about ZIO, the hot new Scala library for asynchronous and concurrent programming that makes it easy to conquer the impossible.