Ruslan Shevchenko — From Akka to Labelled Transition Systems — semi open questions
Can we say that Akka with new typing interface now ‘math-frienly’ ? We will show possible relation between Akka behaviour and well-studied math objects - Labelled Transition Systems (LTS). LTS can represent complex behaviors in composable and functional form. Other part of story - exists many techniques for operating with LTS specifications in a formal way, can we map this techniques to the Akka case ? And in general - how formal methods can be applicable in a day to day programming ?
Michał Kowalczykiewicz — Love Affair Between Functional & Declarative Programming (45 minutes)
In this presentation I will show how we combine declarative and functional programming. Many of our retail-apps run on LogicBlox (application framework) and are written in the pure-declarative language LogiQL (implementation of first-order logic, superset of Prolog/Datalog). Both of these technologies are developed at Infor/Predictix. What is interesting is that some time ago we started to... generate the declarative code. The next part of the speech will be about the structure of code generators written in Scala (language, grammar, AST, parsers, etc...)
Paweł Szulc — Formal specification applied (with TLA+) (45 minutes)
Formal verification promises software without bugs. At the same time even its name scares programmers away ("It's math! run for your lives!"). This talk will familiarize you with one form of formal verification: a model checker - one that is available in a formal specification tool called TLA+. To convince and encourage you that (at least) some techniques are easy to use and can potentially save you days or even weeks of later debugging. Working with TLA+ will also allow you to think more abstractly about your system. This is not a theoretical talk, this lecture begs you to "please try it at home" - you won't be disappointed.
Himanshu Arora & Nityanand Yadav — 10 things I wish I’d known before using Spark in production (45 minutes)
You have recently started working on Spark and your jobs are taking forever to finish ? This talk is for you! We have compiled many spark best practices, optimisation and tweaks that we have applied over the years in production to make our jobs faster and less resource consuming. In this talk we will learn about advanced spark tuning, data serialisation formats, storage formats, hardware tuning, better data locality, control over parallelism and GC tuning etc. We will also discover the appropriate usage of RDD, DataFrame and Dataset in order to take full advantage of spark internal optimisations.
Pavel Shirshov & Michael Feldman — distage: Modern Dependency Injection for Scala (45 minutes)
Many Scala developers nowadays consider using Dependency Injection frameworks an anti-pattern incompatible with modern FP settings. We argue that it's just a consequence of a bad experience with legacy Java runtime reflection-based implementations that lack features important for modern functional programming, such as a first-class support for higher-kinded types. We argue that as a paradigm for structuring purely functional programs, DI with automatic wiring compares favorably against implicits, monad transformers, free monads, algebraic effects, cake pattern et al, enabling scaling and a degree of modularity unachievable by any manual wiring approach. This talk covers DIStage – a transparent, flexible and efficient DI framework for Scala that enables late binding, testability, effect separation and modular resource management at scale, working with, instead of compromising the Scala type system.