The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019

GOTO Conferences

GOTO Conferences

42 min, 3 sec

An in-depth exploration of Joe Armstrong's impact through Erlang and Elixir, the Erlang virtual machine (BEAM), and the benefits of concurrent and distributed systems built on BEAM.

Summary

  • Joe Armstrong's work on Erlang has deeply influenced the field of concurrent and distributed systems.
  • Erlang and Elixir are distinct languages but share the same powerful runtime, the Erlang virtual machine (BEAM), which simplifies building concurrent and distributed systems.
  • The talk demonstrates the unique features of BEAM, such as lightweight processes, message passing, and fault tolerance, and how they enable building robust systems.
  • The speaker showcases several hands-on demos, including fixing bugs in a live system, and highlights the potential of beam languages for technical uniformity and managing system complexity.

Chapter 1

Introduction and Tribute to Joe Armstrong

0:14 - 35 sec

Introduction to the session and paying tribute to Joe Armstrong's immense contributions to the field.

Introduction to the session and paying tribute to Joe Armstrong's immense contributions to the field.

  • The talk opens with a tribute to Joe Armstrong, the principal inventor of Erlang.
  • Joe's work has had a profound impact on the field and the speaker's professional career.
  • The focus is set on exploring the Erlang virtual machine (BEAM) and its capabilities in Erlang and Elixir.

Chapter 2

Overview of BEAM and Elixir

0:49 - 57 sec

The speaker provides an overview of BEAM, Elixir, and the principles of concurrency.

The speaker provides an overview of BEAM, Elixir, and the principles of concurrency.

  • Introduction to the Erlang virtual machine (BEAM) and how Erlang and Elixir languages interface with it.
  • Demonstration of how concurrency is achieved through the creation of lightweight, isolated processes.
  • Processes communicate via message passing, which is a core concept of BEAM concurrency.

Chapter 3

Mechanics of BEAM Concurrency and Process Management

1:46 - 30 sec

The speaker elaborates on the mechanics of BEAM concurrency and process management.

The speaker elaborates on the mechanics of BEAM concurrency and process management.

  • Each Erlang process is a sequential program with no internal concurrency, running in its own memory space.
  • Concurrency is achieved by running multiple processes and using message passing between them.
  • Processes are lightweight, allowing for the creation of potentially millions of concurrent processes.

Chapter 4

Process Isolation and Fault Tolerance

2:16 - 1 min, 31 sec

Exploration of process isolation and fault tolerance within BEAM and Erlang/Elixir.

Exploration of process isolation and fault tolerance within BEAM and Erlang/Elixir.

  • Processes are isolated to ensure that a crash in one does not affect others, promoting fault tolerance.
  • The speaker demonstrates how to use process isolation to handle errors without affecting the overall system.
  • The system continues to function normally despite individual process failures.

Chapter 5

Debugging and Runtime Introspection

3:47 - 4 min, 34 sec

The speaker demonstrates debugging techniques and runtime introspection in a live BEAM system.

The speaker demonstrates debugging techniques and runtime introspection in a live BEAM system.

  • BEAM's debuggability is showcased through a live debugging session, identifying and killing a rogue process.
  • Demonstration of how the system's performance returns to normal after addressing the problematic process.
  • The talk illustrates how BEAM makes it possible to debug and manage a system interactively.

Chapter 6

Distributed Systems and BEAM Clustering

8:21 - 16 min, 57 sec

Discussion on BEAM's support for distributed systems and clustering capabilities.

Discussion on BEAM's support for distributed systems and clustering capabilities.

  • BEAM allows for the creation of clusters of nodes, enabling distributed computing.
  • The speaker demonstrates how to start named services across a cluster and handle node failures.
  • While acknowledging challenges with BEAM distribution, the speaker sees potential for improvement.

Chapter 7

Technical Uniformity and Simplified System Management

25:18 - 16 min, 40 sec

The speaker highlights the advantages of technical uniformity in system development and management.

The speaker highlights the advantages of technical uniformity in system development and management.

  • Technical uniformity across the system reduces complexity and improves teamwork.
  • By using a single language and runtime, many operational aspects can be simplified.
  • The speaker sees the combination of quick start capabilities and long-term scalability as a major benefit of BEAM.

More GOTO Conferences summaries

Intro to the Zig Programming Language • Andrew Kelley • GOTO 2022

Intro to the Zig Programming Language • Andrew Kelley • GOTO 2022

GOTO Conferences

GOTO Conferences

A comprehensive summary of a presentation on the Zig programming language, its benefits, and its place in software development.

Designing A Data-Intensive Future: Expert Talk • Martin Kleppmann & Jesse Anderson • GOTO 2023

Designing A Data-Intensive Future: Expert Talk • Martin Kleppmann & Jesse Anderson • GOTO 2023

GOTO Conferences

GOTO Conferences

A detailed conversation with Martin Kleppmann about data systems, his book, and the evolution of cloud services.

Why Static Typing Came Back • Richard Feldman • GOTO 2022

Why Static Typing Came Back • Richard Feldman • GOTO 2022

GOTO Conferences

GOTO Conferences

An in-depth look into the reasons behind the resurgence of static typing in programming languages.

Erlang, the Hidden Gem: Solving Problems at Scale for 30+ Years • Francesco Cesarini • GOTO 2021

Erlang, the Hidden Gem: Solving Problems at Scale for 30+ Years • Francesco Cesarini • GOTO 2021

GOTO Conferences

GOTO Conferences

The video features a deep dive into Erlang, Elixir, and the BEAM virtual machine, discussing their origins, features, and impact on concurrent programming.

When to Choose Rust • Tim McNamara • YOW! 2022

When to Choose Rust • Tim McNamara • YOW! 2022

GOTO Conferences

GOTO Conferences

A comprehensive discussion on Rust, its features, ecosystem, and use cases, including comparisons with other languages.

Worse Is Better, for Better or for Worse • Kevlin Henney • GOTO 2013

Worse Is Better, for Better or for Worse • Kevlin Henney • GOTO 2013

GOTO Conferences

GOTO Conferences

A detailed exploration of the 'Worse is Better' software development philosophy, its impact on product design, UX, and the development process.