Brujo Benavides

This guy SpawnFest's!

Brujo is a long-time Erlang developer, blogger, and trainer.

Currently working for NextRoll, from sunny Barcelona, Spain.

He's a member of the Education WorkGroup at the EEF.

He organizes SpawnFest and ElixirConfLA and he maintains a long list of open-source repositories with the help of his friends at the Inaka Community.

Proud father, ping-pong aficionado and a long-distance walker.

Find more about him at http://about.me/elbrujohalcon.

Upcoming Activities

Brujo Benavides

Working effectively with legacy Erlang code


Loosely based on the book by Michael Feathers with the same title, this talk summarises Brujo's personal experience developing and maintaining Erlang systems with many years of age.

Brujo will share some techniques and tools that you can use if you ever find yourself in the position of maintaining (and maybe expanding) a legacy code base for a huge system written in Erlang.






The goal is to provide tools and techniques to reduce the stress, the fear, and the hopelessness that tend to be common among those who face legacy systems for the first time.


  • People that just started or are considering working in huge, old systems.
  • People who wants to build systems that will be maintainable for many years to come.

Past Activities

Brujo Benavides
Code BEAM SF 2019
28 Feb 2019
11.35 - 12.20

OTP behaviours and how to behave around them

One of the first things every newcomer faces when they meet OTP are behaviours. The general explanation for them is usually along the lines of "they're like interfaces for OOP". While that's somewhat accurate, it's also misleading and introduces a lot of confusion on how and when to use the existing behaviours and when it's reasonable to define your own ones. In this talk, Brujo will explain what behaviours are, how they should be used and how to create and expose new ones if you ever need to.


To help newcomers get familiar with OTP behaviours and to help experienced devs rediscover them.


Developers willing to understand what they really do when they implement a generic server or a supervisor. Also folks considering the creation of their own behaviours with the desire to do it right. If you don't know what a behaviour is at all, you're welcome here too.

Brujo Benavides
29 May 2020
10.50 - 11.20

rebar3 format: A new code formatter for Erlang

In recent years, many language ecosystems have developed automatic code formatters to reduce the mental overhead of code readers and therefore to share code more easily. The Erlang community was lacking a tool like this, so we created a rebar3 plugin just to automatically format code.


To show the new currently available and open-source rebar3 plugin to automatically format Erlang code that we created.

Brujo Benavides
Code BEAM SF 2018
15 Mar 2018
12.25 - 12.50

Opaque Structures and Other Yerbas

Opaque Data Structures provide a very nice technique to structure systems and they are particularly useful within the functional programming paradigm. With the addition of maps and the opaque attribute for modules, Erlang is now perfectly suited to get the best of these structures, if you use it properly.

In this talk, Brujo will show what opaque data structures are, how to use them and why they are so useful, even more so if you're developing an open-source library. This talk will be conceptual, but it won't be 100% theoretical.

Brujo will also present examples and tools that assist us in making better use of these techiques.


The main goal of the talk is to showcase a way to structure Erlang systems based on strong type definitions and explain why and how that structure is beneficial to Erlang developers.


Everyone, but it might be of particular interest for those building open-source libraries and/or big applications with lots of modules.