February 1st 2020 from 10.30 AM to 2.30 PM in room AW1.121.

Title Speaker Description
10:30–10:50 Farwest Demo: A website/API for a document oriented database in 20 minutes Loïc Hoguin Farwest is an Erlang framework for building RESTful Web applications and APIs. Well written Farwest applications apply the HATEOAS principles and as a result can be interacted with using a single client. This removes entirely the need to write a separate client per API and lets servers decide how the data is best consumed by everyone. This demo will show how to use Farwest to write a simple API to a document oriented database.
11:00–11:20 OpenTelemetry: an XKCD 927 Success Story Greg Mefford Learn how distributed tracing can revolutionize the way you troubleshoot errors and performance issues, in both monolithic and distributed micro-service architectures. OpenTelemetry is an industry standard for distributed tracing, merging the tech and communities of OpenCensus and OpenTracing. * Introduce the concepts of application tracing and the state of the ecosystem (Spans, Traces, Context Propagation, OpenTracing, OpenCensus, OpenTelemetry) * Explain how this is different and complementary to Erlang’s built-in tracing tools * Show what insights can be more easily gained from trace data as opposed to logs and metrics * Give an overview of the tools and vendors available to start using this technology today.
11:30–11:50 Debugging and tracing a production RabbitMQ node Gabriele Santomaggio In this talk, we will see how to debug/trace on a running RabbitMQ node. Erlang remote access and remote debugging are builtin features in Erlang/Elixir. With these features, it is possible to see what’s happening inside a BEAM node (as RabbitMQ). There are a set of tools inside the beam like etop, eprof, dbg, fprof … that work in the same Linux way. In this talk, we will see how to use some of these features on a running RabbitMQ node. I will show also how to use “dynamic loading” to add a not native code in a running beam.
12:00–12:20 Keep Calm and Use Nerves Arjan Scherpenisse The Nerves project (https://nerves-project.org/) is a framework for building IoT devices with Elixir. In this talk I will explain how a Nerves project is structured and then move on to show and demonstrate one of the projects that I did with it, focussing on the development experience and the state of the Nerves ecosystem. Intended as a introduction to Nerves, this talk is a journey through the land of library ecosystems, device drivers and pixel manipulators, in search for the holy grail: a stable and maintainable IoT device.
12:30–12:50 Lumen: Elixir in the browser Luke Imhoff The Lumen project is a reimplementation of the BEAM in Rust. Using Rust, Lumen is able to leverage the cutting edge tools of the Rust WASM ecosystem. Compiling Elixir and Erlang from source to LLVM IR, the Lumen compiler is able to do whole program optimizations allowing for dead-code elimination of parts of the user application, OTP, and the runtime itself. Eliminating the dead code makes shipping OTP size-competitive with JavaScript frameworks, while retaining the benefits of thousands of concurrent processes and supervision trees.
13:00–13:20 CoffeeBeam: A BEAM VM for Android Viktor Gergely CoffeeBeam is a lightweight Erlang virtual machine that provides easy integration of BEAM files with Android applications. The current alternative solutions provide almost fully functional Erlang runtime systems in the form of Erlang shell on Android devices. However, CoffeeBeam follows a different approach, targeting easy integration of pre-compiled BEAM files into standalone Android applications. The characteristics of Android devices are in focus: they provide large amount of memory while CPU usage needs to be optimized to provide longer device lifetime. It is preferred to make the communication between Erlang and the Android application transparent to provide better user experience.
13:30–13:50 Going Meta with Elixir’s Macros Wiebe‑Marten Wijnja Compilation and execution are as different as night and day. Or are they? By blurring the lines, Elixir (and the BEAM VM) enable some very powerful and useful meta-programming techniques. In this presentation, Marten will talk about running and generating code at compile-time, Elixir’s hygienic macros, and how to compile and hot-reload altered or extra code, while your program is running! Besides explaining these concepts, their usefulness will be motivated using various practical real-world examples.
14:00–14:20 Processes & Grains: A Journey in Orleans Evadne Wu Processes are a popular way to manage long-running state in Erlang and Elixir programs; this model is well-understood and well-supported, but remains firmly rooted within known orthodoxy. Within this session, I shall demonstrate application of the Orleans model to existing Erlang and Elixir applications, review existing work done by the community, and compare the model against other process-based models. For maximum enjoyment, the audience is advised to possess intermediate knowledge of Erlang and Elixir. The session will be presented with live demo code written in Elixir.
14:30 Final Remarks BEAM Devroom team

We’d like to thank everyone who submitted talks. See you in Brussels! 🇧🇪