[24h free video] - Customizing Earmark

Working on the Firestorm Forum: Extending the Earmark markdown renderer to add auto-linking URLs and emoji replacement.


[24h free video] - Feature Tests with Wallaby, Part 2

Testing user interaction with wallaby - fill out forms, click links.


Learn String Interpolation in 30 seconds

Let’s learn how to interpolate strings in 30 seconds


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

Neuron: A GraphQL client for Elixir

Hi there!

I just published v0.1.0 of neuron, a tiny GraphQL client for Elixir.

Contributions are always welcome, I’ll keep adding features in the future :)


New book - Phoenix Inside Out

I am happy to announce that I am completing final rounds of my Phoenix book and am opening up pre-order for my book with 15% off.

You can read more about the book at https://shankardevy.com/phoenix-book/

Topics covered in the book are:

  • Learn just enough Elixir to dive into Phoenix
  • Create a mini-Phoenix framework using Elixir and Cowboy
  • Plug magic in Phoenix Endpoint, Router and Controller
  • Develop an ecommerce site in Phoenix using Test Driven Development
  • Practical Ecto Cookbook
  • Blueprints to help you better design your project
  • Access to lots of handy reference cheatsheets!
  • Full access to all code repos used in this book.

Phoenix Inside Out is approx 350 pages and is organised in three parts as follows:

  • Part I. (Introduce) Readers might come to Phoenix without knowing Elixir. So teach them just enough basic to understand Phoenix code. Knowing the language fully well is indeed necessary for mastery but it’s very easy to get lost in learning Elixir.

  • Part II. (Demystify) The book explains the internals of Phoenix by showing user how to create something like Phoenix. I believe the best way to learn how a framework works is to create it yourselves. And the best way to use it in your project is to learn how it works.

  • Part III. (Empower) The book demonstrates building an commerce site using TDD. Hound is used for acceptance testing. This part also introduces Ecto and Contexts as in Phoenix 1.3. I also explain various deployment options that you can put to use in your project.

Practical Ecto cookbook is approx 120 pages with about 60+ recipes under the following headings

  • Schema
  • Embedded Schema
  • Migration
  • Changeset
  • Association
  • Query

Elixir and Unity3D


How to use Elixir's Enum.filter_map


I wrote a short post to (hopefully) make it a little easier to understand how to use Elixir’s Enum.filter_map/3 to filter and map a collection.

Refactoring for Tests in Elixir


Need to test that tricky function? Here’s a story of a refactoring that allowed us to add some good new tests for a new feature in Benchee.

Writing a Custom Action in #ExAdmin


How to customize actions of ExAdmin resources.

Shameless plug: Check out @elixirstatus' other community project:

Credo, a new static code analysis tool that acts as a code linter, but also focusses on teaching coding practices and code consistency.

Talk: Monoliths to Services with Elixir and Phoenix


Transitioning monolithic apps into a micro-service architecture isn’t straightforward – in fact, it is often quite difficult. In this intermediate talk, we’ll learn how Elixir umbrella apps and Phoenix utilize the Erlang VM (BEAM) to make building services less painful and more productive.

Pattern Matching And State Machines

How to build a template engine (using simple string interpolation), leveraging pattern matching and state machines while measuring overall performance.


Blog: Using ASDF-vm

In our latest embedded-elixir blog post, Connor Rigby describes how to manage multiple versions of Elixir and Erlang/OTP using ASDF-vm. http://embedded-elixir.com/post/2017-05-23-using-asdf-vm/

Modules & Functions | Zero to Hero #4

Let’s learn how to build a module in Elixir

Modules & Functions | Zero to Hero #4 https://youtu.be/Ipddkt5DR2w

Sending Email with Bamboo - Part 2

Part 2 of our series on sending email with Bamboo. Watch how easy Bamboo makes it to use layouts and templates to compose emails: https://elixircasts.io/sending-email-with-bamboo-part-2

Elixir for Java Developers, Episode I

I’m starting a series of posts to people from Java learn Elixir faster. I hope you guys like it.

https:[email protected]/elixir-for-java-developers-episode-i-66b65c862652

Sobelow, the Phoenix vulnerability scanner - v0.2.5

Changes include:

  • Flag for an additional SQL injection vector
  • Small addition to XSS checks
  • Minor bug fixes and refactoring

You can now install with mix archive.install hex sobelow, and if you want (or need) to install an older version, you can do so with mix archive.install hex sobelow 0.2.4.


retort 2.1.0

Install: https://hex.pm/packages/retort/2.1.0
Docs: https://hexdocs.pm/retort/2.1.0
Changes: https://github.com/C-S-D/retort/compare/v2.0.0...v2.1.0



  • Extract Retort.Resources.timeout/2 to Retort.Resources.Timeout.get_or_default(module, function). Retort.Resources.Timeout also has functions for deleting and putting module-wide and function name specific timeouts, to make testing easier and less boiler plate needed in override examples.
  • Retort.Resources.Timeout.delete(module) will delete timeouts set by Retort.Resources.Timeout.put(module, timeout) OR Retort.Resources.Timeout.put(module, function_name, timeout).
  • Retort.Resources.Timeout.delete(module, timeout) will delete timeout set by Retort.Resources.Timeout.put(module, function_name, timeout) OR remove the timeout for function_name and leave it for the other function names when Retort.Resources.Timeout.put(module, timeout) is called.
  • Retort.Resources.Timeout.put(module, timeout) will set the timeout for all Retort.Client.Generic calls by module that called use Retort.Resources.
  • Retort.Resources.Timeout.put(module, function_name, timeout) will set the timeout for all Retort.Client.Generic function_name calls by module that called use Retort.Resources.
  • Retort.Resources.Timeout.put(module, function_name, timeout, func) will only temporarily Retort.Resources.Timeout.put/3, but for the duration passed function only. This can be used to test timeout handling.
  • Update to credo 0.7.4.

Bug Fixes

  • Fix formatting of timeout override example code.


  • Retort.Resources.timeout(module, function_name) is deprecated; use Retort.Resources.Timeout.get_or_default(module, function_name) instead.

Elixir - GenStateMachine


When to use processes in Elixir - Part 2: Running concurrent tasks

In the second instalment of “When to use processes in Elixir” I wrote about using processes to run concurrent tasks.


In case you missed it, you could already send emails with attachments using Swoosh 0.8, all adapters supported

Checkout docs at https://github.com/swoosh/swoosh#attachments

The adapters list:

  • SMTP Swoosh.Adapters.SMTP
  • Sendgrid Swoosh.Adapters.Sendgrid
  • Mandrill Swoosh.Adapters.Mandrill
  • Mailgun Swoosh.Adapters.Mailgun
  • Postmark Swoosh.Adapters.Postmark
  • SparkPost Swoosh.Adapters.SparkPost