How to run Phoenix framework application inside a Docker container?

How to run Phoenix framework application inside a Docker container?

Nerves 0.7.1 Released

Nerves has really been moving forward quickly over the past few months. One exciting new feature that I’ve been working on is the Mix task, which allows you to more easily build custom Nerves systems regardless of what OS you’re using. Check out the updated documentation to learn more!

HTTP/2 client available from Ace > 0.11.1

The latest version of Ace includes a HTTP/2.0 client.

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.

Do you have any questions about Elixir? Let DailyDrip know!

From zero to Production Elixir, part 2

This is the second part of the story of how we got an Elixir application running in Production in a month. This time we’re more focused on the code aspect and how we applied the umbrella apps concept. The article ends with some thoughts on how Elixir welcomes newcomers like me.

National Health Service on Elixir, React and Kubernetes

The second case study how we built eHealth system for NHS of Ukraine on Elixir, React and Kubernetes.

Time zones in PostgreSQL, Elixir and Phoenix

I just blogged about the way I handle time zones (specifically timestamps) in Elixir/Phoenix/Ecto applications on our corporate blog

Continuous Deployment of a Phoenix app to Heroku via Semaphore

I just released an episode showing how we’re doing continuous deployment for the Firestorm Forum to Heroku via Semaphore.

String.Naming :: fuzzy grapheme search by name

Added StringNaming.graphemes/1 function that receives a regular expression and returns the list of matched characters:

iex> StringNaming.graphemes ~r/\Aspace/i
  space_medium_mathematical_space: " ",
  spaces_em_quad: " ",
  spaces_em_space: " ",
  spaces_en_quad: " ",
  spaces_en_space: " ",
  spaces_figure_space: " ",
  spaces_four_per_em_space: " ",
  spaces_hair_space: " ",
  spaces_punctuation_space: " ",
  spaces_six_per_em_space: " ",
  spaces_thin_space: " ",
  spaces_three_per_em_space: " "

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

Setting Up Continuous Integration for an Elixir Project Using Semaphore

Learn how to set up continuous integration for an Elixir Phoenix project using Semaphore.

Elixir with Love Conf Tickets Available

Tickets to the Elixir with Love conference go on sale today! Event: November 10, 2017 at the Providence Biltmore Hotel in Providence, RI.

How to use Phoenix with Webpack + React + Redux

Seventh monthly bors newsletter

It’s another monthly burst of news about bors-ng, the GitHub bot that prevents broken builds from landing in mainline.

In the last month, we landed 22 PRs in the bors-ng repository.

By the way, we’ve got a real domain name now! Goodbye to and, and hello to and

Bors-NG has also adopted the Contributor Covenant Code of Conduct. This has been a long time coming, and was blocked on getting a moderator mailing list set up to report unacceptable behavior. That mailing list is now set up, and running on the new domain name as

Notable Additions

  • veverkap set up the .github/bors.toml config path, in addition to the regular bors.toml path
  • jniles migrated the webhook handler to GitHub’s new Apps API
  • notriddle made bors ignore comment-edit webhooks for commands
  • notriddle added a History tab where reviewers can see crash information and batch history
  • khodzha extended the command syntax so that bors: r+ acts the same as bors r+, bringing bors-ng’s syntax closer to homu’s
  • notriddle created the reference manual of configuration and command options, which can be found here
  • notriddle fixed a bug that caused bors to crash whenever it tried to bisect a branch
  • khodzha implemented a feature that will delete branches after merging them into master
  • khodzha implemented a command that people can use to check if the bot is up; bors ping
  • notriddle changed the domain name of the public instance to
  • notriddle added the deployed commit to the dashboard footer
  • notriddle upgraded bors-ng to OTP 20 and Elixir 1.5
  • carols10cents fixed the “Add/Remove Repositories” button on third-party instances of bors, allowing admins to specify the URL of their app
  • carols10cents upgraded the Set Up Your Own Instance guide to changes that GitHub has made to the App Setup UI

New Contributors

Want to see your name in this newsletter? Look at bors starters, a curated list of issues that are good for new contributors!

Who’s using bors?

This month’s featured project is BHIMA version 2, the basic hospital information management application.

Technically speaking, it’s a web-based database-centric business app. Unlike other ERPs, BHIMA targets a low resource, multi-currency and multi-lingual environment. Hospital workers input medical, financial, and pharmaceutical data via online forms, and they can use it to look up things like vacancies, the financial status of any patient, and their medical history. Manager queries are also provided against the database, so that they can generate data about the hospital (traffic patterns, current stock, and spending habits, for example) and plan accordingly.

BHIMA is open source under the GPL, and it’s developed Interchurch Medical Assistance World Health, a nonprofit focusing on health system strengthening in underdeveloped countries (see IMA’s page on CharityNavigator and Forbes’s “200 largest charities” description). IMA’s programs encompass distributing medical and nutritional supplies, advocacy and social justice initiatives, sexual health education, and capacity building for health infrastructure (BHIMA being one of several software initiatives in this field).

Got any suggestions for next month? Post a comment on the August pull request.

ShorterMaps 2.2 released: ES6 map shorthand for Elixir

Tired of this? %{id: id, first_name: first_name, last_name: last_name, address_1: address_1, address_2: address_2, city: city, zip_code: zip_code}

ShorterMaps provides the map syntax you wish vanilla Elixir allowed:

~M{id, first_name, last_name, address_1, address_2, city, zip _code}

Version 2.2 is a tremendous upgrade in capability: ShorterMaps now can work with expressions alongside elided keys, e.g.:

~M(id, first_name, last_name, full_name: "#{first_name} #{last_name}")

Check it out on Github. Try it out with {:shorter_maps, "~> 2.0"},

Continuous Integration with Semaphore

DailyDrip just released a free episode covering setting up continuous integration for a Phoenix project using Semaphore CI. This is how we’re handling CI for the Firestorm Forum.

Elixir with CircleCI

How to use Elixir with CircleCI continuous integration service?

How learning Elixr made me better Ruby developer

I wrote a blog post describing how learning Elixir made me better Ruby developer.

Lessons learned from a big Elixir refactoring

I’ve just finished my first really substantial refactoring of someone else’s code in Elixir. I wanted to make some changes to Benchee so that it would be easeir to add another feature later on. We needed a new data model, and there were some concepts that I felt needed a little shaking out and naming. Today I’m going to cover some of the reasons for this refactoring, as well as some of what I learned both specifically and in general about refactoring in Elixir.

Choosing Elixir for the Code, not the Performance

I wrote up some thoughts on how elixir helps you improve your code and why we should choose it for the code, and not just the performance. Because in the end, code clarity, understandability and extensibility is what mostly matters more than raw performance.

ElixirStatus is 2 years old!

This was my first “complete” Phoenix project and I am amazed that it’s already been two years!