Sharing the latest BEAM There, Done That episode. This one is genuinely historic - the people who built the JAM and early BEAM, telling the story directly.
The hands-on detail that opens the episode: Mike looked at Joe Armstrong’s first 20 lines of C and said “this is awful.” He rewrote the inner loop, learned C while doing it, and got message passing down to six instructions. He was optimising the three numbers he’d identified as what determine whether a concurrent language lives or dies: process creation time, context switch time, and message copy time.
Why those three numbers matter: Mike measured it on real telecom workloads in the early 1980s - 70% of VM time was those operations, not application code. That measurement shaped every design choice that followed.
Why language-level concurrency was “obvious”: Not ideology - arithmetic. Unix process overhead made thousands of concurrent processes mathematically impossible on 16–64 MB machines. Language-owned scheduling was the only path.
The two-version rule: Still in the BEAM today. Björn was asked to remove it multiple times. He refused: unlimited module versions would let old code accumulate silently, wasting memory and causing surprises in production.
The person who always gets forgotten: Claes Wikström - who added distribution to the JAM, invented ETS tables, and prototyped Erlang’s binary syntax with Tony Roguel.






















