Ghibli: Studio Ghibli API client

New Blog - Embedded Elixir

The Nerves team has launched to collect embedded Elixir/Erlang news. This week is a video round-up!

Logging slow Ecto queries: adventures in metaprogramming

Slow database queries are a regular thorn in my side.

Here’s a walkthru of how I log slow queries - including the backtrace to the caller - via metaprogramming.

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

ExPlay - Google Play API in Elixir

ExPlay is an unofficial Elixir API for Google Play, that let’s you authorize user accounts, get App information and download application APKs.

Check it out on Github.


A Docker container for the Phoenix framework

This image is based on the official Elixir image and includes the features of that image.

Image Contents

  • Elixir 1.4.2
  • Phoenix 1.2.1
  • Node JS 7.x
  • Yarn (NPM)

Understanding Tuples and Atoms in Elixir

Let’s go over what are Atoms and Tuples, how they’re used in Elixir and why they’re powerful.

Generating docs for your Elixir project -

It’s easy to create documentation with ExDoc. In our latest episode we generate docs for an existing Elixir project.

How we built passwordless authentication with Auth0 and Elixir/Phoenix

Canvas open sources their Phoenix API

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

Building a webserver in Elixir. - Peter Saxton

Talk given at the London Meetup group. First introducing the awesome, that is processes in Elixir. Second how to coordinate them and build web-server.

Elixir deployments: our data on what the community needs

I previously wrote up of a simple Elixir deployment method for AWS. At the same time as this, I asked the community at large to fill in a short survey around what they look for with deployments.

I’ve written up some conclusions from this, and linked the data for others to see, in this post:

MBU: Mix Build Utilities

I published my first package, a collection of utilities for writing Mix build tasks:


tl;dr Logging, dependencies, watch support and utility functions for Mix tasks.

More info about my motivations:

Subscribe to messages with pattern matching

I wrote a blog post about how to save a pattern to be used later in pattern matching.

My use case was publish/subscribe, where I needed to subscribe to terms with a pattern instead of a topic.

https:[email protected]/subscribe-to-messages-with-pattern-matching-8723f5121135

Third bors-ng monthly newsletter

Warning: Existing users need to migrate before April 7th!

ex_lcd updated to v0.4.0

I have updated ex_lcd to better handle external dependencies. No new functionality is included in this release.

Released v0.4 of phone

Just released v0.4 for phone, a parser to extract information from telephone numbers without consulting any external source. This release improves performance a lot, going from 1ms in worst cases to 10µs. This performance gain is due to some complexity in the lib, so expect a long compilation time. In this release was added too a valid?/1 function, to verify if its a valid telephone number without parsing. hexgithub

Benchmarking Elixir Benchmarking Tools

In my latest blog post I compare three well-known benchmarking libraries available for Elixir, focusing on their pros and cons with some sample codes to help in understanding.

ShorterMaps 2.0 released: ES6 map shorthand for Elixir

Tired of the duplication in writing code like %{id: id, first_name: first_name, last_name: last_name}? Dry it up with ~M{id, first_name, last_name}.

Here are the syntactic variants the macro exposes:

  • Atom keys: ~M{a, b} => %{a: a, b: b}
  • String keys: ~m{a, b} => %{"a" => a, "b" => b}
  • Structs: ~M{%Person id, name} => %Person{id: id, name: name}
  • Pinned variables: ~M{^a, b} => %{a: ^a, b: b}
  • Ignore matching: ~M{_a, b} => %{a: _a, b: b}
  • Map update: ~M{old|a, b, c} => %{old|a: a, b: b, c: c}
  • Mixed mode: ~M{a, b: b_alt} => %{a: a, b: b_alt}

~M and ~m (atom vs. string keys) can be used to replace maps anywhere in your code: creating maps from existing variables, creating new variables while destructuring maps, pattern matching in lambdas, function heads or case statements.

See it on Github. Get it with {:shorter_maps, "~> 2.0"},

Phoenix and Elm, a real use case (pt. 6)

Here is the last part of my series about Phoenix and Elm, where we cover communication through WebSockets.

Little things that saves time in Elixir Coding....

Some interesting things that saves time while coding in elixir…

https:[email protected]/little-things-that-saves-time-in-elixir-109d0662fc55

This list grows in number…


  1. Clear Explanation with two ways of doing things
  2. 7 Interesting things to be cared

Happy Coding