All episodes
Episode 22 · Jul 31, 2026 · 42m
Mike Williams & Björn Gustavsson on Building the JAM
ErlangHistoryRuntime
Before the BEAM, there was the JAM - Joe's Abstract Machine. It was the first virtual machine that made Erlang fast enough to run in production, and it was built by a handful of people at Ericsson's computer science lab who had a mandate to do whatever they wanted.
Mike Williams wrote large parts of the emulator. Björn Gustavsson inherited it in 1996 and built what came after. In this episode - the most historically significant we've recorded - Alan Wyma and Francesco Cesarini bring them both together to tell the story of where the BEAM actually came from.
Topics include:
- why Mike looked at Joe Armstrong's first 20 lines of C and said "this is awful, I'll do something about it" - and how he got message passing down to six instructions
- the three numbers that decide whether a concurrent language lives or dies: process creation time, context switch time, and message copy time - and why 70% of VM time was spent on them, not application code
- why keeping concurrency inside the language rather than the OS was "perfectly obvious" to Mike, and why it was a minority view even then - Java removed green threads, early Rust removed lightweight processes
- the two-version rule for module hot loading that's still in the BEAM today, 30 years on - and why Björn never wanted to remove it
- memory as the binding constraint, not speed: phone switches handling whole cities ran on 16–64 MB of RAM
- how distribution was added to the JAM by Claes Wikström - the person whose name is always forgotten in this story, who also invented ETS tables and created the first prototype of Erlang's binary syntax
- what Björn saw when he first read Mike's code in 1996, why he liked the JAM more than the BEAM at first, and what finally made the JAM obsolete
- the computer science lab culture that made Erlang possible: no publish-or-perish pressure, just a mandate to solve a real problem
Recorded June 4, 2026.