Stavros Aronis

Developer & Trainer at Erlang Solutions

Stavros' experience with Erlang started at the deep end of the pool, when he picked Dialyzer, the famously "never wrong" tool, and made it even smarter, as a master thesis project under the supervision of Kostis Sagonas. He then made Dialyzer faster and parallel, an improvement which has been included in the Erlang/OTP distribution since 2012. Later he got his PhD by re-engineering Concuerror, another tool for Erlang developers, focused on finding concurrency errors in programs and protocols.

Stavros loves testing and making tools and is now trying to bring all his favorite techniques into industry as an Erlang Solutions consultant and trainer.

Past Activities

Stavros Aronis
Tutorial/ 09 Sep 2020
09.00 - 17.00

Unit, System and Property Based Testing - Break your Erlang system before your customers do!

This course introduces best practices around testing, looking at unit and system tests, introducing mocking frameworks and property based testing.



After this tutorial, you will

  • Have an understanding of different testing approaches and techniques, and when to use them
  • Know how to use the most commonly used frameworks and tools
  • Understand the principles behind property based testing

The class will be a mix of presentations, live coding and exercises.

You'll have plenty of time to work on labs along the way as you hone your skills, getting you started on your journey in testing systems which never fail.



Attendees should have a basic understanding of Erlang and Elixir program structures, OTP applications and releases. They should be able to write basic Erlang or Elixir programs.



Elixir/Erlang developers wishing to fast track their understanding on how to test programs running on the BEAM using the BEAM.


Introduction - An introduction to different testing techniques. Unit Testing, System Testing, Continuous Integration, Capacity Planning and other testing Techniques

Unit Testing - Introduces Unit testing, code coverage tools, focusing on eunit.

Mocking Frameworks - We explain why they are needed, and introduce meck.

Property-Based Testing - Introduction to PropEr, and property-based testing in general.

Common Test - An introduction to how the system testing and verification with Common Test works.

Load - Looks at load testing, back pressure and load regulation. How should systems be load tested, what should you be looking out for, and what do you need to to to stop them from breaking.

Stavros Aronis / Hans Nahringbauer
Code BEAM Europe 2022
19 May 2022
11.35 - 12.20

Growing together with the BEAM

Telia ACE is the leading contact center product in the Nordics, using BEAM's scalability, availability and ease of development to handle calls, sms, mail, chat, social media, and recording for major companies and municipalities. As one of the first adopters of Erlang/OTP for their backend, more than 20 years ago, the ACE team has seen the technology and community grow, and have followed along with impressive growth themselves.

Hans Nahringbauer, recipient of the "Erlang User of the Year" award from the Erlang User Conference 1999 (Code BEAM EU's spiritual predecessor), has been leading the ACE platform for more than 20 years. Stavros Aronis joined them in 2018 as a senior developer and Erlang Solutions consultant to assist with some of their latest projects, integrating with a new call recording and Interactive Voice Response (IVR) framework on Amazon Web Services (AWS).

Join this talk from Hans and Stavros to listen about the history, challenges, and exciting ongoing projects of some of the earliest Erlang/OTP enthusiasts!


Tell the story of succeeding for more than 20 years with the BEAM, and show how Telia ACE plans to continue doing so for many years to come!


Developers of all levels, managers, students

Lukas Larsson / John Högberg / Stavros Aronis
Code BEAM V Europe
21 May 2021
13.10 - 13.50

Fireside chat on JIT compiler

"Good things come to those who wait" goes the saying, and indeed, after 10 years and several interesting attempts and research, Erlang 24.0 finally comes out of the box with a JIT (i.e. Just-In-Time) compiler that is impressive both in its performance, as well as its simplicity, and has gotten the entire BEAM community talking about it!

In this fireside chat, hosted by Stavros Aronis, Lukas Larsson and John Högberg will answer all your questions about the new JIT.

Louis Pilfold / Leandro Ostera / Stavros Aronis
Code BEAM V Europe
19 May 2021
14.30 - 15.10

Fireside Chat: Making a type-safe language on the BEAM

"Gleam is a fast, friendly, and functional language for building type-safe, scalable systems."

"Caramel is a functional language for building type-safe, scalable and maintainable applications."

These are currently the official slogans of the Gleam and Caramel languages, and it's easy to see the alignment on functional programming, scalability and maintainability. But with both being languages running on the BEAM, these are not too surprising. Type-safety on the BEAM, on the other hand? That is a more intriguing story! Join us on this fireside chat hosted by Stavros Aronis, where Louis Pilford, author of Gleam, and Leandro Ostera, author of Caramel, will answer all your questions about making a type-safe language on the BEAM!

Stavros Aronis
Code BEAM STO 2019
16 May 2019
15.30 - 15.55

What does Dialyzer think about me?

If you have been in the BEAM community for a while, you know that Dialyzer is a tool with fanatic lovers and haters. In the speaker's personal opinion, however, most of the haters actually like Dialyzer, but absolutely loathe how the tool is treating them.

In this talk Stavros will explain how Dialyzer works, with the goal to help you decipher its warnings (or their absence), make it run faster and increase your overall productivity while using it.


1) Counsel you on how to control hatred towards a piece of software.

2) Explain, in plain words, how Dialyzer thinks.

3) Convince you to add Dialyzer to your build pipeline, today.


People who are impressed by Dialyzer's abilities or inabilities and would like some help to build a healthy relationship with it.

Stavros Aronis
Code BEAM SF 2019
01 Mar 2019
13.40 - 14.25

Modeling and verifying distributed applications with Concuerror

Sometimes, a developer needs to build some algorithm using Erlang's primitives directly. Such code is usually hard to get right, as one needs to think from scratch about all the possible race conditions, timeouts, deadlocks etc. Recently, developers at Klarna decided to re-design such a custom algorithm, used in a critical component of their software stack. How could they be certain that their code would not suffer from such concurrency errors?

Concuerror is a tool built to answer exactly such questions, but Klarna's algorithm was intimately tied to distributed Erlang's behaviors, which Concuerror does not support. The solution was to design a modelling library, vnet, which can help to simulate distributed Erlang systems on a single node.

In this talk, Stavros will present vnet's capabilities, show how it can be used to model, test and verify distributed Erlang systems, and demonstrate the kinds of errors that Concuerror can find (or prove that don't exist!).


  • Demonstrate new capabilities for testing and verifying distributed Erlang systems
  • Report on what's going on with Concuerror, an advanced tool for testing Erlang programs


  • Distributed system architects
  • People who like to play with tools
  • Erlang distribution experts


Articles: 7

Day 1: The Tyranny of the Rocket Equation

Article by Stavros Aronis

Day 1: The Tyranny of the Rocket Equation


Day 18: Settlers of The North Pole - Advent of Code 2018

Article by Stavros Aronis

I did the Advent of Code 2018 day 18 challenge in Erlang! Parts one and two are as follows:


Day 14: Chocolate Charts - Advent of Code 2018

Article by Stavros Aronis

I did the Advent of Code 2018 day 14 challenge in Erlang! Parts one and two are as follows:


Day 13: Mine Cart Madness - Advent of Code 2018

Article by Stavros Aronis

I did the Advent of Code 2018 day 13 challenge in Erlang! Parts one and two are as follows:


Day 12: Subterranean Sustainability - Advent of Code 2018

Article by Stavros Aronis

I did the Advent of Code 2018 day 12 challenge in Erlang! Parts one and two are as follows:


Day 9: Marble Mania - Advent of Code 2018

Article by Stavros Aronis

I did the Advent of Code 2018 day 9 challenge in Erlang! Parts one and two are as follows:


Day 8: Memory maneuver - Advent of Code

Article by Stavros Aronis

I did the Advent of Code 2018 day 8 challenge in Erlang! Parts one and two are as follows:


Videos: 1