We are happy to be joined in this episode by Eric Meadows Jönsson, creator of the hexpm package manager, and an amazing resource who works tirelessly to build the Elixir community. Eric presently works at Brex and was part of the core team at Forza previously. In keeping with our current topic of all things working with Elixir, Eric takes a deep dive into the work he is doing to optimize various interfaces at Brex. He gives us the rundown on the static compile-time checking project he is working on, talking about his aims to build in different warnings and what we can expect from the new release in that regard. You’ll also hear about Eric’s journey learning Elixir and how he had to change his OOP mindset when he got introduced to functional programming at university. He shares the story behind hexpm and Mint, his thoughts about the future of Hex, and some of the processes around accessing the private repositories on its website. We also hear more about Eric’s hiring procedure while working at Forza, how he teaches functional programming to students at ElixirConf, and some of the major performance bottlenecks he experiences using Hex. Tap into the incredible resource that is Eric and hear more about how you can link with him online to learn further in the future by tuning in!
Key Points From This Episode:
- Jose Valim, the Ecto library, and Eric’s journey with Elixir since 2012 at a coding camp.
- Early-stage static compile-time checks that Eric is adding to the compiler at Brex.
- Whether the static compile-time checks Eric is adding constitute a type system or not.
- Static compile-time checks in the current system such as undefined function warnings.
- Features of the new static compile-time check release: refactored checks, etc.
- Currently, these checks happen at compile-time, or when Elixir compiles into the byte code.
- Whether these checks will move into BEAM: currently it’s in Elixir and at an early stage.
- The Erlang compiler already does type inference during compilation.
- Eric’s Erlang proficiency and why he had to brush up on it through using Elixir.
- What makes Eric helpful with Hex: his debugging skills and availability to answer questions.
- How Eric got started with Hex adding an intake for Git packages.
- The story behind Hex regarding ties to Elixir and Devinus from Pool Boy.
- Todd’s perspective on Eric as a smart and nice mentor who sleeps very little.
- Changes that Eric sees happening in Elixir.
- Hex will no longer support older Elixir versions so that it can enable better maintenance.
- Another change will be a refactoring of the resolution version algorithm.
- Security-related updates that Todd has been working on.
- Private versus public repositories on the hex.pm website.
- Hiring challenges at Forza and how Eric found the right team out of scarce people.
- Eric looks for people who love being programmers and have a passion for learning.
- Tactics Eric uses to train functional programming such as hosting ElixirConf workshops.
- Important fundamentals in functional programming: using data structures to model data, etc.
- Differences between functional and object-oriented programming: data vs classes.
- The role of types in Eric coming to understand functional programming better.
- Performance bottlenecks in Hex such as dependency resolution.
- How every package manager/resolver compromises, exemplified by NPM and Rebar3.
- Origins of Mint: wanting http2 support for Hex, and more.
Links Mentioned in Today’s Episode:
SmartLogic — https://smartlogic.io/
Eric Meadows Jönsson on GitHub – https://github.com/ericmj
Eric Meadows Jönsson on Hexpm — https://hex.pm/users/ericmj
Brex — https://brex.com/
Todd Resudek on LinkedIn — https://www.linkedin.com/in/toddresudek
Justus Eapen on LinkedIn — https://www.linkedin.com/in/justuseapen/
Eric Oestreich on LinkedIn — https://www.linkedin.com/in/eric-oestreich-8b55aab/
hexpm on GitHub — https://github.com/hexpm
Google Summer of Code — https://summerofcode.withgoogle.com/
Jose Valim on GitHib — https://github.com/josevalim
Pool Boy — https://github.com/devinus/poolboy
Devin Alexander Torres — https://github.com/devinus
Voitech — https://www.voitech.biz/
Hex — https://hex.pm/
hexpm specifications — https://github.com/hexpm/specifications
Slack — https://slack.com
Forza — https://www.forzafootball.com/women
ElixirConf — https://elixirconf.com/events
Chalmers University — https://www.chalmers.se/en/Pages/default.aspx
Fastly — https://www.fastly.com/
NPM — https://www.npmjs.com/
Rebar 3 — https://github.com/erlang/rebar3
Mint — https://www.mint-lang.com/
Ruby Gems — https://rubygems.org/
Andrea Leopardi on GitHub — https://github.com/whatyouhide?tab=overview&org=ForzaElixir