116: Jerod Santo - Building the Changelog Platform with Elixir and Phoenix
Episode
60 min
Read time
2 min
AI-Generated Summary
Key Takeaways
- ✓Pattern Matching Functions: Define multiple versions of the same function with different argument patterns instead of using conditional branching. Elixir automatically dispatches to the correct version based on data shape, eliminating if statements and case logic while making code more declarative and maintainable.
- ✓Plug Architecture Benefits: Phoenix uses Plug middleware where each request passes a connection struct through a pipeline of functions. Stack traces remain shallow (nine functions deep versus Rails' deep nesting), making debugging straightforward and revealing minimal framework code between your application logic and the response.
- ✓Built-in Concurrency: Background tasks like sending transactional emails require no external queue infrastructure. Use Task.start_async to background processes immediately without Redis, SQS, or similar tools. Erlang's ETS provides in-memory caching, eliminating memcached dependencies for RSS feed caching and similar use cases.
- ✓Turbolinks for Persistent Player: Achieve single-page application behavior (persistent audio player across page navigation) without rebuilding as a React app. Add data-turbolinks-permanent attribute to player div and data-turbolinks-off to admin links. Solves specific SPA needs without full architectural changes or JavaScript framework overhead.
- ✓Production Learning Path: Build functional Phoenix applications without understanding GenServers, supervision trees, or advanced Erlang concepts. Focus on web development patterns first—Ecto queries, controllers, templates. The underlying concurrency power exists when needed, but pragmatic web apps succeed using surface-level features and standard Postgres databases.
What It Covers
Jerod Santo explains how Changelog rebuilt their podcast platform using Elixir and Phoenix after outgrowing WordPress, covering pattern matching, functional programming concepts, deployment strategies, and why they chose Elixir over continuing with Ruby on Rails.
Key Questions Answered
- •Pattern Matching Functions: Define multiple versions of the same function with different argument patterns instead of using conditional branching. Elixir automatically dispatches to the correct version based on data shape, eliminating if statements and case logic while making code more declarative and maintainable.
- •Plug Architecture Benefits: Phoenix uses Plug middleware where each request passes a connection struct through a pipeline of functions. Stack traces remain shallow (nine functions deep versus Rails' deep nesting), making debugging straightforward and revealing minimal framework code between your application logic and the response.
- •Built-in Concurrency: Background tasks like sending transactional emails require no external queue infrastructure. Use Task.start_async to background processes immediately without Redis, SQS, or similar tools. Erlang's ETS provides in-memory caching, eliminating memcached dependencies for RSS feed caching and similar use cases.
- •Turbolinks for Persistent Player: Achieve single-page application behavior (persistent audio player across page navigation) without rebuilding as a React app. Add data-turbolinks-permanent attribute to player div and data-turbolinks-off to admin links. Solves specific SPA needs without full architectural changes or JavaScript framework overhead.
- •Production Learning Path: Build functional Phoenix applications without understanding GenServers, supervision trees, or advanced Erlang concepts. Focus on web development patterns first—Ecto queries, controllers, templates. The underlying concurrency power exists when needed, but pragmatic web apps succeed using surface-level features and standard Postgres databases.
Notable Moment
Santo discovered Elixir's approachability when he built a Slack invite web app in two to three hours as his first Phoenix project. That quick win provided enough momentum to commit to rebuilding the entire Changelog platform, proving the framework's productivity despite functional programming's learning curve.
You just read a 3-minute summary of a 57-minute episode.
Get Full Stack Radio summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from Full Stack Radio
153: DHH – Omarchy and Designing Your Own OS on Arch Linux
Aug 21 · 76 min
The Journal
Trapped in the Strait of Hormuz
May 19
More from Full Stack Radio
152: Ben Orenstein - How to Stand Out When Applying for a Job at a Small Company
Jan 28 · 47 min
Bankless
"Crypto Without Privacy Isn't Crypto" - The Zcash Bull Case | Tushar Jain & Mert Mumtaz
May 19
More from Full Stack Radio
We summarize every new episode. Want them in your inbox?
153: DHH – Omarchy and Designing Your Own OS on Arch Linux
152: Ben Orenstein - How to Stand Out When Applying for a Job at a Small Company
151: DHH – Building HEY with Hotwire
150: Secret Screencasting Tips & Behind the Scenes of Tailwind CSS 2.0
149: Choosing a Payment Processor, Radical Icons & W3C Hype
Similar Episodes
Related episodes from other podcasts
The Journal
May 19
Trapped in the Strait of Hormuz
Bankless
May 19
"Crypto Without Privacy Isn't Crypto" - The Zcash Bull Case | Tushar Jain & Mert Mumtaz
My First Million
May 19
How Gary Vee runs 7 businesses
The Knowledge Project
May 19
[Outliers] The Hyundai Founder Who Put a Country on His Back
The Amy Porterfield Show
May 19
Donald Miller's 5-Soundbite Method That Doubles Sales
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
You're clearly into Full Stack Radio.
Every Monday, we deliver AI summaries of the latest episodes from Full Stack Radio and 192+ other podcasts. Free for up to 3 shows.
Start My Monday DigestNo credit card · Unsubscribe anytime