Skip to content

Mat Trudel on Building Bandit - the Web Server Running Your Phoenix App

August 14, 2026 · 1 h 20 min

Show notes

Bandit quietly became the default web server in Phoenix. Mat Trudel wrote it by hand, in pure Elixir, as a side project - and kept it that way even as AI changed how everyone else writes code.

This episode goes two places at once: the engineering of a foundational piece of infrastructure most developers never think about, and an honest conversation about what it means to keep building something by hand when you don't have to.

Topics include:

  • how a six-month debugging session - Wireshark, a 30-page RFC, and a single misread line in the HPACK spec - explains why HTTP is genuinely hard to get right

  • what "one process per connection" actually buys you at 3am when something's on fire: a stack trace that's entirely Elixir frames, all the way up

  • why HTTP parsers have a million attack vectors that have nothing to do with which language you write them in

  • the WebSock and WebSock Adapter split - and why a web server depending on another web server is ridiculous

  • how José Valim looked at Mat's first WebSocket implementation and told him he was doing too much

  • an AI-generated PR sitting open on the Bandit repo that implements the entire HTTP/3 stack - and why Mat hasn't merged it

  • why Mat still writes Bandit entirely by hand while using agents for everything in his day job

  • the cabinet maker's son analogy that explains the whole thing: if you want cabinets, go to IKEA; if you want to build them, the journey is the point

  • what it means when "finding bugs got cheap but judging and fixing them didn't"

Companion episode: Peter Ulrich and Jonathan Machin on CVEs and security - the same story from the reporting side.

Recorded June 22, 2026.


Bandit quietly became the default web server in Phoenix. Mat Trudel wrote it by hand, in pure Elixir, as a side project - and kept it that way even as AI changed how everyone else writes code.

This episode goes two places at once: the engineering of a foundational piece of infrastructure most developers never think about, and an honest conversation about what it means to keep building something by hand when you don't have to.

Topics include:

  • how a six-month debugging session - Wireshark, a 30-page RFC, and a single misread line in the HPACK spec - explains why HTTP is genuinely hard to get right

  • what "one process per connection" actually buys you at 3am when something's on fire: a stack trace that's entirely Elixir frames, all the way up

  • why HTTP parsers have a million attack vectors that have nothing to do with which language you write them in

  • the WebSock and WebSock Adapter split - and why a web server depending on another web server is ridiculous

  • how José Valim looked at Mat's first WebSocket implementation and told him he was doing too much

  • an AI-generated PR sitting open on the Bandit repo that implements the entire HTTP/3 stack - and why Mat hasn't merged it

  • why Mat still writes Bandit entirely by hand while using agents for everything in his day job

  • the cabinet maker's son analogy that explains the whole thing: if you want cabinets, go to IKEA; if you want to build them, the journey is the point

  • what it means when "finding bugs got cheap but judging and fixing them didn't"

Companion episode: Peter Ulrich and Jonathan Machin on CVEs and security - the same story from the reporting side.

Recorded June 22, 2026.

All episodes of BEAM There, Done That

Settings

Display

Language

Decides which stations you see first on the home page.

History

Recently played stations and episodes and your latest searches are only stored in this browser.

Notifications

A short notice when a podcast you follow has a new episode. Turn off single podcasts with the bell on their page.

Account

Save favorites – in the app and on the website.

Keyboard shortcuts

/
Open search
Space
Play or pause
← →
In the player: back 15 s, forward 30 s (episodes) · in a row: next tile
↑ ↓
In a row: target within the tile
Home / End
In a row: first or last tile
Esc
Close window or menu
?
This overview
Now playing

Go to station page

Play next

    Add episodes with “Play next” – they play after the current episode.