Application Layering - A Pattern for Extensible Elixir Application Design

An in-depth walkthrough of Application Layering, a design technique for building maintainable, adaptable and flexible large-scale Elixir codebases.

gen_rmq 2.0.0 version release

GenRMQ is a set of behaviours meant to be used to create RabbitMQ consumers and publishers.


  • Add support for more exchange types
  • Update documentation for exchange types
  • Set minimum required elixir version to 1.7

Up And Running With Faktory In Elixir

This post covers how to get an Elixir application set up with Faktory to allow us to process jobs in the background of our applications and take full advantages of the many features Faktory has on offer.

Up And Running With Faktory In Elixir

ElixirWeekly: The Elixir Community Newsletter, covering community news you easily miss, shared on ElixirStatus and the web, in one email every Thursday.

Oban Recipes Part 5: Batch Jobs

In the fifth Oban recipe we consider monitoring jobs as a group with the power of pattern matching and queue introspection.

Oban Recipes Part 5: Batch Jobs

LazyFor → Kernel.SpecialForms.for/1 but returning stream

The stream-based implementation of Kernel.SpecialForms.for/1.

Allows the same syntax as for and acts the same way. This is an initial release. It does not yet support :into, :uniq and :reduce options and bitstring comprehensions.

Everything else is supported.

Gearbox - A functional state machine with an easy-to-use API, inspired by both Fsm and Machinery

Gearbox focuses on doing one thing and doing one thing right – state transitions. No surprise callbacks, no process management overhead, just pure functional state transitions.

Read more about the description/rationale behind the project over at GitHub!


ElixirMix Podcast 069 - Distributed Databases with Wiebe-Marten ("Marten") Wijnja

In this episode of ElixirMix, we talk with Wiebe-Marten about designing for distributed systems. We discuss the common fallacies, the Byzantine General’s problem, CRDTs, GenServer.multi_call and databases like Mnesia, Cassandra, CouchDB, Riak and much more!

Podcast Episode

Password breach lookup and other password validation rules

Together with @danschultzer I wrote a guide on doing password validation rules in Pow based on the NIST SP800-63b recommendations.

Prometheus, PostGIS and Phoenix Part 2

In the final part of this series, we wrap up our Prometheus monitoring stack, write a stress tester with Erlang’s httpc, and make our Grafana dashboards dance!

Grafana Dashboard

ElixirWeekly: The Elixir Community Newsletter, covering community news you easily miss, shared on ElixirStatus and the web, in one email every Thursday.

New version 0.3.0 of Incident

I just released a new version of my library that helps you with Event Sourcing and CQRS applications. Now you can use Postgres to store events and projections with new adapters. #myelixirstatus

Running a Gatsby blog inside a Phoenix app

I wrote a simple guide on running a Gasby blog inside a Phoenix app. The basic approach I used was:

  • Create a new Phoenix app
  • Create a new Gatsby project from their hello-world starter inside the assets directory of the Phoenix project
  • Set up a symbolic link assets/static directory to Gastby’s public directory
  • Update endpoint.ex and add that new linked directory to the whitelist for Plug.Static

Learning Phoenix Live Views! With Illustrations!

Adopting Phoenix Live Views! We prepared a meetup at Mexico City, I made my own illustrations for explain it and then I wrote this blog post!

Sophie DeBenedetto on Excrypt and Railway - Smart Software S2E10

Latest episode: Sophie DeBenedetto on Excrypt and Railway. We talk with Sophie about her first experiences with open source and contributing to the Elixir School, and some of the challenges of working with encryption.

ElixirMix Podcast 068 - Contributing to the Elixir Community with David Bernheisel & Cory Schmitt

In this episode of ElixirMix, we talk with David Bernheisel and Cory Schmitt about contributing to the Elixir community. We discuss how to get started, ways to do it, what you can expect, the value of human relationships, and much more!

Podcast Episode

ex_check now runs npm test & empowers umbrellas

ex_check was under active development in last few weeks and it now comes with a bunch of new handy features:

  1. mix check now detects & runs npm test in Phoenix projects that have assets directory with package.json in it. It’s really consistent with existing Phoenix setup as now mix check will test both your back-end & front-end code just as mix phx.server compiles & watches the two for you. More info in feature request.

  2. mix check now empowers umbrella projects, in particular the experience of running tools recursively from the umbrella root, with a handful of extra benefits over the basic Mix task recursion (parallel execution, clearer presentation & more). More info in docs.

…and a bunch more additions & fixes - all listed in Changelog.

Brief reminder: ex_check provides a mix check task that allows to efficiently run all code analysis & testing tools in an Elixir project with a single command. With no configuration it catches compilation warnings, runs ExUnit, Credo & more. It’s a real convenience for all Elixir & Phoenix projects to ensure that new code is “good to go” & then to recheck it on CI in the exact same way.

Elixir Performance – Using IO Data Lists

Latest post from Eric on the SmartLogic blog:

After watching Johanna Larsson’s ElixirConf 2019 talk, High Performance String Processing Scripts in Elixir, I was inspired to work on some of my side projects to make them use IO lists instead of plain strings.

Tarearbol.Scheduler → Cron on Processes

Tarearbol v0.13.1 includes lightweight cron scheduler fully based on spawn processes. Allows conditional job termination, rescheduling, keeps track of last execution outcome.

Zero boilerplate is required.

Comes with cron record parser, returning all the upcoming events as Stream, Tarearbol.Calendar.{beginning_of,end_of}/2 working properly with any calendar (not only Calendar.ISO.)

Getting Started with Phoenix and Kubernetes

A complete guide to deploying a Phoenix application to a new and empty Kubernetes cluster.

We’ll cover all the moving pieces, including:

  • creating the cluster
  • running a private docker registry
  • databases and migrations
  • the changes needed to deploy the application, and
  • exposing the application to the world with automatic certificate management.

How to Create Desktop Application with Elixir?

Can we create desktop application with elixir? Let’s figure it out.

Rambo 0.2.0 released. Run your command. Send EOF. Get output.

Stream your command’s output while it runs with the :log option. Stop your command with kill/1. Remove unused binaries with :purge setting.