Writing - and testing! - custom Credo checks

I’ve previously written about why one might want to write custom Credo checks, but I didn’t talk about the way I actually like to go about doing it in that post, so today I’m going to break down my workflow for writing custom Credo checks. A really important part of this is the testing, and luckily there is an awesome way you can easily test these checks which really helps with the development as well.


A layered object store design in Elixir

This is a blog post series describing design of an object store from scratch in Elixir. We follow a layered design approach which helps breaks down the problem in small, simple to understand modules.

Here is Part-I of the series, introducing the overall design:


Ecto Tips: DB UUIDs, Composable Changesets, and boilerplates

Here are some helpful techniques I’ve learned with Ecto over the last several months:

  • You can interpolate into @doc. This is really helpful for documenting defaulted, required, and optional fields on changeset docs.
  • How to get DB-generated UUIDs with Ecto.
  • How to compose changesets together.


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.

Hungarian/Munkres in Elixir

My Hungarian/Munkres algorithm implementation in Elixir


next Paris Erlang & Elixir meetup will happen on next tuesday. See you there!

for french speaking people in Paris, next Tuesday we have a new meetup: https://www.meetup.com/Erlang-Paris/events/267270583/ see you there!

Elixir Wizards S3E8: Bruce and Maggie Tate from Groxio on Training

Episode 8 of Elixir Wizards out today! Check it out:


Our Elixir vs. Ruby Guide

At my company we’ve been using Elixir for the past 24 months, so we decided to put together a guide that compares Elixir with Ruby.

We detail why we prefer Elixir to Ruby and we included several case studies and resources we used along the way.

If you want to have a look, here’s the link: https://foxbox.com/blog/elixir-vs-ruby/

Elixir Web Console is launched

We are happy to announce the release of the Elixir Web Console! 🎉

This website is a place where people can try the Elixir language without the need to leave the browser or installing it on their computers. We hope this is a contribution to the effort to promote the language, providing a convenient way to assess the capabilities of this technology.

This is just the beginning of the journey. We are aware that only a portion of the language is available in this online console at the moment, but we plan to extend its capabilities.

In addition, we hope to keep adding more features to have a UI experience similar to iex. In particular, we are lacking a way to write multiline Elixir code, but we expect to address it shortly.

You can read more about this project and all the security concerns about it (I bet you are thinking about that, after all, running foreign Elixir code in a server is kind of crazy!) in the Readme of the project.

Here is the site: https://elixirconsole.wyeworks.com/

Learn Elixir - From Zero To A Testing Hero

Becoming a Testing Hero will not need a spider bite or a pocket full of kryptonite. How to become one? Discover and master the set of Testing Best Practices (TDD). It’s like approaching the next level of every game - from a random user who just plays a game to a Pro who creates the reality.

Read the article here: https://selleo.com/blog/learn-elixir-from-zero-to-a-testing-hero

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

The .iex.exs file

I wrote a blog post about the .iex.exs file and shared what’s in mine!


When Elixir's Performance Becomes Rust-y

In this post Nick explores how we can delegate to Rust when we need more compute power in our Elixir app.


Phoenix Refactoring: One LiveView to many small LiveComponents

Recently I wanted to clean up a large LiveView that had too many responsibilities. I used LiveComponents to break apart to the view into smaller bits that are mostly self-contained. The pattern ended up feeling pretty similar to work I’ve previously done in React and Redux using a one way data flow.

Apologies, after making this video I learned that one way data flow was inspired by Elm.


Elixir Wizards S3E7: Dan Ivovich from SmartLogic on Hiring and Training

Latest episode of Elixir Wizards was released yesterday! Check it out:


The reason for Vapor

Loading dynamic configuration is still challenging. In this post, I try to make a case for why we shouldn’t be using Application or config/*.exs for managing configuration and demonstrate alternative patterns using Vapor.


Ecto & Multi-tenancy - Prefixes

The third and final part of the saga. This is what I ended up doing for my multi-tenant application using Ecto prefixes and PostgreSQL schema as a simpler alternative to dynamic repos.


Handling Environment Variables in Phoenix

Environment variables are used to connect different services and configure an application for different environments without hard coding the sensitive values.

This post demonstrates some useful patterns for Phoenix configuration and doesn’t require any new dependencies:


How to Write Elixiry Ruby - Result Object

In Elixir/Erlang, error cases can be easily modeled as tagged tuples: {:error, reason}. But in a more Object-Oriented language like Ruby, it’s hard to model error as a lightweight data structure like Elixir tuples. After some trial-and-error, I’ve found a great way to model errors in OO languages: Result Object.

How to Write Elixiry Ruby - Result Object - Yiming Chen

Easy and Robust Rate Limiting In Elixir

Ever wonder how you could write a rate limiter in Elixir? Check out my latest post https://akoutmos.com/post/rate-limiting-with-genservers/ to learn about GenServers, Task.Supervisor and Erlang’s built in queue data structure.

ElixirMix Podcast 085: Riak Core and Partisan with Mariano Guerra

In this episode of ElixirMix, we talk with Mariano Guerra about Riak Core and Partisan. He wrote a great blog series about the pairing. We cover what the libraries are, the problems they solve, how they are used in Elixir and much more!

Podcast Episode

Elixir v1.10.0-rc.0 is out