Fred Hebert

Erlang and Distributed Systems Enthusiast, General Pessimist (Genetec)

Fred is the author of Learn You Some Erlang, Erlang in Anger, and more recently, Property-Based Testing with PropEr, Erlang, and Elixir. He is a maintainer of Rebar3, and of libraries such as recon, pobox, vmstats, and backoff.

He is a Systems Architect at Genetec, a company offering video systems, access control, case management, and IoT integration systems. Previously, he was a principal member of technical staff on the Heroku platform, worked in real-time bidding, and provided Erlang training.

Upcoming Activities

Fred Hebert
Code Mesh LDN

Complexity & operable systems

Any useful system necessarily becomes complex. Not only code rots and tangles up, but the cognitive load imposed on its operators keeps increasing. Clean code won't be enough to make systems properly operable: we also have to understand how we form mental models about them, what makes a good abstraction, and what level of details should be exposed to observers.

This talk covers all that, plus a bunch of pitfalls to avoid on our way there.






  • Introduce some concepts to reason about complexity in large systems and how humans cope with it
  • Cover common traps in attempts to provide observability, how to avoid them, and how to do things right instead
  • Give measures of what makes for good or a bad automation in complex systems; what to automate and when to do so


People tired of combing through unhelpful logs, unsure about what goes into metrics or what tools end up being useful for people running the systems. People wanting to provide better operator experience.

Past Activities

José Valim / Miriam Pena / Fred Hebert / Francesco Cesarini / Peer Stritzinger
Code BEAM SF 2019
28 Feb 2019
17.45 - 18.30

Introducing the Erlang Ecosystem Foundation

Thursday evening keynote at the Code BEAM SF where you can hear all about the newly formed Erlang Ecosystem Foundation. A talk from Jose Valim, Peer Stritzinger, Fred Hebert, Miriam Pena and Francesco Cesarini who are sharing the journey and goals of the foundation that we've all waited for!

The Erlang Ecosystem Foundation's goal is to grow and support a diverse community around the Erlang and Elixir ecosystem, encouraging the continued development of technologies and open source projects based on/around its runtime and languages.

Fred Hebert
Code BEAM SF 2019
28 Feb 2019
14.40 - 15.25

Operable Erlang and Elixir

Any system that is successful necessarily grows more complex. This means that code gets messier, but also that the people who are part of the system have to handle ever-increasing complexity.

It is not sufficient to take a code-centric approach; to make our Erlang and Elixir systems truly operator-friendly, we have to understand how our mental models work, and what constitutes good automation. Finally, we need to be aware of all the tools the Erlang VM makes available to us to truly deal with the unexpected.


  • Introduce some concepts to think about complexity in large systems and how humans cope with it
  • Give measures of what makes a good or a bad abstraction in complex systems; what to automate and when to do so
  • Present some of the tools that the Erlang virtual machine provides to deal with big surprises and point to ways to introduce them to your regular workflow


People nervous about having to operate and debug the Erlang and Elixir systems they put in production, or curious about the ways in which they could improve that experience.

Fred Hebert
Code BEAM SF 2018
15 Mar 2018
14.40 - 15.25

The Hitchhiker's Guide to the Unexpected

Bugs you know you will happen in production are usually easy to handle since you know about them. The problem is that we, as humans, have limited knowledge and understanding about the problem domains we write programs for and very often about our programs themselves. This is at the root of all the surprising unexpected bugs that we actually encounter all the time. While we can become experts at being careful and well-equipped in tooling and just knowing all kinds of weird situations that can arise from code and computers being a thing that we all have to live with, there are some other approaches that can prove helpful as well.

In this talk, we'll see some broad and diverse approaches to handling the unexpected, but will keep a specific focus on how building the proper supervision structures lets us encode predefined failure semantics into our programs so that we know how most errors will be handled, without even knowing what they are.