Use Return Value to Defer Decisions

By deferring decisions of how to respond to an event, our app can become extremely flexible. This post is about the simplest, yet the most powerful tool for deferring decisions in our app: Return Value.

Use Return Value to Defer Decisions - Yiming Chen

IntelliJ Elixir v11.0.1

  • Rubymine 2019.2 compatibility

Installation Instructions

IntelliJ Elixir v11.0.0

  • IntelliJ 2019.2 compatibility

Installation Instructions

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

SmartSoftware S2E6 - Chris Keathley on Wallaby and Raft // Elixir Internals

In our latest episode, we talked with Chris Keathley from Bleacher Report about Wallaby, Raft, concurrent tests, why he doesn’t work on front ends, consensus algorithms, and how he got started contributing to open source projects.

The dangers of the single global process

In this article Keathley discusses some of the dangers of trying to maintain state in a single, unique process. He also presents some solutions to these problems as well as some alternatives.

ElixirTalk Podcast Episode 152 - Hire an Elixir Developer! and Chris' Ecto Adventures

This episode of ElixirTalk your favorite hosts Chris & Desmond are back talking about a new project, Hire an Elixir Developer and we dive into some deep Ecto topics.

Listen on Soundcloud

Redex, a Redis server implemented in Elixir

Do you need a replicated Redis cluster in Kubernetes, checkout Redex, a cloud-native strong consistent masterless high available Redis implemented in Elixir.

ElixirMix Podcast 064 - Refactoring Elixir with Hubert Lepicki

In this episode of ElixirMix, we talk with Hubert Łępicki about several ways to refactor out excessive code in controllers. We also talk about alternatives to Phoenix contexts, embedded schemas, connection pools and much more!

Podcast Episode

DynamicManager on top of DynamicSupervisor

Tarearbol gets DynamicManager to ease building the collections of supervised workers with similar behaviours, e. g. watchers for different changing entities.

  • Scaffold for the supervised DynamicSupervisor
  • No code for managing processes required
  • Implementation is as easy as 4 callbacks
  • Extremely easy testing
  • Behaviour-driven consumers
  • Consistent state and callbacks on state changes (like restarting)

Implementation details and flow diagram.

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

Cleaning up your Elixir Code

Just because you use a functional language, it doesn’t mean your code is going to be clean.

This articles show how you can use hexagonal/ports & adapters/onion layering in order to clean up your elixir code.

Case study: Inky - An Elixir library

Covering some of the process rather than the detailed code of porting a python library for a hobbyist eInk display to Elixir. A bit of Nerves, a bit of Scenic, a bunch of refactoring for testability. Guest appearance by the Erlang wxWidgets library. References available for diving into the code. This is more of an overview than a code-along.

Just Enough Erlang

Erlang can be an intimidating language, but it doesn’t have to be. This article explores the more common features with the goal of enabling you to more easily include Erlang libraries in your Elixir projects, and to read and understand the documentation. API library 0.2 released

After coming back to full-time Elixir IC work. I’ve picked back up my Elixir Segment library I first release in 2016 and have reimplemented with batch and retry functionality. is a popular analytics and customer data integration layer.

For people using the original library (0.1.x) in production, the new library (0.2.x) supports the same interface but will now, by default, send events in batch to Segment.




Smart Software S2E5 René Föhring on Credo

We talked with René about Credo; why he built the library, how it’s different from other code analysis tools, and lessons he’s learned working in the open source community.

ElixirTalk Podcast Episode 151 feat. Dave Thomas and Brian Mitchell - The Future of Elixir

In this special episode of ElixirTalk we are joined by Dave Thomas and Brian Mitchell where we continue a discussion that we had at EMPEX NYC this year as a fishbowl style format. If you haven’t yet seen the talk, you can do so here –– probably best if you watch before listening, but you can also listen to this as a standalone episode. This episode is long, but is packed with some great tidbits about Elixir and Erlang and we go into considerable depth about how applications work today as well as outlining a vision for the future.

OTP Backed Web App Part 2 (Alchemist's Edition)

Part 2 in our series on building a simple OTP backed web app is out:

ElixirMix Podcast 063 - Designing Elixir Systems With OTP with Bruce Tate and James Gray

In this episode of ElixirMix, we talk with James Edward Gray II and Bruce Tate about their new book Designing Elixir Systems with OTP: Write Highly Scalable, Self-Healing Software with Layers, their experiences with Elixir, getting the life-cycle right, starting with the right data, and much more!

Podcast Episode

Genex - Genetic Algorithm Library

Hey all,

I wanted to get experience writing libraries in Elixir so I started a project called Genex. Genex makes it easy to write Genetic Algorithms in Elixir.

As of right now, the project supports several crossover, selection, and mutation methods, visualizations of the population and solution, and a basic Genealogy tree representing the history of the population. Additionally, Genex allows for full customization of all stages in the Genetic Algorithm. You can define your own methods for crossover, selection, mutation, population evaluation, population seeding, and generational advancements.

The project is very new; however, it’s still fun to mess around with. Hope you guys enjoy!

How we deal with behaviours and boilerplate

We at BetterDoc are big fans of mox.

In this post we are going to explore how we concretely use behaviours for mocking, the pattern we follow to access and call their implementations, and how we used metaprogramming to reduce boilerplate to an absolute minimum.

Find out more here …

Use Phoenix LiveView to Enhance Observability

Application observability is becoming more and more important nowadays. Phoenix LiveView is a perfect technical solution for this use case. In this post, we will see how important observability is and why Phoenix LiveView is a perfect fit.

Use Phoenix LiveView to Enhance Observability - Yiming Chen