All episodes
Episode 28 · Sep 11, 2026 · 1h 11m
Louis Pilfold on Building Gleam - Static Types on the BEAM
GleamTypes
What if the BEAM had a language that felt like talking to a friend instead of fighting a compiler?
That's the problem Louis Pilfold set out to solve. He loved the BEAM. He missed static types. Every other option was a tradeoff he couldn't live with. So he built Gleam - and after years of quietly saying no to everything he wasn't sure about, it's gathered a community, found production users, and now runs on servers, browsers, and $2 microcontrollers.
Topics include:
- why every successful language is born from a problem - and what specific frustration made Louis start building rather than just complaining
- the discipline of saying no: no if, no currying, no pretending two targets are one world
- the design decision Louis regrets most - the conditional compilation syntax he's now stuck with and desperately doesn't want more people to use
- why Gleam's concurrency model lives in a library rather than the language - and what that buys in terms of flexibility when smarter people eventually improve it
- how Gleam solved the problem everyone said was unsolvable: "you can't type message passing on the BEAM"
- what the JavaScript and BEAM targets share and where they genuinely can't be unified - and why pretending they can leads to terrible architecture
- why Gleam chose Erlang records as its data structure and what that costs at runtime
- Lustre, Gleam's web framework - beating mainstream JavaScript frameworks in benchmarks while written entirely in Gleam
- how Louis funds his work on Gleam: GitHub Sponsors, the Gleam community, and what sustainable open source actually looks like from the inside
- what Gleam will look like in 3–5 years - native records, better JavaScript interop, and why the language's approach to stability makes those changes possible
Recorded August 20, 2026.