Brujo Benavides

Erlang Battleground Author and Software Engineer (AdRoll)

Erlang Developer, Blogger & Trainer.

Working at AdRoll through BairesDev.

Community manager and organizer of SpawnFest, BeamBA, and SAtG.

Find more about Brujo at https://about.me/elbrujohalcon

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
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.