GOTO Aarhus 2023

Friday May 26
09:00 –

Thinking Concurrently

How do systems built in Erlang, Elixir or any other BEAM Language differ from other systems? To start with: They are designed from the bottom up to run 'forever.’ They are designed from the bottom up to expect, and recover from errors. They are expected to evolve. They scale seamlessly.

How is all of this achieved? - the answer is simple - by making systems from sets of isolated communication processes, and by treating errors and code as first class objects that can be sent in messages over a network.

In this masterclass, Robert will introduce what he calls the "Erlang way of thinking." He will cover: 

  • Basic data types
  • Sequential programming
  • Concurrent programming & Error Handling
  • OTP and Supervision Trees
  • Distribution for resilience and scalability

In Basic data types & sequential Erlang, he’ll introduce the foundations and talk about Modules, Functions and Pattern Matching. Once you've understood the basic pattern matching mechanism the rest is easy.

In concurrent programming, we'll talk about processes and their life span. You will look at sending and receiving messages, selective reception, and passing data in the messages. Robert will conclude this section by introducing the simple but powerful error handling mechanisms in processes which help detect and isolate failure.

In the section on supervision trees, we introduce the let it crash philosophy. It will cover how processes are grouped together in hierarchies, with recovery strategies allowing us to program for the correct case. All this without the need for defensive programming.

Time permitting, we will cover distribution, showing you how by doing it right from the start or with very few changes, you can write a program intended to run on a single VM and distribute it in a cluster.

OBJECTIVES To learn the Erlang way of thinking when architecting and developing systems.

PREREQUISITES Programming experience in at least a couple of programming languages.

TARGET AUDIENCE Developers who are interested in the principles which make Erlang, Elixir or other BEAM-based languages unique.