12 min listen
Embedded Systems in Elixir vs. C, C++, and Java with Connor Rigby & Taylor Barto
FromElixir Wizards
ratings:
Length:
47 minutes
Released:
Nov 16, 2023
Format:
Podcast episode
Description
This week on Elixir Wizards, Connor Rigby, Software Engineer at SmartRent, and Taylor Barto, Lead Embedded Software Engineer at Eaton, join Sundi Myint to compare notes on embedded systems development with Elixir, C, C++, and Java. They discuss using Elixir and the Nerves framework for firmware projects versus more traditional choices like C. The guests ask one another questions and gain valuable insights into challenges, tooling, resources, and more across different embedded ecosystems.
In this episode, the guests expand their perspectives and demystify the concept of embedded systems for engineers outside the field. This cross-language exchange of ideas and experiences inspires continued learning and collaboration between embedded software engineers using different programming languages.
Topics Discussed:
Defining "true embedded": using an operating system vs. bare metal programming
Benefits and drawbacks of Elixir, C, C++, and Java for firmware
Many embedded systems today use Java as the programming language via Java Native Interface (JNI) to interface with C/C++ code
How Elixir expands the toolbox available for firmware projects
Testing, tooling, workflows, and debugging across languages
Elixir/Nerves features like hot code reloading and testing vs. Java alternatives
Learning curves for new languages and frameworks
Industry trends around established vs emerging tools
Applying functional programming principles like immutability in new domains
Scaling firmware updates across large connected networks
Continued maturation of Nerves may bring Elixir into consideration for roles where Java is commonly used today
Hardening systems for reliability in safety-critical uses
Debugging differences between web development and embedded
Hiring considerations for niche languages
Additional skills needed for embedded engineers, such as technical writing, reading schematics, and writing test instructions
Resources and recommendations for getting started with embedded systems
Links Mentioned:
Nerves: https://github.com/nerves-project/nerves
https://nerves-project.org/
AtomVM: https://github.com/atomvm/AtomVM
GRiSP: https://github.com/grisp
RISC-V: https://github.com/ultraembedded/riscv
https://smartrent.com/
https://www.eaton.com/us/en-us.html
Zig Programming Language: https://github.com/ziglang
Docker: https://github.com/docker
Build a Weather Station with Elixir and Nerves (https://pragprog.com/titles/passweather/build-a-weather-station-with-elixir-and-nerves/) by Alexander Koutmos, Bruce A. Tate, Frank Hunleth
Build a Binary Clock with Elixir and Nerves (https://pragprog.com/titles/thnerves/build-a-binary-clock-with-elixir-and-nerves/) by Frank Hunleth and Bruce A. Tate
http://esp32.net/
https://www.nordicsemi.com/ Special Guests: Connor Rigby and Taylor Barto.
In this episode, the guests expand their perspectives and demystify the concept of embedded systems for engineers outside the field. This cross-language exchange of ideas and experiences inspires continued learning and collaboration between embedded software engineers using different programming languages.
Topics Discussed:
Defining "true embedded": using an operating system vs. bare metal programming
Benefits and drawbacks of Elixir, C, C++, and Java for firmware
Many embedded systems today use Java as the programming language via Java Native Interface (JNI) to interface with C/C++ code
How Elixir expands the toolbox available for firmware projects
Testing, tooling, workflows, and debugging across languages
Elixir/Nerves features like hot code reloading and testing vs. Java alternatives
Learning curves for new languages and frameworks
Industry trends around established vs emerging tools
Applying functional programming principles like immutability in new domains
Scaling firmware updates across large connected networks
Continued maturation of Nerves may bring Elixir into consideration for roles where Java is commonly used today
Hardening systems for reliability in safety-critical uses
Debugging differences between web development and embedded
Hiring considerations for niche languages
Additional skills needed for embedded engineers, such as technical writing, reading schematics, and writing test instructions
Resources and recommendations for getting started with embedded systems
Links Mentioned:
Nerves: https://github.com/nerves-project/nerves
https://nerves-project.org/
AtomVM: https://github.com/atomvm/AtomVM
GRiSP: https://github.com/grisp
RISC-V: https://github.com/ultraembedded/riscv
https://smartrent.com/
https://www.eaton.com/us/en-us.html
Zig Programming Language: https://github.com/ziglang
Docker: https://github.com/docker
Build a Weather Station with Elixir and Nerves (https://pragprog.com/titles/passweather/build-a-weather-station-with-elixir-and-nerves/) by Alexander Koutmos, Bruce A. Tate, Frank Hunleth
Build a Binary Clock with Elixir and Nerves (https://pragprog.com/titles/thnerves/build-a-binary-clock-with-elixir-and-nerves/) by Frank Hunleth and Bruce A. Tate
http://esp32.net/
https://www.nordicsemi.com/ Special Guests: Connor Rigby and Taylor Barto.
Released:
Nov 16, 2023
Format:
Podcast episode
Titles in the series (100)
Season Two Wrap: Welcome to the last episode of Season 2 of the podcast! We are taking this opportunity to recap what we covered in the season and talk about what we liked and what we didn't like so much. We do not have a guest for today's show so it is just Eric and Justus doing some reflection. We do want to take this opportunity to thank all of our guests that have appeared on this season and shared their expertise with us, we definitely feel we learned a lot during this time! In Season 3 we will be focussing on functional programming, performance and teaching Elixir, so make sure to keep an eye out for when that drops in the future! by Elixir Wizards