Erlang, the Hidden Gem: Solving Problems at Scale for 30+ Years • Francesco Cesarini • GOTO 2021
GOTO Conferences
24 min, 5 sec
The video features a deep dive into Erlang, Elixir, and the BEAM virtual machine, discussing their origins, features, and impact on concurrent programming.
Summary
- Francesco Cesarini discusses the streaming capabilities of Erlang and its ecosystem, including platforms like Cisco and Ericsson's systems.
- Erlang's history traced from its inception in the late '80s to its current status as a mature ecosystem.
- The conversation moves to the relationship between Elixir and Erlang, detailing Elixir's role in expanding the reach of the Erlang ecosystem.
- The principles of fault tolerance in Erlang's OTP framework are explained, highlighting the 'let it crash' philosophy.
- Francesco Cesarini elaborates on the evolution of Erlang and Elixir in the context of the IoT and machine learning.
Chapter 1
The video starts with a brief mention of using the Riverside platform and a question on its underlying technology.
- The host begins by mentioning that they are using the Riverside platform for the discussion.
- A question is raised about whether Riverside is running on Erlang.
Chapter 2
Francesco touches on the significance of Erlang and Elixir in the realm of video streaming platforms.
- Erlang and Elixir are pivotal in the development of numerous streaming platforms and frameworks.
- Platforms like Cisco and Ericsson's video systems are Erlang-based.
- Erlang establishes connections for video streams similarly to how it handles phone calls.
Chapter 3
Francesco Cesarini introduces himself and provides a detailed historical background of Erlang.
- Francesco Cesarini, founder and technical director at Erlang Solutions, recounts his long history with Erlang.
- The origin of Erlang's name is tied to Agner Krarup Erlang, a Danish mathematician, though management believed it was named after Ericsson.
- Erlang's development timeline is discussed, with its beginnings in the late '80s and becoming production-ready by the mid '90s.
Chapter 4
Francesco dissects the components that give Erlang its power, with a focus on the BEAM VM and OTP.
- Erlang's power is attributed to the BEAM VM, OTP middleware, and the semantics of the Erlang programming language.
- The BEAM VM is optimized for concurrency and recently got a JIT compiler.
- OTP abstracts concurrency models and error handling, enhancing resilience and scalability.
Chapter 5
The discussion pivots to Elixir's impact on the Erlang ecosystem and its appeal to a broader range of developers.
- Elixir compiles to Erlang bytecode and is designed to leverage Erlang's existing tools and libraries.
- Elixir is seen as a modern iteration of Erlang with different syntax and tooling, opening up Erlang's capabilities to more developers.
- Elixir's creation was driven by the desire to bring Erlang's power to web developers.
Chapter 6
Francesco explains how Erlang's approach to fault tolerance through process isolation and supervision trees simplifies error handling.
- Erlang processes are isolated, which means failure in one does not affect others, exemplifying the 'let it crash' philosophy.
- Supervision trees monitor processes, reacting to failures in a standardized way, which reduces the programming burden.
- This approach to fault tolerance is highly efficient compared to traditional error handling in languages like C++.
Chapter 7
The influence of Erlang's concurrency model on other frameworks like Akka is discussed, highlighting the differences with the JVM.
- Akka, and its .NET variant, were inspired by Erlang's concurrency model and OTP error handling.
- Akka on the JVM emulates many features of the BEAM, but there are inherent differences due to the JVM's design.
- The BEAM VM ensures fairness in process scheduling, which cannot be guaranteed in Akka due to the need for actors to yield control.
Chapter 8
Francesco describes how Erlang's BEAM VM manages process scheduling and load balancing across multiple CPU cores.
- The BEAM starts a scheduler for each CPU core, distributing processes evenly across them.
- Processes may migrate between schedulers to maintain load balance and optimize resource utilization.
Chapter 9
The conversation explores the expanding role of Erlang and Elixir in IoT, machine learning, and embedded systems.
- Erlang and Elixir are increasingly used in IoT devices and cars for data analysis due to performance improvements and new tools.
- The conversation touches on Erlang on mobile devices, though its primary use case remains server-side.
- With the advent of Nerves and graphical packages, Elixir is moving into embedded systems, and with initiatives like Axon, into machine learning.
Chapter 10
The evolution of Erlang is discussed, focusing on the conservative approach to language changes and the emphasis on the BEAM VM.
- Erlang's programming language sees few changes, with most development efforts targeting the libraries, frameworks, and BEAM VM.
- Ericsson's conservative approach to Erlang's evolution is due to the vast amount of Erlang code in production and the need to maintain it.
- Improvements to the BEAM VM result in better performance, illustrating Erlang's ongoing optimization for modern architectures.
More GOTO Conferences summaries
Intro to the Zig Programming Language • Andrew Kelley • GOTO 2022
GOTO Conferences
A comprehensive summary of a presentation on the Zig programming language, its benefits, and its place in software development.
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
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.
Designing A Data-Intensive Future: Expert Talk • Martin Kleppmann & Jesse Anderson • GOTO 2023
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
GOTO Conferences
An in-depth look into the reasons behind the resurgence of static typing in programming languages.
When to Choose Rust • Tim McNamara • YOW! 2022
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
GOTO Conferences
A detailed exploration of the 'Worse is Better' software development philosophy, its impact on product design, UX, and the development process.