<

Stavros Aronis

Hunter of discrepancies in Erlang code. Developer of parallel Dialyzer and Concuerror

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.

Upcoming Activities

Stavros Aronis
Code BEAM STO V
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.

 

OBJECTIVES

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.

 

PREREQUISITES

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.

 

TARGET AUDIENCE

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

COURSE OUTLINE

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.

Past Activities

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.

OBJECTIVES

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.

TARGET AUDIENCE

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

OBJECTIVES

  • 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

TARGET AUDIENCE

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

Media

Articles: 7

Day 1: The Tyranny of the Rocket Equation

Article by Stavros Aronis

Day 1: The Tyranny of the Rocket Equation

READ MORE

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:

READ MORE

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:

READ MORE

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:

READ MORE

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:

READ MORE

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:

READ MORE

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:

READ MORE

Videos: 1