to top

About Scalar ONLINE

2020 is the year of the first digital Scalar conference.
We are aiming to create an online experience that will let all of us meet, learn and celebrate our community.
Join us on the 15th of May 2020!

Scalar Online is a digital, all-day all-timezones Scala conference with 45min' presentations, Q&A sessions, and networking opportunities.
We stick to the one-track-for-all formula you all know and love.
Plus we use a dedicated tool that facilitates networking in smaller groups.

We've got a couple of experiments & surprises - the scheduled talks are just one part of the conference!

We're excited to go digital with you! Save your spot!

SCALAR ONLINE IN SHORT:
ONLINE

An insightful digital experience: learn new skills and exchange Scala and FP knowledge while staying home.

Social

Meet and spend time with other FP enthusiasts from all over the world.

Knowledge from experts

Talk with the world-class experts in Scala.

Experiments & surprises

Let's join our forces and create an experience to meet each other, spend great time and support everyone in the community.


to top

to top

Attendee Instructions


to top

Agenda

13:00(JST)
6:00(CEST)
0:00(EDT)
Welcome
13:10(JST)
6:10(CEST)
0:10(EDT)

Ruslan Shevchenko dotty-cps-async: can we free concurrent programming from the monadic style

Eliminating of explicit monadic wrapping of each async operation with help of continuations and tasty reflection in dotty. Now its possible to write an ideal async/await which works with any monad.

14:00(JST)
7:00(CEST)
1:00(EDT)

Nicolas Rinaudo Type classes from the ground up

Type classes are a powerful alternative to subtyping and can help to drastically reduce the amount of boilerplate in a project. Their encoding in Scala is fairly straightforward, but suffers from a notion that they are an advanced feature that only experienced developers should use.

The purpose of this talk is to demystify Scala type classes and show how functional code naturally evolves towards them, and how they compose implicitly to buy developers a lot of "free" functionalities.

15:00(JST)
8:00(CEST)
2:00(EDT)

Natan Silnitsky 10 lessons learned from using Kafka in 1000 Scala microservices

Kafka is the bedrock of Wix's distributed microservices system. For the last 5 years we have learned a lot about how to successfully scale our event-driven architecture to roughly 1400 microservices, mostly written in Scala.

We've managed to achieve higher decoupling and independence for our various services and dev teams that have very different use-cases while maintaining a single uniform infrastructure in place.

Our Kafka infrastructure is called Greyhound and was recently completely re-written using ZIO.

In this talk you will learn about 10 key decisions and steps you can take in order to safely scale-up your Kafka-based system. These include:

  • How to increase dev velocity of event driven style code.
  • How to optimize working with Kafka in polyglot setting
  • How to support growing amount of traffic and developers.
  • How to tackle multiple DCs environment.

16:00(JST)
9:00(CEST)
3:00(EDT)

Fabio Tiriticco From Zero To Deep Learning With Scala

Deep learning is awesome, trendy and… mysterious for many. This talk introduces AI / deep learning from scratch to an audience familiar with Scala and provides a unique case (dataset + code) for attendees to start experimenting!

17:00(JST)
10:00(CEST)
4:00(EDT)
Networking
18:00(JST)
11:00(CEST)
5:00(EDT)

Christophe Calvès 10 tips to write fast stack-safe functional code in Scala: the automatic-batching library experience report

Have you ever heard the belief of functional programming being slow? Have you ever been caught by a StackOverflowError in your recursive functions? Have you ever rewritten your functional code into imperative style to make it fast and stack-safe? What if i told you how to write fast and stack-safe functional code? Even for non tail-recursive functions! ;)

In this talk i’ll present you 10 tips to write fast and stack-safe functional code. They comes form our production experience implementing automatically batching of API calls. This experience led to the development of Auto-Batch, a pure functional-programming Scala library for automatic batching.

These 10 tips will cover the whole story of how we solve this use case, from designing the user API to ensuring the performance and safety of the execution engine. They will be presented in context: what was the business needs?, what were the technical requirements? With a strong emphasis on the problems we faced and how we managed to solve them.

Among the subjects discussed are : what `@tailrec` really means and how to bypass it, how to make most functions tail-recursive, how to be sure your code is really stack-safe, how to design your own data-structure that fits your needs, how to use smart constructors to speed things up, why parametricity is your friend, are Generalized Algebraic Data Types (GADT) really useful? (spoiler alert, they are!), is there a concrete use-case of continuation-passing style?, …

19:00(JST)
12:00(CEST)
6:00(EDT)

Dennis van der Bij Lithium: an OSS split-brain resolver for Akka-Cluster

When some nodes become unreachable in your Akka-Cluster no nodes can take over their work or even leave the cluster anymore. To bring it back to a fully working state the unreachable nodes must be downed. However, if done incorrectly it could lead to data corruption, a split-brain, and a headache fixing it. In this talk, the open-source split-brain resolver called Lithium will be introduced. I will explain why unreachable nodes affect the cluster, the risks of downing nodes, and how Lithium recovers the cluster so it can proceed with all its duties.

20:00(JST)
13:00(CEST)
7:00(EDT)

Jacek Kunicki How I Understood Monad Transformers

Do you know that feeling when you hear about a new tool and you get excited because you seem to see how it is going to solve your problems? Yet, if you were to explain it to someone shortly thereafter, you would realize that you have almost no idea how it worked? This was my story with many concepts of functional programming, including monad transformers.

A moment of enlightenment came only when I needed to solve a seemingly unrelated problem: mixing Options and Futures in a for-comprehension. I had a feeling that the task was pretty generic and that for sure someone had already solved it.

In this live coding session I'd like to show you the path that I followed - from a common problem, through some more and more universal solutions that have naturally evolved into something we know as a monad transformer.

21:00(JST)
14:00(CEST)
8:00(EDT)

Kamil Owczarek Spark-Cypher: How we will be doing graph analytics from 2020 onwards

Spark-Cypher is the descendant of Project Morpheus, which marks the new era of graph processing for Spark, vastly expanding on the possibilities of the existing GraphX API. In the talk, I will go through those new capabilities on examples, to showcase how you can benefit from Spark-Cypher once it officially comes out.

22:00(JST)
15:00(CEST)
9:00(EDT)
Networking
23:00(JST)
16:00(CEST)
10:00(EDT)

Ayush Mittal A trace to remember: Compositional Tracing

Distributed systems are awesome and have a lot to offer. However for programmers they present a challenge to monitor and debug. Frameworks such as OpenTracing offer a solution. We look at how to use tracing while keeping our functional programming code base "pure" and "composable".

0:00(JST)
17:00(CEST)
11:00(EDT)

Kim Covaci, Jordan Coll Type-Safe Error Handling in the Age of Dotty

Java’s checked exceptions provide a form of type-safety when handling errors, but sacrifice composability and referential transparency. These have been largely replaced by Either-like return types. Using Dotty Union Types, we demonstrate an approach that aims to combine the best of both worlds.

1:00(JST)
18:00(CEST)
12:00(EDT)

Adam Warski A functional Scala stack for 2020

How to write a basic backend application in Scala? Which libraries to pick? There's a couple of possibilities, and choosing can be overwhelming!

In the talk I'd like to present one approach and one set of libraries, which are used in the Bootzooka template project. During the live-coding session, we'll add a complete feature to the application, taking advantage of:

  • trait-as-modules for code organisation
  • constructors for "dependency injection"
  • tapir with http4s for exposing http endpoints
  • doobie for database access
  • monix with cats-effect for managing side-effects

Along the way, we'll see both practical benefits of functional programming, and features of the libraries used. Come and see how to do functional Scala in 2020 (and beyond)!

2:00(JST)
19:00(CEST)
13:00(EDT)

Jarek Ratajski From Scala to assembly the cost of abstaction revisited

When it comes to performance a lot of developers take as granted statements (myths) that are not always valid, not anymore valid or were never valid.

Performance and benchmarking were always tough topics and in languages such as scala there so many layers between code and machine that any analysis seems futile.

We will however try to this and check few interesting examples scala code snippets down to the "bare metal". We will use recent JVM versions including graal and some useful tools such as jitwatch, javap, gc logs, jmh, performance counters.

The next time someone claims something about performance you can measure and check it yourself.

3:00(JST)
20:00(CEST)
14:00(EDT)
Networking
4:00(JST)
21:00(CEST)
15:00(EDT)

Jon Pretty Probing the Unprovable and Proving the Improbable

Writing robust, reliable software is the goal of most developers. Scala's type system provides a framework in which many desirable invariants can be proven at compile-time, while the JVM offers the means to probe the runtime to check that all inputs produce the expected results.

This talk will reveal and compare two new libraries, Quarantine and Probably, which approach this broad goal from these two orthogonal directions, each introducing a novel idea with the potential to change the way you write tests and handle exceptions.

5:00(JST)
22:00(CEST)
16:00(EDT)

Wiem Zine El Abidine, Adam Fraser Fiber Supervision in ZIO: Bringing Structured Concurrency to Scala

What are fibers? What is fiber supervision? And how do they make it easier for us to write safe concurrent code? Learn the answers to these questions and more from ZIO contributors Wiem and Adam!

6:00(JST)
23:00(CEST)
17:00(EDT)

Devon Miller Integrating scala.js into an existing full stack app

While a greenfield project may allow you to choose technologies you want to use, it may be more common that you must fit into an existing project. Even with a full-stack application, scala.js fits quite easily to an existing project. We will use an example based on nodejs, express, apollo graphql running with typescript and add in scala.js client and server components. We may also touch on the use of graaljs (graal VM) as part of the story for enhancing an existing full-stack application with dotty showing how all parts of scala can be used to scale-out a web application incrementally in an economic fashion without resorting to splitting up a server based solely on technology choices. We'll start with management justification speaking points that could help you justify a mixed language approach.

7:00(JST)
0:00(CEST)
18:00(EDT)
Ending

to top

Speakers

Jon Pretty

@propensive

Jon has been having fun riding the bleeding edge of Scala for nearly fifteen years, and he's not finished yet. When he's not travelling the world attending Scala conferences, or organizing Scala World, he devotes his time to a variety of open-source Scala tools and libraries, and providing professional training services to the Scala industry.

Jarek Ratajski

@jarek000000

Commodore 64 programmer.

Jacek Kunicki

@rucek

I'm a passionate software engineer living in the JVM land - mainly, but not limited to. I also tend to play with electronics and hardware. When sharing my knowlegde, I always keep in mind that a working example is worth a thousand words.

Nicolas Rinaudo

@NicolasRinaudo

Scala & FP enthusiast, CTO of Besedo, author and maintainer of a few mildly popular Scala OSS libraries.

Wiem Zine El Abidine

@WiemZin

Wiem is a Scala Backend Engineer at MOIA and she is enthusiastic about functional programming and about learning.

Adam Fraser

@adamfraser

Adam Fraser is a solutions architect at Ziverge. He is one of the top contributors to ZIO, a library for asynchronous and concurrent programming in functional Scala. Adam is the co-author of the ZIO Test and the author of ZQuery. He is a regular conference speaker, writer, and mentor to other software developers regarding functional programming.

Fabio Tiriticco

@ticofab

Fabio is a software engineer and community leader based in Amsterdam - he runs the 2000-member strong Reactive Amsterdam meetup and the annual Kubernetes Community Days conference. When not in front of a screen, he enjoys long distance bike rides and fingerpicking his guitar.

Ruslan Shevchenko

@rssh1

Ruslan was born in 1972. Worked as a researcher in Institue of Software Systems, then was a founder of Internet Provider NBI, founder of software development firm GradSoft, then works in various projects in telecom, advertising, and finance industry, now managing partner in a software startup. Founder of UA scala user group, has over 10 publications in peer-reviewed journals, coauthor of the book “Methods of algebraic programming”, an active columnist for the Ukrainian developer’s community portal.

Christophe Calvès

@chrilves

Christophe is passionate about Computer Science, all of it, from the highest level theories about types, categories, logic, ... to the most low-level aspects of machines and programs. He is now a Data Engineer at Adikteev, applying Functional Programming techniques to Big Data.

Natan Silnitsky

@NSilnitsky

Natan Silnitsky is a backend-infra engineer @Wix.com. He is on the Data streaming team in charge of building event driven libraries and tools on top of Kafka and ZIO. Before that he was part of a task force that was responsible for building the next generation CI system at Wix on top of Google's Bazel build tool. Has many years of experience as a developer of large scale web services - First in .Net, later in Scala. Natan's passions include clean and functional code, dev velocity and great software design.

Ayush Mittal

@ayushm4489

Ayush Mittal is a Technical Lead at HCL Netherlands where he practises and preaches functional programming . Currently working on building a fully digital contact center application for the largest European bank.

Dennis van der Bij

@MrDnX

Dennis is a software engineer at SwissBorg and fresh EPFL graduate. He's passionate about Scala since 2012 and distributed systems. At work he advocates for pure functional-programming.

Kim Covaci

@evdokim

Kim has a long time passion for functional programming and Scala in particular. Working in SoundCloud he applies his skills to help artists to grow their audiences.

Adam Warski

@adamwarski

I am one of the co-founders of SoftwareMill, where I code mainly using Scala and other interesting technologies. I am involved in open-source projects, such as sttp, tapir, Quicklens, ElasticMQ and others. I have been a speaker at major conferences, such as JavaOne, LambdaConf, Devoxx and ScalaDays. Apart from writing closed- and open-source software, in my free time I try to read the Internet on various (functional) programming-related subjects. Any ideas or insights usually end up with a blog.

Kamil Owczarek

Head of Big Data @ GFT Poland, data engineer at heart. Specializes in projects connected to stream processing and machine learning. Personal motto: "Data is always more important than you recognize it to be".

Jordan Coll

Jordan is an Engineer at SoundCloud. He enjoys music, coffee, and copy-pasting code.

Register

"Buy" button doesn’t work? Try buying the tickets directly on evenea.


to top

Main Organizer

Media partners

Global sponsors

Local sponsors

Partners


to top

to top

Become a sponsor

As a sponsor of Scalar ONLINE, you have the chance to present your company to growing functional programming community and to make valuable contacts while staying at home and keeping everyone safe. Join Scalar and impress our attendees with your expertise.


to top

Team

Organized bySoftwaremill.com

Jan Zborowski

Adam Warski

Sylwia Górska

Marta Mielcarek

Aleksandra Puchta-Górska

Magda Stożek

Sebastian Rabiej

Jarosław Kijanowski