James Aimonetti

Systems architect at 2600Hz

James Aimonetti has been building the Kazoo telephony platform for the last 8 years at 2600Hz and using Erlang since 2007. He sees no reason to stop any time soon!

The Kazoo platform provide telephony services for over 250,000 endpoints and growing!

Upcoming conferences:

James Aimonetti
Code BEAM SF 2019
Training/ 04 Mar 2019
09.00 - 17.00



  • Get an intro to the Kazoo code base
  • How to build applications, leveraging existing libraries and subsystems included in the platform



  • The focus will be on leveraging Kazoo to build applications; as such, we won't focus too heavily on teaching Erlang.
  • Please come with some experience using Erlang, exposure to OTP principles and patterns, and preferably having used some of the more popular Erlang libraries (lager, Cowboy, poolboy, etc).
  • General telephony/VoIP experience welcome but not required.
  • Basic Linux sysadmin experience.



  • Developers
  • DevOps


Want to learn how to write applications for the most flexible, scalable, and advanced telephony platform, Kazoo?

This two-day, hands-on course will take you through the platform, starting with the libraries, utilities, behaviors, and patterns developed over the last three years to get you going on the right track. From there, we'll journey into the existing applications so you can see design decisions that worked, that didn't worked, and the tradeoffs to consider when you take the reins to build your own application.

The course will cover topics such as:

  • Using the AMQP behavior, gen_listener, to consume messages off the AMQP bus
  • Using the BigCouch utilities to query, create, and delete databases, documents, and views
  • Basic Erlang application structure to build new Kazoo applications
  • and so much more!

We will have a variety of fun ""toy"" applications you can choose from for the final project, but if you have ideas for your own application, we encourage you to bring those ideas and see if you can get a prototype together before you leave.

James Aimonetti
Code BEAM SF 2019
28 Feb 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.


  • Introduce property-based testing with real examples
  • Introduce the idea of modelling the system and its APIs via the proper_statem behaviour


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.