Elixir Wizards is an interview-style podcast for anyone interested in functional programming and the Elixir Programming Language. Hosted by SmartLogic engineers...
Building an Open Vehicle Control System using Elixir and Nerves with Marc, Thibault, and Loïc
For the Season 13 finale, Elixir Wizards Dan and Charles are joined by Spin42 Engineers Marc Lainez, Thibault Poncelet, and Loïc Vigneron to discuss their work retrofitting a 2007 VW Polo and creating an Open Vehicle Control System (OVCS). Using Elixir, Nerves, and Raspberry Pis, the team is reimagining vehicle technology to extend the lifespan of older cars and reduce waste—all while making the process approachable and open source.
The Spin42 team shares the technical details behind OVCS and how they use Elixir and Nerves to interact with the CAN bus and build a Vehicle Management System (VMS) to coordinate various vehicle components. They dive into the challenges of reverse engineering CAN messages, designing a distributed architecture with Elixir processes, and ensuring safety with fail-safe modes and emergency shutoffs.
Beyond the technical, the team discusses their motivation for the project—upgrading older vehicles with modern features to keep them on the road, building an open-source platform to share their findings with others, and above all-- to just have fun. They explore potential applications for OVCS in boats, construction equipment, and other vehicles, while reflecting on the hurdles of certifying the system for road use.
If you’ve ever wondered how Elixir and Nerves can drive innovation beyond software, this episode is packed with insights into automotive computing, hardware development, and the collaborative potential of open-source projects.
Topics Discussed in this Episode:
Retrofitting a 2007 VW Polo with electric engines and modern tech
Building an open-source Vehicle Control System (OVCS) using Elixir and Nerves
Leveraging Elixir to interact with the CAN bus and parse proprietary messages
Designing a Vehicle Management System (VMS) to coordinate vehicle components
Developing custom hardware for CAN communication
Creating a YAML-based DSL for CAN message and frame descriptions
Building a distributed architecture using Elixir processes
Ensuring safety with fail-safe modes and emergency shutoffs
Using Flutter and Nerves to build a custom infotainment system
Exploring autonomous driving features with a ROS2 bridge
Developing remote control functionality with a Mavlink transmitter
Testing OVCS features at scale with a Traxxas RC car (OVCS Mini)
Challenges of certifying OVCS for road use and meeting regulatory requirements
Encouraging community contributions to expand OVCS functionality
Balancing open-source projects with contract work to sustain development
The fun and fulfillment of experimenting with Elixir beyond traditional applications
Links mentioned:
https://www.spin42.com/
https://nerves-project.org/
Quadcopter https://github.com/Spin42/elicopter
https://github.com/linux-can/can-utils
https://docs.kernel.org/networking/can.html
https://github.com/open-vehicle-control-system/cantastic
https://github.com/commaai/opendbc
https://en.wikipedia.org/wiki/CANbus#CANFD
https://comma.ai/
https://en.wikipedia.org/wiki/CANFD
https://webkit.org/wpe/
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/WindowingSystems/WestonWayland.html
https://buildroot.org/
https://vuejs.org/
https://flutter.dev/
https://github.com/smartrent/elixirflutterembedder
https://www.raspberrypi.com/products/raspberry-pi-5/
The Rabbit Pickup https://www.hemmings.com/stories/value-guide-1980-83-volkswagen-pickup
https://www.expresslrs.org/software/mavlink
https://industrial-training-master.readthedocs.io/en/melodic/source/session7/ROS1-ROS2-bridge.html
https://github.com/ros2/rcl
https://github.com/open-vehicle-control-system/traxxas
Contact Marc, Thibault, and Loïc: [email protected]
Special Guests: Loïc Vigneron, Marc Lainez, and Thibault Poncelet.
--------
54:19
Creating Horizon: Deploy Elixir Phoenix Apps on FreeBSD with Jim Freeze
The Elixir Wizards welcome Jim Freeze, organizer of ElixirConf and creator of the Horizon library. Jim shares his journey from organizing Ruby conferences to founding and growing ElixirConf into the community cornerstone it is today. He reflects on the challenges of running a major conference, how COVID-19 shaped the event, and why the talks remain an evergreen resource for the Elixir ecosystem.
We discuss Horizon, Jim’s deployment library for Elixir and Phoenix applications with Postgres on FreeBSD. Driven by a need for simplicity and cost-effectiveness, Jim explains how Horizon minimizes external dependencies while delivering fault-tolerant and streamlined setups. He compares it to tools like Fly, Terraform, and Ansible, highlighting its low cognitive load and flexibility—key benefits for developers seeking more control over their deployment environments.
Jim also unpacks the broader value of understanding and customizing your deployment stack rather than relying solely on managed services. He discusses the benefits of using FreeBSD, including its stability, security, and performance advantages, as well as its robust ZFS file system.
Jim emphasizes the importance of coherent deployment workflows, community collaboration, and contributions to open-source projects like Horizon. He invites listeners to explore Horizon, share feedback, and own their deployments.
Topics discussed in this episode:
Jim Freeze’s background organizing RubyConf and founding ElixirConf
Reducing reliance on managed services and external dependencies
Simplifying deployments with minimal tools and lower cognitive overhead
The trade-offs of cutting-edge tools vs. stable, well-documented solutions
The importance of customizing deployment tools to meet specific needs
Addressing challenges with Tailwind compatibility
Streamlining the FreeBSD installation process for Horizon users
Community collaboration: contributing to open-source tools
Jim’s vision for Horizon: PKI support, hot standby features, and serverless potential
Links mentioned
Nine Minutes of Elixir (https://youtu.be/hht9s6nAAx8?si=ocrk1wQtGplSGL0B)
https://www.youtube.com/@ElixirConf
https://github.com/liveview-native
https://github.com/elixir-nx/nx
https://2024.elixirconf.com/
https://github.com/jfreeze/horizon
https://hexdocs.pm/horizon/deploying-with-horizon.html#web-cluster-topology
https://kamal-deploy.org/
https://fly.io/
https://aws.amazon.com/console/
https://www.digitalocean.com/
https://cloud.google.com/
https://www.cloudflare.com/
https://www.hetzner.com/
https://www.proxmox.com/en/
https://nginx.org/
https://github.com/openzfs/zfs
Zettabyte File System https://en.wikipedia.org/wiki/ZFS
https://www.postgresql.org/
https://www.terraform.io/
https://www.ansible.com/
https://docs.freebsd.org/
https://www.redhat.com/
https://ubuntu.com/
https://esbuild.github.io/
Listener's Survey: https://smr.tl/EWS13
Special Guest: Jim Freeze.
--------
44:48
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-contrib Special Guests: Ethan Gunderson and Zack Kayser.
--------
42:39
Scaling the Daylite Apple-Native CRM Using Elixir with AJ
AJ (Alykhan Jetha), CEO and CTO of Marketcircle, joins the Elixir Wizards to share his experience building and evolving Daylite, their award-winning CRM and business productivity app for Apple users. He details his experiences as a self-taught programmer and how Marketcircle has navigated pivots, challenges, and opportunities since its founding in 1999.
AJ explains why they migrated Daylite’s backend to Elixir, focusing on their sync engine, which demands high concurrency and fault tolerance. He highlights how Elixir has improved performance, reduced cloud costs, and simplified development with its approachable syntax and productive workflows.
The conversation also touches on the technical hurdles of deploying native apps for Apple devices and the potential for integrating new technologies like LiveView Native to streamline cross-platform development.
For technical founders, AJ emphasizes the importance of leveraging your strengths (“superpowers”), staying deeply connected to the development process, and finding stability in tools like Elixir amidst a rapidly evolving tech ecosystem. He also shares Marketcircle’s roadmap for migrating more customers to Elixir-powered systems and explores the potential for new features in their native apps.
Tune in for insights on building resilient systems, navigating technical and business challenges, and how Elixir is shaping Marketcircle’s future.
Topics discussed in this episode:
AJ’s journey as a self-taught programmer and entrepreneur
Marketcircle’s evolution since 1999 and lessons from their pivots
Daylite’s growth as a flagship product for Apple users
Migrating to Elixir for high concurrency and fault tolerance
How Elixir improved performance and reduced cloud costs
The simplicity of Elixir and its impact on developer onboarding
Challenges in managing a growing microservices architecture
Insights into deploying native apps for the Apple ecosystem
Exploring LiveView Native for future cross-platform development
Advice for technical founders: leveraging your superpowers
Staying connected to development to maintain system understanding
The role of Elixir in improving development efficiency and stability
Planning gradual customer migrations to an Elixir-powered backend
Potential new features for Daylite’s native apps
Benefits of collaboration with the Elixir community
#ElixirMullet -- native app in the front, Elixir in the back
Navigating a rapidly evolving tech ecosystem as a founder
Leveraging Elixir to future-proof Marketcircle’s systems
Balancing technical and business priorities in a startup environment
AJ’s thoughts on the future of Elixir in powering business tools
Links mentioned:
https://www.marketcircle.com/
Daylite.app
https://www.nextcomputers.org/
https://www.digitalocean.com/
Python Async https://docs.python.org/3/library/asyncio.html
https://github.com/sinatra/sinatra
https://github.com/dependabot
https://kafka.apache.org/
https://www.djangoproject.com/
https://github.com/socketry/falcon
https://github.com/puma/puma
https://www.swift.org/blog/announcing-swift-6/
https://en.wikipedia.org/wiki/Async/await
https://www.ffmpeg.org/
https://www.sqlite.org/
https://github.com/commanded/commanded
https://pragprog.com/titles/khpes/real-world-event-sourcing/
https://en.wikipedia.org/wiki/ShipofTheseus
https://reactnative.dev/
https://www.electronjs.org/
https://en.wikipedia.org/wiki/WebOS
https://www.linkedin.com/in/alykhanjetha/
https://bsky.app/profile/ajetha.bsky.social Special Guest: Alykhan Jetha.
--------
52:21
Creating the Castmagic AI-Powered Content Workflow Platform with Justin Tormey
Justin Tormey, co-founder of Castmagic, joins the Elixir Wizards to discuss building an AI-powered content creation app. Castmagic repurposes audio and video into social media posts, blog articles, newsletters, and more. The tech stack leverages OpenAI and Anthropic LLMs with Elixir as the coordination layer and Phoenix LiveView powering the front end.
Justin dives into the technical details of Castmagic, including the integration of JavaScript libraries like ProseMirror and TipTap through LiveSvelte, as well as enabling real-time collaboration with CRDTs and YDoc. He shares the benefits and challenges of using Elixir for rapid development, as well as the trade-offs between custom code and off-the-shelf solutions.
The conversation also covers Justin’s entrepreneurial journey, highlighting the advantages of bootstrapping over venture capital, the importance of acquiring early customers, and creative marketing strategies like affiliate programs and software marketplaces.
Whether you're an Elixirist exploring machine learning or an aspiring tech founder, tune in to learn more about AI with Elixir, navigating startup challenges, and turning ideas into impactful software.
Topics discussed in this episode:
Building Castmagic to generate content from audio and video for creators
Using AI services like OpenAI and Anthropic for transcription and workflows
Elixir as the coordination layer for complex processes
Rapid UI development with Phoenix LiveView
Integrating rich text editing libraries through LiveSvelte
Enabling collaborative editing with CRDTs and YDoc
Balancing offline functionality with cloud-based AI tools
Challenges of working with external AI services
Exploring the future of multimodal AI in product development
Bootstrapping vs. venture capital: benefits and challenges
Strategies for finding distribution channels and early adopters
Creative approaches to marketing, including affiliates and marketplaces
Balancing engineering efforts with customer and business needs
Practical advice for navigating the early stages of a startup
Links mentioned:
https://www.castmagic.io/
https://pragprog.com/titles/jaerlang2/programming-erlang-2nd-edition/
https://www.blockchain.com/
https://fly.io/
https://hexdocs.pm/livesvelte/readme.html
https://github.com/woutdp/livesvelte
https://prosemirror.net/
https://tiptap.dev/
https://docs.yjs.dev/api/y.doc
https://hexdocs.pm/polymorphicembed/readme.html
https://github.com/elixir-nx/nx
https://github.com/elixir-nx/tokenizers
https://github.com/thmsmlr/instructorex
https://openai.com/
https://www.anthropic.com/
https://getoban.pro/
https://github.com/wojtekmach/req
https://ollama.com/
https://x.com/j_tormey Special Guest: Justin Tormey.
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)