Deploy a Phoenix app to Heroku (Elixir 1.7)

A step-by-step screencast and guide for deploying a Phoenix app with Heroku.

The Big Ideas

If you look closely, the computer science is based on few big core concepts. Over the years, these ideas were the foundations for various technologies. Erlang (Elixir) is based on the idea of isolation and messaging. What can we learned from that?

IntelliJ Elixir 9.0.0

  • Resolve calls through use AnAlias calls
  • Specifically makes use MyAppWeb, :controller in Phoenix apps now work.
  • Go To Related (Ctrl+Cmd+Up) can be used to Go To the decompiled Module or call definitions when on a source modular (defimpl, defmodule, or defprotocol) or callable (def, defp, defmacro, defmacrop).
  • Resolve unqualified bracket operation identifiers (var in var[key]) to variables or 0-arity calls.
  • Fixes renames of variables not renaming usage of variables for Access lookups (i.e. var[key]).
  • Go To Symbol will no longer show redundant entries
  • Call Definitions (name/arity) is no longer shown if the Call Definition Clause is also included. This isn’t a large loss because the /arity was not searchable and only part of the presentation.
  • If there is a decompiled and a source version of a symbol, only the source version will be shown.

    • The source Implementation will be shown and not the decompiled Module with the same fully-qualified name (<protocol>.<for>).
  • Items will be deduped if they point to the same element, such as function clauses with default arguments because when presented they look the same even if internally one is representing /1 and /2, for example.
  • Fix regression in completion for unqualified functions from imports.

Installation Instructions

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.

Learning IoT: First Steps with Elixir, Nerve UART and Phoenix

I made my first IoT Example using a RaspberryPi and Arduino, connected with Elixir using UART Nerves project and Phoenix Framework. Complete post here:

EExHTML - safely embed content into HTML

Extension to Embedded Elixir (EEx), that allows content to be safely embedded into HTML. Handles auto-escaping and safely injecting JavaScript variables.

Why Phoenix.LiveView is a big deal

Last week at ElixirConf, Chris McCord announced a new project called Phoenix.LiveView. I believe this library has the potential to reshape the way many developers build reactive user interfaces on the web. Here’s why.

Phoenix’s LiveView: Client-Side Elixir At Last?

A quick rundown of the new LiveView feature for Phoenix announced by Chris McCord at last week’s ElixirConf

How to create beautiful pipelines on Elixir with Opus

How to create pipeline modules where you could read them like a poem and know, without going deep in the implementation, how the working flow works.

The answer is Opus.

Yet another HTTP/1 and HTTP/2 client for Elixir

Combined battle tested poolboy and gun to create yet another HTTP client:

Supports HTTP/1 and HTTP/2 and isolated configurable connection pools. Heavily used in production for 6 month now!

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

Introducing Squabble, Simple Leadership Election

As part of my ElixirConf talk, I showed off Squabble my new Elixir package for selecting a leader in your cluster. Squabble uses the leadership election part of the Raft Protocol. This was pulled out of ExVenture, my clustering text based multi-player game server.

SpawnFest 2018 is here!

Hey #erlang / #elixirlang people! @spawnfest is back! 2018th edition will be held on November 24th & 25th. You can already register your team at And we’re looking for #sponsors, too:

Avoiding flaky tests with Phoenix

There is far and way a single type of assertion I’ve see that is responsible for more test flakiness than any other. It’s probably the culprit for more than half of all test failures that shouldn’t fail. But there’s an easy way to make your tests less flaky!

EventBus v1.5.0 is out

The event_bus library is a traceable, extendable and minimalist message bus implementation for Elixir with built-in event store and event watcher based on ETS.

Source code:

License: MIT

Hex source: {:event_bus, "~> 1.5"}

Recent changes:

  • Fixes all dialyzer warnings
  • Fixes Elixir v1.7 warnings for String to Atom conversions
  • Updates the development/test dependencies
  • Updates the id generator source in the test configuration
  • Removes deprecated EventBus.Util.String module

Learn more:

Using Facades to Simplify Elixir Modules

Let’s dive into how I’ve been using the “facade” pattern to simplify and shorten my Elixir modules.

A Quick Guide to the Complex: Ecto.Multi

Ecto.Multi, a data structure added in Ecto 2.0, is an extremely useful tool for creating and executing complex, atomic transactions. This very brief guide will cover a few of the most useful methods associated with Ecto.Multi and when to use them.

ElixirMix Podcast 017 - Logging in Elixir

In this episode of Elixir Mix, the panel talks to Daniel Spofford who is a Senior Software Engineer through Very where he uses Elixir constantly. Check out the episode to get more information about Elixir, Phoenix, Logging, and things to consider when deploying and supporting Elixir applications.

Podcast Episode

TIL :calendar rocks!

last_day_of_the_month/2 appeared in a shinning armour to help me out.

Deploying with Gigalixir

In this episode learn how to deploy an Elixir application with Gigalixir.

ExVenture Performance Tweaks

In the week or two leading up to ElixirConf I started trying to see how far I could push ExVenture with concurrent players.

I was able to do three simple changes to go from maxing out at 230 concurrent players to maxing out at 3500 concurrent players on the same machine, 15x more players.

Now available. A safe HTML view layer for Raxx apps

The latest release of Raxx introduces the concepts of views and layouts. More convenient to work with and HTML escaping is handled by default.