Brujo Benavides

Blogger, Event Organizer & Maintainability Fanboy

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

Currently working for NextRoll, from sunny Barcelona, Spain.

He's an active member of the Education WorkGroup at the EEF. You can find him on exercism.io.

He creates and maintains a long list of open-source repositories, mostly rebar3 plugins.

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

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

Upcoming Activities

Brujo Benavides
Code BEAM Europe 2022
Tutorial/ 17 May 2022
10.00 - 17.30

Building a maintainable open-source library with Erlang/OTP - A Speedrun




You will learn how to go from an empty folder to a maintainable open-source library hosted on GitHub, ready to be published on Hex.pm and built with Erlang/OTP, using rebar3 and a host of plugins that will help you get there.We will guide you through this interactive process that will involve starting from a template, writing in-source documentation, creating and executing tests, performing static analysis, setting up continuous integration using Github Actions, and finally publishing your library on Hex.pm.


7 Hours


To learn how to build a fully releasable open-source library and get it ready to be published in Hex.pm,
To prepare it to be easily maintainable, through the use of tests, static checks, and other tools.


People who would like to contribute to the Erlang Ecosystem.

Past Activities

Brujo Benavides
Code BEAM V Europe
Tutorial/ 18 May 2021
10.00 - 14.00

Working Effectively with Erlang Legacy Code

So you just joined a massive project with tons of poorly-maintained Erlang code. DON'T PANIC! This tutorial will teach you all the tools and techniques you need to start working on it confidently and productively.

You will learn how to use tools like the compiler, common_test, xref, dialyzer, elvis, hank, the formatter and others in large codebases which are generally hard to work on. These tools and some of the techniques will increase your confidence and help you work more efficiently.


  • Intermediate



  • 4 hours



  • Erlang developers that work (or plan to work) in legacy systems.



  • Erlang/OTP 22 (or newer), github, and a text editor


  • Improving systems in an iterative way
  • Testing Frameworks: Common Test, Eunit
  • Cross-reference Analyzers: Xref
  • Discrepancy Analyzers: Dialyzer / Gradualizer
  • Linters: Elvis / rebar3_lint
  • Dead Code Removers: Hank / rebar3_hank
  • Security Analyzers: PEST



  • Increases your confidence in dealing with large and complex systems.
  • Gives you tools to help you build better applications.
  • Gets you thinking in maintainability.
  • Helps you follow Joe’s recommendation of writing Beautiful Code.
Manuel Rubio / Laura M. Castro / Brujo Benavides / Anayeli Malvaez / Raúl Chouza / Carlo Gilmar /
Code BEAM America 2021
04 Nov 2021
10.00 - 10.40

Panel discussion on Beamer's modern life ó La vida moderna de un Beamer

This session will host an all spanish-speaking panel to talk about the BEAM; how the platform is currently used and what the future holds for anyone invested in it. Note that this panel will be delivered 98% in spanish.

Esta sesión tendrá como invitados a destacados miembros de la comunidad hispanohablante para discutir sobre BEAM; cómo es que aprovechamos la plataforma al día de hoy y qué es lo que el futuro aguarda para todos los interesados en ella. Manejaremos español durante gran parte de la sesión para la comunidad.

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
Code BEAM V Europe
19 May 2021
13.20 - 14.00

Kill your Dead Code with Fire!

Working with legacy code can be very frightening sometimes. That's why most of us tend to touch as little as possible every time we need to make a change, particularly when we're removing stuff. That leads to lots and lots of "dead code" (pieces of code that are no longer needed but never removed… just in case). That piling of dead code makes debugging and maintaining systems harder and harder, and the cycle starts again…

That's why, at NextRoll, we created Hank, the Dead Code Killer.

Our latest open-source tool that you need to start using today!


To help developers lose the fear to delete code from large systems using Hank to help them.


Erlang developers.

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.