James Aimonetti
Lead developer at 2600Hz
James Aimonetti has been programming in Erlang since 2006. He joined 2600Hz in its infancy in 2010 to build KAZOO, an open-source platform for building highly scalable, fault-tolerant communication systems. SInce then, he's been a leader in growing the codebase to over 300K lines of Erlang, the community to over 100 members, and building and deploying KAZOO clusters around the world.
Past Activities
Code BEAM SF
11.25 - 12.10
KAZOO the VOIP cloud platform: a retrospective
KAZOO has, over the last 10 years, grown to almost 300K lines of Erlang, plus C-node code in the FreeSWITCH and custom code in the Kamailio project.
We'll talk about:
- Growing the open-source community
- Erlang in anger
- Operational lessons learned
- Tooling to support developers, community
- Making major architectural changes
- Building closed-source applications on top of an open-source base
THIS TALK IN THREE WORDS
Learning
By
Doing
OBJECTIVES
The objective is to share war stories, failures and how we grew from them, engaging a growing community, making money from open source, and just talk about what it has been like working on a long-lived open source project in Erlang.
TARGET AUDIENCE
Most folks will get something out of it.
Code BEAM SF 2019
17.15 - 17.40
Property based testing in Kazoo
James will show how Kazoo is using PropEr to test important components of the Kazoo core libraries (and all the crazy bugs it found). James will also show a growing suite of tests for checking the APIs Kazoo exposes for developers using proper_statem to model Kazoo as a black box.
Kazoo has an AMQP-esque binding and routing engine for use internally. With Fred Herbert's help (way back in the day) the PropEr tests have found amazingly complex bugs in the implementation (see here, where James has put them as unit tests just to show their craziness). James will also share the timestamps (sometimes we went *years* before another bug was found) of those weird test cases.
Kazoo has a JSON library for interacting with JSON objects and a corresponding PropEr suite of tests. James will talk about the naive approach to generating JSON objects followed by a better generator that also allows the Kazoo team to control the depth of nested objects to feel confident they're testing complex objects.
The other highlight is the modelling of Kazoo and its API set via proper_statem tests, finding interleavings of API calls that lead to inconsistencies.
OBJECTIVES
- Introduce property-based testing with real examples
- Introduce the idea of modelling the system and its APIs via the proper_statem behaviour
TARGET AUDIENCE
Developers interested in property-based testing. Examples will be in Erlang but the ideas should be approachable to any BEAM developers that can use PropEr.