An event-driven approach to building Elixir applications Elixir Phoenix CQRS/ES Event sourcing

Presented on Jul 18, 2019

Talk given at Elixir LDN conference on July 18th, 2019.

We experience the real world by reacting to events that have occurred, what if we modelled our Elixir applications in the same way?

Event sourcing is an approach where application state changes are modelled as an immutable series of application-specific domain events over time. Changes made by end users of such applications are recorded as new events. Unlike in a traditional CRUD application, where updates and deletes are destructive operations, events are never deleted.


Introduce the concept of event sourcing with a practical application in Elixir. Talk covers the how, why, and why not to apply an event-driven approach to building your Elixir applications and services.


Anyone interested in discovering how the simple concept of using domain events to capture state changes can bring tangible benefits to application development.

Domain-driven design introduction Domain-driven design Event storming

Presented on May 02, 2019

In this talk I introduce the concepts outlined in Eric Evan’s Domain-driven design book (the “blue” book).

  • What is domain-driven design?
    • Strategic design:
      • Ubiquitous language, bounded context, and context map.
    • Tactical design:
      • Entity, value object, aggregate, domain event, service, repository, and factory.

Please get in touch if your company is interested in learning about domain-driven design or would like me to facilitate an event storming session.

Event sourcing in practice Elixir Phoenix CQRS/ES Event sourcing

Presented on Mar 28, 2019

Talk given at Elixir London on March 28th, 2019.

Using Elixir to build event-driven applications.

In this talk I demonstrate how you could apply event sourcing to an Elixir application.

  • Practical example of event sourcing in Elixir.
  • Where event sourcing can help, or hinder.

Want to learn more?

Building CQRS/ES web applications in Elixir Elixir Phoenix CQRS/ES

Presented on Mar 23, 2017

Command Query Responsibility Segregation and event sourcing (CQRS/ES) has established itself within the .NET community thanks to advocates such as Greg Young and Udi Dahan.

I propose that functional languages, such as Elixir, are well suited and deserve your attention. Let me demonstrate why.

In this talk you will discover how to build applications following domain-driven design, using the CQRS/ES pattern with Elixir and Phoenix. I’ll take you through a real-world case study to demonstrate how these principles can be applied.

  • Elixir is a dynamic, functional language designed for building scalable and maintainable applications. It leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems.
  • Phoenix is a productive web framework that does not compromise speed and maintainability.

Introduction to TypeScript TypeScript JavaScript

Presented on Oct 12, 2012

TypeScript was released by Microsoft on 1st October, 2012 and is being touted as “a language for application-scale JavaScript development.”

The basic premise is JavaScript with optional static typing, allowing superior tooling support.

  • TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
  • Any browser. Any host. Any OS.
  • Open Source.