The Thinking Elixir Podcast
Welcome to the Thinking Elixir Podcast! The show has weekly episodes where we talk about the Elixir programming language and community around it.
Whether you are already experienced with Elixir or just exploring the language, this show is created with you in mind. We discuss community news, Functional Programming, transitioning from OOP, coding conventions, and more.
Guests visit the show to help challenge our assumptions, learn about new developments and grow in the process.
Subscribe to join me on this journey!
Learning or Teaching Elixir
We talk with Niklas Begley about his Doctave service and the problems it’s solving. From there we cover why they use Rust for a key piece of the service and how Elixir fits in. We cover tools like Rustler for integrating Elixir and Rust smoothly. We talk about business drivers, Nik’s experience building a SaaS product using Elixir and more!
Show Notes online – https://thinkingelixir.com/podcast-episodes/068-rust-and-elixir-with-nik-begley
We talk about ways we can all contribute to building a healthy Elixir community. The Elixir community is a welcoming, encouraging and helpful place and we want to help keep it that way! We talk about common problems facing maintainers, tips for engaging productively, the value of expressing appreciation, and much more!
Show Notes online – https://thinkingelixir.com/podcast-episodes/067-building-a-healthy-community
We talk with Kai Wern Choong about his experience with tracing performance problems in production. We talk about what “tracing” means in a BEAM system, available tools like recon, great resources for learning how the tools work and general approaches for troubleshooting live production Elixir systems. Kai also shares his Livebook notebook setup for demonstrating tracing techniques in an interactive way.
We talk with Elixir Core Team Member Aleksei Magusev about how he got involved in Elixir, what it’s like being on the Core Team, some of his contributions, areas in Elixir that interest him, and his tips for learning a new programming language! He also shares some of his interests outside of computing. Meet Aleksei!
We talk with Bram Verburg about an important root certificate expiring at the end of September and how this impacts your Elixir and Erlang projects! Bram helps explain where this IS and IS NOT a problem. He also explains the different update options available. We also get Bram’s security perspectives from his years of focused study and contributions in the Elixir and Erlang communities. A great resource for understanding the current certificate situation and for protecting your Elixir projects!
We talk with Peter Ullrich about his experience sending SMS messages from a Raspberry Pi Zero using Nerves. We cover what went well, what didn’t and get a glimpse into the current state of Nerves for a newbie when dealing with hardware. Peter also tried Livebook for Nerves and had a great experience with that. We discuss the challenges of hardware systems dealing with the “real world” but see how Elixir makes the process easier to model and think about.
We talk with Chris McCord about his recent announcement that he’s moved to work at Fly.io! We cover what this means for the Phoenix project and ongoing Phoenix development work. He shares why he’s excited about the Fly platform which includes how it replaces his need for a CDN! We also talk about the new Phoenix 1.6 release and all the goodness coming there. This release includes the HEEX engine for validated HTML at compile time, making the auth generators official, a new mailer generator, and the move away from Webpack to esbuild. We go deeper on what the move to esbuild means for existing projects before hearing where Chris wants to put his focus next. We covered a lot, so buckle up!
We cover the news then talk about the Brex announcement that they are shifting to a Kotlin-first strategy over Elixir. This reminds us of patterns we’ve seen in our careers and we reflect on what it means to us personally and professionally. We share our perspectives on Elixir, how it’s different from the languages we’ve used before and the unique value we get from it.
Show Notes online – https://thinkingelixir.com/podcast-episodes/061-elixirs-recent-brex-it
We talk with Marc-André Lafortune about reducing Elixir project compile times. On larger projects, when a single file like a view template is changed and over 100 files get recompiled, there is something wrong. Marc-André explains how he identified the problems in his project and contributed to Elixir’s mix xref tool making it easier for us to find those problems in our own projects! We cover how these tooling improvements were used to improve the upcoming Phoenix 1.6 and Elixir 1.13! An additional mix xref flag was added to run CI checks on our code to prevent accidentally adding code that slows our compile times.
We talk with Joel Kemp about his experience introducing Elixir at Spotify. We learn about the concurrency problems he had with the default stack and how that was solved with the BEAM. We talk about the inertia that larger companies have that make introducing any change harder. Joel compares the process to running a marathon and shares some tactics used to help build internal support and interest. Fascinating insight into a well known company and how Elixir is helping internally.
After covering the news we catch up on what Elixir things we’ve been thinking about and working on. Mark brings up using Livebook as a Business Intelligence tool for doing analysis of a running application’s data. David brings up how to design safe data migrations in Elixir systems, examples from the Rails ecosystem and how he’s thinking about that for Elixir.
We sat down with co-host Cade Ward to hear how he and his team tackled a problem of hosting live web chats with crowds of 120K+ users coming together for live events. On the show, we have talked with a couple guests with similar bursting high-load situations. Cade had been through it too so it was time to dig in and cover how this situation can be solved. We cover the different attempts and temporary solutions used and the final solution that has been working really well. In fact it works so well, during a recent event, the auto-scaling didn’t kick in and everything was still fine!
Show Notes online – https://thinkingelixir.com/podcast-episodes/057-scaling-live-chat-with-cade-ward
We talk with Kurt Mackey, founder at Fly.io, about what makes the Fly platform unique and why hosting Elixir applications there makes a lot of sense. They started out looking to make a better CDN for developers and this pushed them to try deploying Full Stack applications closer to users, not just the static assets! We learn about the tech behind the networking, how databases can be moved closer to users, and how LiveView is even more awesome when it is close to users. Kurt also shares what he sees as the future for databases as the industry continues to move into globally distributed applications.
We talk with Philipp Schmieder about his experience creating a LiveView application for a political party’s convention and then watching the app blow up. We learn how he recovered, why it failed, and how he fixed it going forward. We also discuss some other application architecture ideas and how they might work. It’s a great post-mortem discussion where Philipp shares his wisdom so others learn from the mistakes. After experiencing all this, find out why he’s still bullish on LiveView and Elixir!
We talk with Lucas San Román about his library Sourceror and how it was created to solve some AST parsing limitations. The Elixir parser discards code comments, so it can’t be used for re-writing Elixir code when refactoring. IDE’s often include more advanced refactoring tools and the ability to provide that requires a smarter parser. Sourceror keeps the comments while also providing advanced features like a Zipper API to more easily navigate around the source tree while inserting and removing nodes. Learn what Sourceror can do and what it can enable for future Elixir tools!
We talk with Ilya Averyanov about how the SOLID principles, typically associated with OOP, can apply to Elixir. We talk about Ilya’s blog post where he applied these principles to his Github project and how that helped in PR discussions. We also talk about testing, architecture, and more.
Show Notes online – https://thinkingelixir.com/podcast-episodes/053-solid-elixir-with-ilya-averyanov
We take a deeper dive with Nathan Long into IOLists in Elixir. We cover what they are, how they work, the power they have when concatenating strings, and how they are used in Phoenix and Logger. We even talk about improper lists and why they exist. And no, it isn’t a bug. We then talk about PostgreSQL features like materialized views, triggers, and using denormalized tables for solving complicated caching situations. Nathan shares some tips for when to use them and provides some cautions worth hearing.
We talk with Alex Loukissas about using Phoenix sockets to provide live auction systems. We comment on the situation of flash-mob-like users coming to a system and needing to handle high traffic volumes for shorter durations. We talk about how the Horde library helps solve fun distributed clustering problems, we cover observability tools, how and why companies should support open source development through sponsorships and more!
We talk with Angelika Tyborska about the history of exercism.io, her involvement, the issues addressed in v2 and what’s new and cool in the soon to be released v3. We cover the Elixir track, her work as a maintainer, the journey of a student and how people can help as mentors. We also hear about the “fun” she had creating a maze generator and more!
Maciej Kaszubowski returns to talk about how read models can help modularize our systems. There is a focus on background job systems and how they fit in our modular designs. We cover push vs pull based systems and which is more maintainable. Maciej also shares his approach to learning and understanding a new Elixir library and more!