ScalaUA-2019 Abstracts

Maksym Ratoshniuk – LogStage: Zero-cost Structural Logging for Scala (45 minutes)
Everybody needs logs. Humans and machines. Logs should be structured, json and text format. Library should me modular, provide full customisation of router, rendering policies, sinks, dynamic client context. What if we could provide a such logging library with compile-time structure and context extraction which satisfies both? Let’s dive into LogStage and try to implement own asynchronous sink for logs.  
Marcin Rzeźnicki – Using monads to enforce programming style your Boss likes (45 minutes)
It all started with my boss coming to me - "I don't like EitherT", he said. "All right, you should be using MonadError anyway" - I replied. "Oh, I don't like that even more". So I decided to help him out and everything went south. I ended up wrestling `Free` and `Cofree`, fighting stack overflows, benchmarking trampolines with flame graphs and, finally, rolled up my own monad which I call `Sealed`. I promise I'll put a GitHub link, but for now I am not really proud of it. My boss and my company love it, though. So I thought I could share with you how to use monads to make your boss happy. Topics I'll cover:
- monadic error handling and flow control
- explore design and implementation of various existing monads in Scala,
- learn how to design a lawful monad from scratch and test it,
- how to deal with various issues that arise in the process: stack safety, performance implications,
- benchmarking with JMH and flame graphs
 
Marco Borst – On denotational and implied semantics (45 minutes)
"Sometimes we discover unpleasant truths. Whenever we do so, we are in difficulties: suppressing them is scientifically dishonest, so we must tell them, but telling them, however, will fire back on us." thus wrote E.W. Dijkstra in 1975. Seven years earlier, during a conference in 1968, he also coined the phrase Software Crisis, noting that the main challenge of the software industry, how to achieve intellectual control over the complexities of our own makings, had not yet been met. We revisit Dijkstra's claim 51 years later in this talk, which is, the audience should be warned, not your typical happy, peppy, look how smart we are, woke, functional cheerleading babble. The intent of this talk is to leave you confoundedly humble, dazed and confused. Only thereafter ... perhaps ... we can start cleaning up the mess of our own makings.  
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 and Distributed Data should be used or not.  
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...)