
Elixir Wizards
Elixir Wizards is an interview-style podcast for anyone interested in functional programming and the Elixir Programming Language. Hosted by SmartLogic engineers and Elixirists Owen Bickford, Dan Ivovich, and Sundi Myint, this show features in-depth discussions with some of the brightest minds in the industry, discussing training and documentation in Phoenix LiveView, the evolution of programming languages, Erlang VM, and more.
In the current season, we're branching out from Elixir to compare notes with thought leaders and software engineers from programming languages like JavaScript, Ruby on Rails, Go, Scala, Java, and more. Each episode will take a deep dive into a topic from Machine Learning and AI, to ECS and game development, to education and community.
Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)
Latest episodes

Jul 10, 2025 • 46min
Set Theoretic Types in Elixir with José Valim
Elixir creator José Valim returns to the podcast to unpack the latest developments in Elixir’s set-theoretic type system and how it is slotting into existing code without requiring annotations. We discuss familiar compiler warnings, new warnings based on inferred types, a phased rollout in v1.19/v1.20 that preserves backward compatibility, performance profiling the type checks across large codebases, and precise typing for maps as both records and dictionaries.
José also touches on CNRS academic collaborations, upcoming LSP/tooling enhancements, and future possibilities like optional annotations and guard-clause typing, all while keeping Elixir’s dynamic, developer-friendly experience front and center.
Key topics discussed in this episode:
Set-theoretic typing (union, intersection, difference)
Compiler-driven inference with zero annotations
Phased rollout strategy in 1.19 and 1.20
Performance profiling for large codebases
Map typing as records and dictionaries
Exhaustivity checks and behavioral typing in GenServers
Language Server Protocol & tooling updates
Future optional annotations and guard-clause typing
CNRS collaboration for theoretical foundations
Clear error messages and false-positive reduction
Community-driven feedback and iterative improvements
Links mentioned:
https://github.com/elixir-nx
https://livebook.dev/
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
https://hexdocs.pm/elixir/main/gradual-set-theoretic-types.html
https://hexdocs.pm/dialyxir/0.4.0/readme.html
https://remote.com/
Draw the Owl meme: https://i.imgur.com/rCr9A.png
https://dashbit.co/blog/data-evolution-with-set-theoretic-types
https://hexdocs.pm/ecto/Ecto.html
https://github.com/elixir-lsp/elixir-lsSpecial Guest: José Valim.

Jul 3, 2025 • 49min
SDUI at Scale: GraphQL & Elixir at Cars.com with Zack Kayser
Zack Kayser, Staff Software Engineer at cars.com, joins Elixir Wizards Sundi Myint and Charles Suggs to discuss how Cars.com adopted a server-driven UI (SDUI) architecture powered by Elixir and GraphQL to deliver consistent, updatable interfaces across web, iOS, and Android.
We explore why SDUI matters for feature velocity, how a mature design system and schema planning make it feasible, and what it takes, culturally and technically, to move UI logic from client code into a unified backend.
Key topics discussed in this episode:
SDUI fundamentals and how it differs from traditional server-side rendering
GraphQL as the single source of truth for UI components and layouts
Defining abstract UI components on the server to eliminate duplicate logic
Leveraging a robust design system as the foundation for SDUI success
API-first development and cross-team coordination for schema changes
Mock data strategies for early UI feedback without breaking clients
Handling breaking changes and hot-fix deployments via server-side updates
Enabling flexible layouts and A/B testing through server-controlled ordering
Balancing server-driven vs. client-managed UI
Iterative SDUI rollout versus “big-bang” migrations in large codebases
Using type specs and Dialyxir for clear cross-team communication
Integration testing at the GraphQL layer to catch UI regressions early
Quality engineering’s role in validating server-driven interfaces
Production rollback strategies across web and native platforms
Considerations for greenfield projects adopting SDUI from day one
Zack and Ethan's upcoming Instrumenting Elixir Apps book
Links mentioned:
https://cars.com
https://github.com/absinthe-graphql/absinthe
Telemetry & Observability for Elixir Apps Ep: https://youtu.be/1V2xEPqqCso
https://www.phoenixframework.org/blog/phoenix-liveview-1.0-released
https://hexdocs.pm/phoenix_live_view/assigns-eex.html
https://graphql.org/
https://tailwindcss.com/
https://github.com/jeremyjh/dialyxir
https://github.com/rrrene/credo
GraphQL Schema https://graphql.org/learn/schema/
SwiftUI https://developer.apple.com/documentation/swiftui/
Kotlin https://kotlinlang.org/
https://medium.com/airbnb-engineering/a-deep-dive-into-airbnbs-server-driven-ui-system-842244c5f5
Zack’s Twitter: https://x.com/kayserzl/
Zack’s LinkedIn: https://www.linkedin.com/in/zack-kayser-93b96b88 Special Guest: Zack Kayser.

Jun 26, 2025 • 49min
Rustler: Bridging Elixir and Rust with Sonny Scroggin
Sonny Scroggin, a member of the Rustler Core Team and an expert in high-performance applications, joins Sundi Myint and Charles Suggs for an engaging discussion. They explore the seamless integration of Rust and Elixir, focusing on Native Implemented Functions (NIFs) for CPU-intensive tasks. Sonny shares insights on when to use NIFs versus other approaches, emphasizing Rust's memory safety. Exciting future developments for Rustler, including asynchronous NIF interfaces, are highlighted, alongside the enduring strengths of Elixir's dynamic model.

Jun 19, 2025 • 44min
Nx and Machine Learning in Elixir with Sean Moriarity
Sean Moriarity, co-creator of the Nx project and author of Machine Learning in Elixir, shares his journey from military to tech, focusing on large language models. He discusses the evolving Elixir ML landscape, the strategic choice between off-the-shelf models and custom solutions, and how to effectively integrate Python libraries. Sean highlights Elixir's strengths in distributed computing for ML tasks and offers practical advice on starting ML projects, emphasizing the use of motivating use cases and domain-specific languages to enhance AI workflows.

Jun 12, 2025 • 38min
LangChain: LLM Integration for Elixir Apps with Mark Ericksen
Mark Ericksen, creator of the Elixir LangChain framework, joins the Elixir Wizards to talk about LLM integration in Elixir apps. He explains how LangChain abstracts away the quirks of different AI providers (OpenAI, Anthropic’s Claude, Google’s Gemini) so you can work with any LLM in one more consistent API. We dig into core features like conversation chaining, tool execution, automatic retries, and production-grade fallback strategies.
Mark shares his experiences maintaining LangChain in a fast-moving AI world: how it shields developers from API drift, manages token budgets, and handles rate limits and outages. He also reveals testing tactics for non-deterministic AI outputs, configuration tips for custom authentication, and the highlights of the new v0.4 release, including “content parts” support for thinking-style models.
Key topics discussed in this episode:
• Abstracting LLM APIs behind a unified Elixir interface
• Building and managing conversation chains across multiple models
• Exposing application functionality to LLMs through tool integrations
• Automatic retries and fallback chains for production resilience
• Supporting a variety of LLM providers
• Tracking and optimizing token usage for cost control
• Configuring API keys, authentication, and provider-specific settings
• Handling rate limits and service outages with degradation
• Processing multimodal inputs (text, images) in Langchain workflows
• Extracting structured data from unstructured LLM responses
• Leveraging “content parts” in v0.4 for advanced thinking-model support
• Debugging LLM interactions using verbose logging and telemetry
• Kickstarting experiments in LiveBook notebooks and demos
• Comparing Elixir LangChain to the original Python implementation
• Crafting human-in-the-loop workflows for interactive AI features
• Integrating Langchain with the Ash framework for chat-driven interfaces
• Contributing to open-source LLM adapters and staying ahead of API changes
• Building fallback chains (e.g., OpenAI → Azure) for seamless continuity
• Embedding business logic decisions directly into AI-powered tools
• Summarization techniques for token efficiency in ongoing conversations
• Batch processing tactics to leverage lower-cost API rate tiers
• Real-world lessons on maintaining uptime amid LLM service disruptions
Links mentioned:
https://rubyonrails.org/
https://fly.io/
https://zionnationalpark.com/
https://podcast.thinkingelixir.com/
https://github.com/brainlid/langchain
https://openai.com/
https://claude.ai/
https://gemini.google.com/
https://www.anthropic.com/
Vertex AI Studio https://cloud.google.com/generative-ai-studio
https://www.perplexity.ai/
https://azure.microsoft.com/
https://hexdocs.pm/ecto/Ecto.html
https://oban.pro/
Chris McCord’s ElixirConf EU 2025 Talk https://www.youtube.com/watch?v=ojL_VHc4gLk
Getting started:
https://hexdocs.pm/langchain/getting_started.html
https://ash-hq.org/
https://hex.pm/packages/langchain
https://hexdocs.pm/igniter/readme.html
https://www.youtube.com/watch?v=WM9iQlQSF_g
@brainlid on Twitter and BlueSkySpecial Guest: Mark Ericksen.

Jun 5, 2025 • 46min
Blue Heron: Bluetooth Low Energy (BLE) for Elixir & Nerves with Connor Rigby
Connor Rigby joins the Elixir Wizards to talk about Blue Heron BLE (Bluetooth Low Energy) support for Elixir apps. Blue Heron implements the BLE specs in pure Elixir, leveraging binary pattern matching and concurrent message processing to handle Bluetooth protocols. Unlike most solutions that require C ports or NIFs, Blue Heron runs entirely in user space, so it works seamlessly in both Nerves-based embedded projects and (eventually) desktop Elixir applications.
We discuss how Nerves development differs from building Phoenix apps. Connor shares challenges he's experienced with hardware compatibility, where some chips only partially implement the spec, and he discusses the surprisingly deep (but sometimes incomplete) world of BLE device profiles. His tip for anyone entering the BLE space: read the official spec instead of trusting secondhand blog posts. Tools like Nerves LiveBook give you hands-on examples, so you can get a BLE prototype running on a Raspberry Pi and your phone in no time.
Key topics discussed in this episode:
Blue Heron origins and “bird” naming convention
BLE vs. Bluetooth Classic: core differences
Pure Elixir implementation—no C dependencies
Binary pattern matching for packet parsing
Hardware transport options: UART, SPI, USB, SDIO
GenServer patterns in Nerves vs. Phoenix
Linux requirement and power-consumption trade-offs
GATT (Generic Attribute Table) implementation patterns
SQLite integration for Nerves apps
Hardware chip quirks and spec compliance
Manufacturer-specific commands and workarounds
BLE device profiles and spec gaps
Security Management Profile (SMP) for encryption
Device connection and pairing workflows
Web vs. embedded development differences
Where to get started: hardware recommendations and docs
Links mentioned:
https://github.com/ConnorRigby/
https://github.com/blue-heron/
https://nerves-project.org/
BLE (Bluetooth Low Energy) https://en.wikipedia.org/wiki/Bluetooth_Low_Energy
https://developer.apple.com/ibeacon/
https://learnyousomeerlang.com/building-otp-applications
Linux https://www.linux.org/
HCI (Host Controller Interface) https://en.wikipedia.org/wiki/Host_controller_interface
Circuits UART Library https://hexdocs.pm/circuits_uart/readme.html
SPI (Serial Peripheral Interface) https://github.com/elixir-circuits/circuits_spi
SDIO (Secure Digital Input Output https://en.wikipedia.org/wiki/SDIO
Raspberry Pi https://www.raspberrypi.com/
Coral SoM Dev Board https://coral.ai/products/dev-board/
BeagleBone Single-Board Linux Computer https://www.beagleboard.org/boards/beaglebone-black
https://www.bluetooth.com/bluetooth-resources/intro-to-bluetooth-gap-gatt/
Genservers https://hexdocs.pm/elixir/1.12/GenServer.html
https://hexdocs.pm/ecto/Ecto.html
https://github.com/elixir-sqlite/ecto_sqlite3
https://github.com/nerves-livebook/nerves_livebookSpecial Guest: Connor Rigby.

May 29, 2025 • 43min
Zigler: Zig NIFs for Elixir with Isaac Yonemoto
Isaac Yonemoto, creator of the Zigler library and CEO of Videla Labs, discusses his venture into combining Zig's performance with Elixir's capabilities using Native Implemented Functions (NIFs). He explains Zigler's auto-generated Elixir-to-Zig bridge and its three execution modes: normal, dirty, and threaded. Isaac shares insights on his biotech startup that leverages Elixir for bioinformatics and highlights the benefits of Zig in hardware acceleration for large language models. He also touches on the importance of fault tolerance in low-level coding practices.

Dec 26, 2024 • 54min
Building an Open Vehicle Control System using Elixir and Nerves with Marc, Thibault, and Loïc
Marc Lainez, Thibault Poncelet, and Loïc Vigneron, software engineers at Spin42, delve into their innovative project retrofitting a 2007 VW Polo with an Open Vehicle Control System using Elixir and Nerves. They share their journey of integrating modern tech into classic cars, emphasizing environmental sustainability and community engagement. The team discusses overcoming challenges like reverse engineering CAN messages, creating a vehicle management system, and the fun of collaborating on an open-source platform. Potential applications for their system range from boats to construction vehicles.

Dec 19, 2024 • 45min
Creating Horizon: Deploy Elixir Phoenix Apps on FreeBSD with Jim Freeze
In this engaging discussion, Jim Freeze, organizer of ElixirConf and creator of the Horizon library, shares his journey from Ruby to Elixir. He discusses the evolution of ElixirConf, shaped by community input and the challenges of COVID-19. Jim details Horizon's design for deploying Elixir apps on FreeBSD, emphasizing simplicity and minimal dependencies. He highlights FreeBSD's security and performance benefits, encouraging developers to take charge of their deployment stacks. Community engagement and open-source contributions are underlined as essential for growth and innovation.

Dec 12, 2024 • 43min
Telemetry & Observability for Elixir Apps at Cars.com with Zack Kayser & Ethan Gunderson
Zack Kayser and Ethan Gunderson, Software Engineers at Cars Commerce, join the Elixir Wizards to share their expertise on telemetry and observability in large-scale systems. Drawing from their experience at Cars.com—a platform handling high traffic and concurrent users—they discuss the technical and organizational challenges of scaling applications, managing microservices, and implementing effective observability practices.
The conversation highlights the pivotal role observability plays in diagnosing incidents, anticipating system behavior, and asking unplanned questions of a system. Zack and Ethan explore tracing, spans, and the unique challenges introduced by LiveView deployments and WebSocket connections.
They also discuss the benefits of OpenTelemetry as a vendor-agnostic instrumentation tool, the significance of Elixir’s telemetry library, and practical steps for developers starting their observability journey. Additionally, Zack and Ethan introduce their upcoming book, Instrumenting Elixir Applications, which will offer guidance on integrating telemetry and tracing into Elixir projects.
Topics Discussed:
Cars.com’s transition to Elixir and scaling solutions
The role of observability in large-scale systems
Uncovering insights by asking unplanned system questions
Managing high-traffic and concurrent users with Elixir
Diagnosing incidents and preventing recurrence using telemetry
Balancing data collection with storage constraints
Sampling strategies for large data volumes
Tracing and spans in observability
LiveView’s influence on deployments and WebSocket behavior
Mitigating downstream effects of socket reconnections
Contextual debugging for system behavior insights
Observability strategies for small vs. large-scale apps
OpenTelemetry for vendor-agnostic instrumentation
Leveraging OpenTelemetry contrib libraries for easy setup
Elixir’s telemetry library as an ecosystem cornerstone
Tracing as the first step in observability
Differentiating observability from business analytics
Profiling with OpenTelemetry Erlang project tools
The value of profiling for performance insights
Making observability tools accessible and impactful for developers
Links Mentioned
https://www.carscommerce.inc/
https://www.cars.com/
https://hexdocs.pm/telemetry/readme.html
https://kubernetes.io/
https://github.com/ninenines/cowboy
https://hexdocs.pm/bandit/Bandit.html
https://hexdocs.pm/broadway/Broadway.html
https://hexdocs.pm/oban/Oban.html
https://www.dynatrace.com/
https://www.jaegertracing.io/
https://newrelic.com/
https://www.datadoghq.com/
https://www.honeycomb.io/
https://fly.io/phoenix-files/how-phoenix-liveview-form-auto-recovery-works/
https://www.elastic.co/
https://opentelemetry.io/
https://opentelemetry.io/docs/languages/erlang/
https://opentelemetry.io/docs/concepts/signals/traces/
https://opentelemetry.io/docs/specs/otel/logs/
https://github.com/runfinch/finch
https://hexdocs.pm/telemetry_metrics/Telemetry.Metrics.html
https://opentelemetry.io/blog/2024/state-profiling
https://www.instrumentingelixir.com/
https://prometheus.io/
https://www.datadoghq.com/dg/monitor/ts/statsd/
https://x.com/kayserzl
https://github.com/zkayser
https://bsky.app/profile/ethangunderson.com
https://github.com/open-telemetry/opentelemetry-collector-contribSpecial Guests: Ethan Gunderson and Zack Kayser.