
The Bridge Between Elixir and Zig with Isaac Yonemoto
08/05/21 • 46 min
While NIFs provide a great way to interface with native code in the BEAM machine, the process can also be rather error-prone. Thankfully, since Isaac Yonemoto built Zigler, things have become a lot simpler, and he joins us today to talk about how. Isaac is an Elixir developer with a background in biotech and we kick off the discussion by hearing about his journey into programming and some of the ways that he has combined it with science. From there we hear more about the different languages Isaac has worked in and why he fell in love with Elixir, where he talks about its encouragement of test-driven development and how this has made him a better programmer. We dive right into the contributions Isaac is making to the Elixir community next, and he starts off by talking about Zigler. He explains how Zigler provides a bridge between Zig and Elixir that makes it far easier to build NIFs. We hear a bunch of the other cool possibilities that Zigler offers to Elixir as well, including its ability to make debugging easier by appending the Zig stack trace to the Elixir one. After hearing Isaac’s opinion of magic in Elixir, we close today's show off with a few of the other projects he is working on, contributions that are bound to make the world of Elixir even more exciting!
Key Points From This Episode:
- Isaac’s early exposure to programming and how he got started in tech.
- The education Isaac had in the sciences and his experience in the biotech sphere.
- Difficulties with installing Ruby and how this led to Isaac learning Elixir.
- Support for asynchronous testing and the reasons why Isaac finds joy in Elixir.
- The emphasis on test-driven development in Elixir and how this has made Isaac a better programmer.
- Isaac’s experiences with Zig and the similarities between it and Elixir.
- How NIFs allow C code in Elixir and what it is like debugging them.
- Isaac’s Zigler project and how it provides integration between Elixir and Zig making it easy to build NIFs.
- Cross-compiling C using Zig and why Isaac built a disassembler.
- Aspects of the BEAM that make it harder to write NIFs in Elixir than in Julia.
- Isaac’s opinion of magic in programming and how it should always be comprehensible.
- Final plugs from Isaac: where to find Zigler, and some upcoming projects.
Links Mentioned in Today’s Episode:
SmartLogic — https://smartlogic.io/
Isaac Yonemoto on Twitter — https://twitter.com/DNAutics
Isaac Yonemoto on GitHub — https://github.com/ityonemo
Isaac Yonemoto on YouTube — https://www.youtube.com/channel/UCarZZW7eavljSdGRQx9kkSA
Selectrix — https://github.com/ityonemo/selectrix
Mavis — https://github.com/ityonemo/mavis
Chiaroscuro - https://github.com/ityonemo/chiaroscuro
Zigler - https://hexdocs.pm/zigler/Zig.html
Zigler on GitHub — https://github.com/ityonemo/zigler
Julia — https://julialang.org/
Testing Elixir with Jeffrey Matthias and Andrea Leopardi — https://smartlogic.io/podcast/elixir-wizards/s6e6-matthias-leopardi/
Special Guest: Isaac Yonemoto.
While NIFs provide a great way to interface with native code in the BEAM machine, the process can also be rather error-prone. Thankfully, since Isaac Yonemoto built Zigler, things have become a lot simpler, and he joins us today to talk about how. Isaac is an Elixir developer with a background in biotech and we kick off the discussion by hearing about his journey into programming and some of the ways that he has combined it with science. From there we hear more about the different languages Isaac has worked in and why he fell in love with Elixir, where he talks about its encouragement of test-driven development and how this has made him a better programmer. We dive right into the contributions Isaac is making to the Elixir community next, and he starts off by talking about Zigler. He explains how Zigler provides a bridge between Zig and Elixir that makes it far easier to build NIFs. We hear a bunch of the other cool possibilities that Zigler offers to Elixir as well, including its ability to make debugging easier by appending the Zig stack trace to the Elixir one. After hearing Isaac’s opinion of magic in Elixir, we close today's show off with a few of the other projects he is working on, contributions that are bound to make the world of Elixir even more exciting!
Key Points From This Episode:
- Isaac’s early exposure to programming and how he got started in tech.
- The education Isaac had in the sciences and his experience in the biotech sphere.
- Difficulties with installing Ruby and how this led to Isaac learning Elixir.
- Support for asynchronous testing and the reasons why Isaac finds joy in Elixir.
- The emphasis on test-driven development in Elixir and how this has made Isaac a better programmer.
- Isaac’s experiences with Zig and the similarities between it and Elixir.
- How NIFs allow C code in Elixir and what it is like debugging them.
- Isaac’s Zigler project and how it provides integration between Elixir and Zig making it easy to build NIFs.
- Cross-compiling C using Zig and why Isaac built a disassembler.
- Aspects of the BEAM that make it harder to write NIFs in Elixir than in Julia.
- Isaac’s opinion of magic in programming and how it should always be comprehensible.
- Final plugs from Isaac: where to find Zigler, and some upcoming projects.
Links Mentioned in Today’s Episode:
SmartLogic — https://smartlogic.io/
Isaac Yonemoto on Twitter — https://twitter.com/DNAutics
Isaac Yonemoto on GitHub — https://github.com/ityonemo
Isaac Yonemoto on YouTube — https://www.youtube.com/channel/UCarZZW7eavljSdGRQx9kkSA
Selectrix — https://github.com/ityonemo/selectrix
Mavis — https://github.com/ityonemo/mavis
Chiaroscuro - https://github.com/ityonemo/chiaroscuro
Zigler - https://hexdocs.pm/zigler/Zig.html
Zigler on GitHub — https://github.com/ityonemo/zigler
Julia — https://julialang.org/
Testing Elixir with Jeffrey Matthias and Andrea Leopardi — https://smartlogic.io/podcast/elixir-wizards/s6e6-matthias-leopardi/
Special Guest: Isaac Yonemoto.
Previous Episode

Maxim Fedorov on Building and Scaling WhatsApp with Erlang
Today we are so excited to share a conversation with Maxim Fedorov, who is the Core Infrastructure Lead at communications giant, WhatsApp! In our chat, Maxim offers such interesting insight and wisdom from a long career in the space, focusing on Erlang and why he views it as such a powerful language for the work at WhatsApp. We also get some backstory from Maxim, looking at his first experiences with computers, his educational background, and some of the work he did leading up to his current position. Our guest does a great job of sharing his thoughts on what he sees as a lack of magic within the Erlang language, why he prefers this, and how the company has managed to scale in such a major way over the past years. We also deal with some more general questions, weighing functional languages against object-oriented ones, useful resource recommendations, and a whole lot more! We finish off this episode with a mini-interview with David Hardwick, who is the current Vice President of Engineering at STORD, so make sure to stay tuned until the end for that!
Key Points From This Episode:
- The beginnings of Maxim's interest in computer science and software development.
- How Maxim transitioned into the network security field.
- Maxim's experience with timezones and how this is approached for an app like WhatsApp.
- Thoughts on why WhatsApp is so popular outside of the United States.
- How Erlang is used at WhatsApp to power messaging.
- Probable reasons that Erlang was selected as the language for WhatsApp.
- Outages and downtime; what constitutes a serious issue for WhatsApp user experience.
- The massive growth that WhatsApp has seen and how their approach to scaling has evolved.
- Characteristics of Erlang that make it so well suited to WhatsApp's needs; simplicity and reliability.
- Maxim's perspective on the issues around programmer education and their results.
- Functional languages versus object-oriented programming; Maxim's thoughts on strengths and weaknesses.
- Why Maxim views Erlang as not containing or performing anything magical.
- Maxim's recommendations for resources when getting started in Erlang!
- Looking back at Maxim's experiences of tertiary education and the thesis he produced.
- The scaling of the WhatsApp server; the project that Maxim is most proud of!
- Maxim's love for motorcycles and bicycles and how these grew out of initial conveniences.
- Today's mini-feature interview with David Hardwick, VP of Engineering at STORD.
Links Mentioned in Today’s Episode:
SmartLogic — https://smartlogic.io/
Maxim Fedorov: https://au.linkedin.com/in/maxim-fedorov-14a570b
Electronika MK-61 — https://en.wikipedia.org/wiki/Elektronika_MK-52
Brian Acton — https://www.forbes.com/profile/brian-acton/
Learn You Some Erlang — https://learnyousomeerlang.com/
Adopting Erlang — https://github.com/adoptingerlang
Joe Armstrong Thesis — https://erlang.org/download/armstrong_thesis_2003.pdf
The BEAM Book— https://github.com/happi/theBeamBook
ejabberd — https://www.ejabberd.im/
Will Cathcart Tweet — https://twitter.com/wcathcart/status/1385253969522413568
Clarke's three laws — https://en.wikipedia.org/wiki/Clarke%27s_three_laws
Lukas Larson — https://twitter.com/garazdawi
Erlang OTP — https://github.com/erlang/otp/blob/master/lib/kernel/src/pg.erl
David Hardwick — https://www.linkedin.com/in/davidhardwick
STORD — https://www.stord.com/
BetterCloud — http://www.bettercloud.com/
Special Guest: Maxim Fedorov.
Next Episode

Delving Deeper into Magic with Quinn Wilton
Joining us on the show today is Quinn Wilton, and we have a wonderful conversation with our guest about her journey with Elixir, unusual path into programming, and her wide appreciation for different languages! We start off looking at the time Quinn spent at Waterloo University and what separates the Canadian ethos around computer science. From there, we turn to Quinn's early work in programming, the first proper job that she stepped into, and the immediate affinity she felt for working in Elixir. We also talk a bit about the interesting research that Quinn has been conducting privately, tracking and plotting the path of Erlang over the decades, while also reflecting on the skill of academic reading. We spend some necessary time hearing from Quinn about the BEAM and what BEAM magic means to her, before hearing about her website, love of Twitter, other languages that currently have her excited, and the avenues she is most lit up about exploring in the future! Listen in to hear it all, as we continue this journey!
Key Points From This Episode:
- Quinn's reflections on her education in Canada, and differences to the American approach to computer science.
- Reasons that Quinn wanted to pursue a career in programming
- The first jobs that Quinn landed as a programmer; creating a Roblox game and tracking malware.
- How Quinn was introduced to Elixir and the immediate love she felt for the language.
- The recent work that Quinn has been busy with researching and tracing the history of Erlang.
- Experiences of reading academic papers and what sets it apart from other formats.
- The inspiration behind Quinn's website and her affinity for Twitter's format.
- Quinn's favorite characteristics of the BEAM: the debugging possibilities.
- The project that Quinn worked on using Gleam on the BEAM and her enjoyment of its simplicity.
- Some possible areas, outlined by Joe Armstrong, that Quinn is excited to explore in the near future.
- Quinn's huge appreciation for different programming languages and her fascination with Strand.
- Encouragement from Quinn to dive into reading intimidating research papers.
Links Mentioned in Today’s Episode:
SmartLogic — https://smartlogic.io/jobs
Quinn Wilton — https://quinnwilton.com/
Quinn Wilton on Twitter — https://twitter.com/wilton_quinn
Quinn Wilton on GitHub — https://github.com/QuinnWilton
University of Waterloo — https://uwaterloo.ca/
Roblox — https://www.roblox.com/
Lookout — https://www.lookout.com/
Clint Gibler — https://clintgibler.com/
Gleam — https://gleam.run/
Joe Armstrong — https://www.theguardian.com/education/2019/may/08/joe-armstrong-obituary
'Getting Erlang to talk to the outside world' — https://www.researchgate.net/publication/2549678_Getting_Erlang_to_talk_to_the_outside_world
Universal Binary Format — https://github.com/ubf/ubf
CLU — https://en.wikipedia.org/wiki/CLU_(programming_language)
Strand — https://en.wikipedia.org/wiki/Strand_(programming_language)
Special Guest: Quinn Wilton.
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/elixir-wizards-489891/the-bridge-between-elixir-and-zig-with-isaac-yonemoto-65124369"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to the bridge between elixir and zig with isaac yonemoto on goodpods" style="width: 225px" /> </a>
Copy