«Integration testing of REST services using Akka Http», Noam Almog
Testing REST services is hard, setting up environment, executing multiple remote calls, matching results on various encodings and formats and handling tests flakiness while trying to retain an easy to maintain and understandable code base. In this talk I will present how we designed our framework using akka http to handle many of those aspects. Through the design you will gain a glimpse of how we test and maintain over 200 microservices in production.
«Freestyle, Free & Tagless: Separation of Concerns on Steroids», Michał Płachta
You will learn how to cut your applications into isolated, independent pieces using Freestyle library with free monads or tagless final style. The session is based on a multiplayer, purely functional version of Prisoner’s Dillema. Our applications frequently consist of business logic, communication, persistence, caches & logging. We always want to keep them apart and reason about each of them individually. However, this is very difficult to achieve in practice. Enter free monad. It lets us decouple those concerns by dividing our program into algebras and interpreters. I will show you an application built on top of free monad in Scala & Cats. You will learn how to create pure & declarative DSLs, side-effecting interpreters and how to use them together. Then I will introduce Freestyle library and show how it makes the code more concise. At the end I will compare the free monad approach to another technique used to decouple concerns: final tagless.
«Machine learning by example», Michał Matłoka
Are the machines learning on their own? Wait, is Skynet already here? During this session we will tackle an easy Machine Learning problem, show how can it be processed on Spark including data cleaning, normalization and a learning process. Live coding session, but only if the machines don’t rise against us.
«Advanced Patterns in Asynchronous Programming», Michael Arenzon
In this talk we'll cover some advanced compositional patterns with Scala Futures, in order to build and use higher level abstractions when dealing with async code. Using Futures as a basic building block for concurrent, async code has become pervasive in the past few years and for a good reason. However, when moving from the traditional synchronous code to the async one, a set of patterns that were obvious to implement before now seem to be more challenging. The aim of this talk is to show few examples of these patterns implemented with Scala futures in an async and non blocking manner. We will present the usage pattern and the implementation in order to show the principles of properly handling async code.
«Capitalizing on a great IDEA — Becoming a super user with IntelliJ (Lightning Talk)», Maxim Novak
IntelliJ IDEA is the best IDE I’ve ever worked with, it has so many features that allow me to boost my productivity in my every-day job; features, that many developers just don’t use. In this talk I will give you the tools to become a super-user, do the same things only faster and easier. I’ll showcase live-coding use-cases to cover, among other tips, useful shortcuts, easier editing, navigation, and refactoring.