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.