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 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!
We talk with Sheharyar Naseer about Ecto’s feature “association defaults” and how they work. We learn how they even support defining a function that gets called during your changeset operations which can be used to ensure multi-tenancy IDs get populated correctly. We learn more about Slab, talk about Single Table Inheritance designs and how we feel about them. We also talk about wrapping the Repo module for fun and profit!
We talk with Kamil Skowron about his Youtube channel that walks people through building a crypto-currency trading bot in Elixir. We learn how that led him to start a free online book sharing that content. He covers what people will learn from the process, his goal of helping people see a larger working Elixir system, and his experience writing the book. A fun chat!
We talk with Jonatan Kłosko, the coder behind Livebook, to learn how it works, how the collaborative feature was done, what you can do with it, what you shouldn’t do with it, some unusual ways people are using it, and more! We can’t help but talk about all the fun and cool ways it can be abused and how it’s finding exciting uses outside of machine learning. A great discussion with lots of insights.
Show Notes online – https://thinkingelixir.com/podcast-episodes/046-livebook-with-jonatan-klosko
We talk with Michał Buszkiewicz about Junior Developers in the Elixir community. We share tips for Juniors both early in their careers but also more experienced developers coming new to Elixir. We talk about the University vs Bootcamp approaches and what you want to focus on coming from either side. We further discuss how we as employers can support and encourage juniors. A lot of great resources shared!
We talk with Sasha Fonseca about Elixir’s data types behind the scenes. We learn about binary leaks, discuss memory usage, performance considerations, what boxed values are and much more!
We talk with Marcin Lewandowski about Membrane Framework. We learn what it is, the project’s goals, how people are using it and how it can solve the speed-to-market problem when streaming multimedia. We cover WebRTC, radio, industry challenges, why you want to deploy it to your own infrastructure, why startups fail and much more!
Show Notes online – https://thinkingelixir.com/podcast-episodes/043-membrane-with-marcin-lewandowski
We talk with Velina Petrova about a blog post she wrote showing how a “designer dreamed up” feature was delivered using LiveView and Alpine.js. She shares how she added the LiveView feature to a non-LiveView page demonstrating a great strategy for slowly moving a project in the direction you want to go without stopping to re-write. We also talk about blogging, the value of sharing and putting yourself out there. We all share some tips we’ve found helpful when creating content. A fun discussion with some great tips and tools shared!
We talk with Mrinal Wadhwa about Ockam.io, the project and the company. They are taking on the ambitious goal of building an open protocol through Elixir and Rust libraries to enable secure and trusted IoT platforms. We learn about recurring problems that the IoT industry faces and how they are seeking to solve them differently. A very informative and interesting discussion!
We talk about the mental models we use for writing our Elixir code and for thinking about our Elixir systems (starting at 5:46). We cover transformations, plug, and Mark’s “Workshop Model” (starting at 23:45). We also talk about LiveView, (starting at 31:20) how we approach it today, mistakes we’ve both made and seen. A fun discussion! We want to continue the discussion with you over on ElixirForum. Check the show notes for links to those topics!
Wojtek Mach returns and talks about the new Mix.install/2 feature coming in Elixir 1.12. We learn about some other features coming that will help script authors. We talk about OTP 24 and when we can expect 1.12 to be released, ExDocs support for Erlang libraries, and more!
Saša Jurić shares how the team at Very Big Things is building maintainable Elixir code. This ranges from the development processes to code design and organization. He takes some “radical” positions and challenges conventions on a mission to find what actually works well. We talk about his library Boundary and how it helps enforce API designs. He talks about the “Junk Drawer Pattern” and how code analysis helps identify lines of separation for refactoring. A thought provoking and fun discussion!
After covering the news, we share a live recording of the show from the Lambda Days conference. It was a lot of fun! We covered topics like learning and teaching Elixir, functional programming, strengths of Elixir over Erlang, the developer tooling, why Elixir is awesome even when not building distributed systems, and much more!