
← BEAM There, Done That31 Jul · 42 min
Mike Williams & Björn Gustavsson on Building the JAM
<p>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.</p><p>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.</p><p>Topics include:</p><ul><li><p>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</p></li><li><p>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</p></li><li><p>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</p></li><li><p>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</p></li><li><p>memory as the binding constraint, not speed: phone switches handling whole cities ran on 16–64 MB of RAM</p></li><li><p>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</p></li><li><p>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</p></li><li><p>the computer science lab culture that made Erlang possible: no publish-or-perish pressure, just a mandate to solve a real problem</p></li></ul><p>Recorded June 4, 2026.</p><p><strong>Resources mentioned:</strong></p><ul><li><p>"History of Programming Languages" paper, Joe Armstrong (HOPL III)</p></li><li><p>Bjarne Däcker's licentiate thesis</p></li><li><p>Early Erlang CS lab technical reports (ERN series)</p></li></ul>