How to create a web server using Cowboy without Plug or Phoenix - Part 01

A Hello world example of Cowboy!

Inline LiveView syntax highlighting for Emacs

Enable syntax highlighting for inline Phoenix LiveView templates by using the polymode library.

Get the code. It should work with all popular frameworks or vanilla configurations.

Learn Elixir and Phoenix by building a read-it-later service

Started a learn-in-public project to finally learn and love Elixir and Phoenix. This blog post is the first in a series where I document my progress and failures.

Learn Elixir and Phoenix by building a read-it-later service: Project Setup

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.

ElixirMix Podcast 095: Adopting Elixir at FindHotel with Fernando Hamasaki de Amorim

In this episode of ElixirMix, Mark talks with Fernando Hamasaki de Amorim about his experience adopting Elixir at He shares his strategy of introducing Elixir through hack-a-thons, what kinds of projects work well to start with and tips around learning and building a team. We discuss umbrella projects, pattern matching for data transformation, learning about managing configuration in Elixir applications and much more!

Podcast Episode

Phoenix Todo List Tutorial for Complete Beginners [v1.5.3]

Complete beginners tutorial building a TodoMVC App from scratch in Phoenix 1.5.3 (latest and greatest):

Feedback very much welcome!

SEO Friendly URLs with Phoenix

Make your URLs SEO friendly in the latest ElixirCasts episode.

The Repository Pattern, Ecto, and Database-less Testing

Ever wanted to learn more about Ecto, it’s internals and how to leverage the repository pattern more effectively in your application? Check out my latest post

TypedStruct 0.2.0: plugin interface

I have just released TypedStruct 0.2.0, featuring a plugin interface.

TypedStruct lets you define Elixir structs with a type without writing boilerplate code. With this new version, you can now extend TypedStruct for your own needs.

Elixir and ETS Alchemy

An article diving deep into ETS, table management, best practices and handling/debugging ETS tables in production -

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

Telemetría → Unveiling All Whys And Hows

Just blogged on why Telemetría, what is it, what is it not, how to use etc.

Telemetria got zero-config and annotations

Telemetria handy wrapper around :telemetry became even more friendly. Here is the changelog.

  • `0.5.0` —
  • [ENH] annotation @telemetria true as a synonym to deft/2
  • [FIX] polling is off by default
  • [ENH] default polling of system / vm states for free
  • [ENH] starting in phases ensuring proper instrumenter setup
  • [ENH] no need for any config in any environment
  • [BUG] proper handling of guards in compiler, correct event names

Elixir Processes: Observability

Observability in most programming languages is really just guesswork, but Elixir gives you the tools to know exactly what’s happening in your processes and applications. This article shows you how.

Notes on "Code BEAM V 2020"

Here are my notes taken live during Code BEAM V #CodeBEAMV

2 days, 12 talks condensed in a 2k+ words blog post

See the Table of Talks for jumping to the talk of interest

Elixir Wizards S4E3 Steve Bussey on Real-Time Applications + Pattern Matching with Todd

Check your podcast feed for the latest episode of the Elixir Wizards podcast or listen to the episode here:

And listen to Pattern Matching with Todd here:

ElixirMix Podcast 094: Custom Credo Checks with Devon Estes

In this episode of ElixirMix, we catch up with Devon Estes to learn what he’s doing with Credo. Devon talks about creating custom Credo checks for the benefit of our teams and projects. We cover his project Nicene that defines additional Credo checks, learn tips like using git to only run checks on modified files and much more!

Podcast Episode

Linear regression with Elixir and Phoenix LiveView

A little two part series on Linear Regression using Elixir with Phoenix LiveView:

Preview "Phoenix Beginner's Guide"

A 4 chapter preview of my new “Phoenix Beginner’s Guide”:

It’s targeted to programmers who are interested in @elixirphoenix but might have never worked with @elixirlang before.

  • Elixir Introduction
  • Phoenix Basics
  • LiveView Basics
  • Router

A Comprehensive Guide to the Elixir pipe operator

Everything you should know about piping in Elixir:

Correios CEP 0.5.0 released! Support for proxy configuration.

Correios CEP allows to find Brazilian addresses by zip code, directly from Correios API. No HTML parsers.

Now you can find address using a proxy.

# Not using a proxy
iex> Correios.CEP.find_address("54250610")
   city: "Jaboatão dos Guararapes",
   complement: "",
   neighborhood: "Cavaleiro",
   state: "PE",
   street: "Rua Fernando Amorim",
   zipcode: "54250610"

# Using a proxy
iex> Correios.CEP.find_address("54250610", proxy: {"myproxyhost", 8888})
   city: "Jaboatão dos Guararapes",
   complement: "",
   neighborhood: "Cavaleiro",
   state: "PE",
   street: "Rua Fernando Amorim",
   zipcode: "54250610"

# Using a proxy with authentication
iex> Correios.CEP.find_address("54250610", proxy: {"myproxyhost", 8888}, proxy_auth: {"myuser", "mypass"})
   city: "Jaboatão dos Guararapes",
   complement: "",
   neighborhood: "Cavaleiro",
   state: "PE",
   street: "Rua Fernando Amorim",
   zipcode: "54250610"

Changelog for version 0.5.0:


  • Support for proxy configuration. Issue #7


  • Update dependencies.

Check it out at:

IoT Traffic Light for CI Status Updates

This has been a pretty long-running hobby project of mine: A real world traffic light that shows the status of our CI server. I think I maintained and overengineered this for almost a decade and implemented it with various hardware and programming languages.

The newest iteration is done in Elixir, with the help of Nerves and Phoenix.

Client (on a Raspberry PI):