We have all seen computer systems failing, sometimes in a mundane way, sometimes in a catastrophic way. How can we reduce the probability of such failures to happen? What makes a system fault tolerant?
In this tutorial, we will explore how Elixir answers these questions and what makes it particularly well-suited to build highly available systems. We will provide a quick introduction to the language and its runtime, the Erlang VM.
Participants will then be invited to work on a series of tapas. Tapas are small projects with a challenge to be solved meant to introduce and illustrate some fundamental aspects of Elixir and its runtime.
Follow the instructions at BEFORE_WORKSHOP.md to setup your system for the workshop.
If for some reasons you did not manage to set up your system, use the GitPod web environment here:
https://gitpod.io/#/github.com/pallix/bobkonf2023-elixir-workshop
This will allow you to do most of the tapas except tapa_observer
and
tapa_supervisor
.
We will present shortly Elixir and its runtime and then you can start tasting the following tapas. Try the tapas in the order suggested but if you feel adventurous, you can pick and choose.
The tapas are loosely connected through a common theme: sponsorship and caring for (physical) trees. The Elixir building blocks we will explore could be used to build a system helping to organize a community taking care of some trees.
If you need to access the slides after the presentation, they are available here:
https://drive.google.com/file/d/1-Ktouz3lh5uNninCC_9GNsm8tJ8IVCog/view
Keywords: immutable datastructures, map, structs, list, enumerables, pattern matching, guards, iex
Keywords: processes, messages, links, monitor, distributed erlang, trap exit
Keywords: genserver, supervisor, tasks, introspection, debugging
If you enjoyed the workshop, you can learn more of Elixir by following the official getting started guide:
https://elixir-lang.org/getting-started/introduction.html
Some mentioned subjects we explore with less depth (general features), some with more depth (distributed aspects, debugging and introspection).
You can then start working on a small project or if you feel you need to learn more first, have a look at: