Elixir Wizards is an interview-format podcast, focused on engineers who use the Elixir programming language. Initially launched in early 2019, each season focuses on a specific topic or topics, with each interview focusing on the guest's experience and opinions on the topic. Elixir Wizards is hosted by Eric Oestrich and Sundi Myint of SmartLogic, a dev shop that’s been building custom software since 2005 and running Elixir applications in production since 2015. Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)

Matt Nowack and Jake Heinz on Elixir and Discord; Bonus: Arthi Radhakrishnan, Community.com

January 21, 2021 53:12 51.11 MB Downloads: 0

In this episode we continue our conversation about adopting Elixir, this time with Matt Nowack and Jake Heinz from Discord, hearing them get into the features of Elixir that make it a great fit for building a real-time chat infrastructure system! We also invite Arthi Radhakrishnan from community.com for our mini-interview in the last chunk of the episode. Our chat begins with Jake and Matt telling Elixir developers exactly why they should not use Mnesia. They subsequently dive into their journeys in programming and the process of learning Elixir after joining Discord. They share a few aha-moments as well as challenging projects that asked them to get their heads around some of the more powerful features of Elixir, highlighting a way they used immutability for a project that asked them to efficiently calculate deltas for large member list updates. From there we get into the culture around onboarding new devs at Discord, the company’s popular open-source Elixir contributions, and some brags about the high performance of features of Discord built in Elixir. Wrapping up with Jake and Matt, we hear their suggestions for teams and devs hoping to adopt Elixir, where they strongly advise on learning OTP as well as Elixir’s standard library. After that, it’s time for our chat with Arthi, where we hear about her programming journey, how Elixir is being put to use at Community.com, how the company supports new devs learning Elixir, and more!

Key Points From This Episode:

  • Our guests’ thoughts on why Elixir developers shouldn’t use the database driver Mnesia.
  • How Jake and Matt got into programming and learned Elixir after joining Discord.
  • The history of the use of Elixir at Discord and some of the projects Jake helped build since.
  • The nuts and bolts of OTP; Jake’s experiences learning it along with Elixir at Discord.
  • Different projects Matt worked on after joining Discord and how they helped him learn Elixir.
  • Aha moments of learning Elixir; features of the language that acted as force multipliers in the development of different Discord projects.
  • Processes at Discord for helping new developers learn Elixir.
  • Open-source contributions from Discord to the Elixir community and the culture around this at Discord.
  • Issues around logging and memory allocation in Elixir and what our guests think could change.
  • The sheer power Elixir brought to the Discord project allowing rapid scale with a small team.
  • Jake weighs in on the strengths of Python, Rust and Elixir, as well as BEAM processes versus Goroutines.
  • Discord as a native Electron app and whether we will see it written in Rust.
  • Advice regarding adopting Elixir about the power of OTP and the standard library.
  • Introducing Arthi Radhakrishnan for our mini-interview at the end of the show.
  • Previous languages Arthi worked in and how she learned Elixir after joining community.com.
  • The fan chat service offered at community.com and some famous users.
  • Features of the community.com architecture built in Elixir.
  • The size of the team, the culture of hiring Elixir devs, and Arthi’s onboarding process at Community.com.
  • Links Mentioned in Today’s Episode:

SmartLogic — https://smartlogic.io/
Matt Nowack on GitHub — https://github.com/ihumanable
Mat Nowack on Twitter — https://twitter.com/ihumanable?lang=en
Jake Heinz on GitHub — https://github.com/jhgg
Apply for a Position at Discord — https://discord.com/jobs
Stanislav Vishnevskiy on LinkedIn — https://www.linkedin.com/in/svishnevskiy/
ZenMonitor — https://github.com/discord/zen_monitor
SortedSet Nif — https://github.com/discord/sorted_set_nif
The BEAM Book — https://github.com/happi/theBeamBook
Semaphore — https://github.com/discord/semaphore
ExHashRing — https://github.com/discord/ex_hash_ring
erts_alloc Documentation — https://erlang.org/doc/man/erts_alloc.html
Arthi Radhakrishnan on LinkedIn — https://www.linkedin.com/in/arthiradhakrishnan/
Community.com
Andrea Leopardi on LinkedIn — https://www.linkedin.com/in/anleopardi/?originalSubdomain=it

Special Guests: Jake Heinz and Matt Nowack.