Paul Guyot

CPTO and Open Source Hobbyist

Paul learned programming with 6502 in the 1980s, wrote drivers and eventually a full system emulator of Apple Newton Messagepads which was first released in 2004. He eventually graduated with a Ph.D. in Artficial Intelligence in 2006 and fell in love with Erlang when he introduced ejabberd to power Nabaztag wifi rabbits as the CTO of Violet in 2007. For a decade, he led Semiocast, a data science boutique consultancy using Erlang and Elixir to crawl and process the web. An open source advocate and hobbyist, he’s been a contributor to various Erlang projects and had recently a lot of fun working with AtomVM developers.

La Machine: The Useless Box reloaded with Erlang and AtomVM

Why and how Erlang and AtomVM were used to develop the personality of a lovable IoT device while maximizing its battery life.

Session will include video demos of La Machine ( and most importantly the Erlang journey towards the product:

  • hardware prototyping including a small ESP32c3 board powering it
  • usage of rebar3 to flash Erlang code on it
  • usage of console
  • usage of AtomVM API for GPIO and servo (PWM)
  • usage of CI with dialyzer and tests, including qemu
  • specific AtomVM API for ESP32 deep sleep
  • how a C library was ported as an AtomVM NIF for audio decoding, with a glimpse on AtomVM SMP builds (even if ESP32C3 is single core)
  • quick overview of memory management on AtomVM

Key Takeaways:

  • How to use AtomVM to prototype and build IoT devices using Erlang or Elixir.
  • This includes using existing libraries (GPIO, PWM will be explicitely mentioned, but I2C is straightfoward), as well as porting more complex ESP32 component libraries as NIFs.

Target Audience:

  • Erlang developers
  • Elixir developers
  • IoT enthusiasts and hackers