Intro First of all, my apologies for not having written a blog post since July of last year! Between maintaining all my open source libraries, publishing Build a Weather Station with Elixir and Nerves, starting Elixir Patterns with Hugo Barauna, running my consulting business and being a host on the BEAM Radio podcast…something had to give and unfortunately it was my Elixir blog 😔. But…
If you enjoy reading my blog posts, using my open source libraries, and my Elixir tips, be sure to checkout my book publications and show your support. It means a lot to me and I am sure you’ll learn something cool from my books :). Build a Weather Station with Elixir and Nerves In this book, Bruce Tate, Frank Hunleth and I discuss how to build and program a Nerves based weather station.
Intro If you follow my blog, you have probably noticed that my articles usually revolve around some deep technical problems and how to go about solving these problems using the amazing Elixir programming language. These posts usually discuss the technical merits surrounding Elixir and the Erlang virtual machine, but rarely touch on the “human” aspects of Elixir. The goal of…
Intro In this blog post, we’ll be talking about what exactly MJML is, why it is an awesome tool for creating slick looking emails, how to build MJML templates during the Elixir compilation phase, and how we go about sending these beautiful emails using Swoosh. In order to make this a bit more real world, we’ll also be leveraging Phx.Gen.Auth and will craft a great looking welcome email…
Intro In this blog post, we’ll be talking about the various ways that Plugs [1] can be dynamically configured, why you would need to configure your Plugs dynamically, and I also introduce two libraries that I wrote that attempt to solve a particular set of these problems. If you have been a reader of the blog for some time now, this post is a slight deviation from the usual in-depth project…
This post was sponsored by the kind folks over at Check them out at https://appsignal.com In today’s post, we’ll learn about the Elixir HTTP client libraries Mint and Finch. We’ll discuss how Finch is built on top of Mint and what the benefits are of this abstraction layer. We’ll also talk about some of the existing HTTP client libraries in the ecosystem and discuss some of…
Intro In OTP as the Core of Your Application Part 1 we covered what exactly the Actor Model is, how it is implemented in the Erlang Virtual machine (or BEAM for short), and some of the benefits of this kind of pattern. In the final part of this series, we’ll be implementing the Actor Model specific parts of our application, putting together a simple stress test tool, and comparing the…
Intro In this two part series, we’ll be taking a deep dive into what exactly the Actor Model is, how exactly the Actor Model is implemented in Elixir/Erlang and how we can leverage this pattern in a pragmatic way from within our applications. To really understand these concepts, we will be writing a Phoenix application that relies on GenServers as the primary datasource that powers our…
Intro In this blog post, we’ll be talking about what exactly the repository pattern is, how it applies to Ecto, and how you can go about testing your Ecto backed applications without using a database. We’ll play around with this concept by putting together a simple Elixir application that leverages Postgres during development. But, then we will write some tests that make use of a…
This post was sponsored by the kind folks over at Check them out at https://appsignal.com Using Mnesia in an Elixir Application In today’s post we’ll be learning about what exactly Mnesia is, when you should reach for a tool like Mnesia, and some of the pros and cons of using using it. After covering the fundementals of Mnesia, we’ll dive right into a sample application where we…
Intro In this blog post, we’ll be talking about what exactly Phoenix LiveDashboard [1] is, what you gain by using it, and my opinions on when/how you should use Phoenix LiveDashboard. Finally, we’ll set up a Phoenix application that makes use of Phoenix LiveDashboard and we’ll also put together a simple load testing script to exercise the application a bit. Without further ado,…
This post was sponsored by the kind folks over at Check them out at https://appsignal.com How to use gRPC in Elixir In today’s post, we’ll learn what gRPC is, when you should reach for such a tool, and some of the pros and cons of using it. After going over an introduction of gRPC, we’ll dive right into a sample application where we’ll build an Elixir backend API powered by gRPC.
Intro In this blog post, we’ll be talking about what exactly logging is, and how it differs from monitoring. We’ll also cover some best practices that should be considered when logging from within your application. In addition, we’ll cover the differences between structured and unstructured logs. And finally we’ll set up a simple Phoenix application backed by Postgres and…
This post was sponsored by the kind folks over at Check them out at https://appsignal.com In today’s post we’ll be going over what exactly continuous integration and continuous delivery are, the benefits that come along with employing CI/CD, and some best practices that you should follow. In addition, we’ll also explore a wide array of Elixir ecosystem tools that can help you to…
Intro In this blog post, we’ll be talking about what rate limiters are, when they are applicable, and how we can write 2 styles of rate limiters leveraging GenServer, Erlang’s queue data structure, and Task.Supervisor. Finally, we’ll write a sample application that leverages a rate limiter and we’ll make our application modular in the sense that we can swap our rate…
This post was sponsored by the kind folks over at Check them out at https://appsignal.com How to Use Broadway in Your Elixir Application In today’s post, we will be covering the Elixir library Broadway. Broadway is a library which is maintained by the kind folks over at Plataformatec and allows us to create highly concurrent data processing pipelines with relative ease. After an overview of…
Intro In Broadway, RabbitMQ, and the Rise of Elixir Part 1 we covered what exactly a message queue is and when it is appropriate to use one. We also put together the foundation for our application which will mine data from the HackerNews Firebase API. In the final part of this series, we will be setting up our Broadway pipelines, a GenServer that will generate IDs for us to process, and some…
Intro In this two part series we’ll be talking about what a message queue is and when you would use one in your application. From there we’ll dive into the Broadway library maintained by Plataformatec and see how it can be leveraged from within an application for data processing. Finally, we’ll create a sample project that makes use of RabbitMQ+Broadway to scrape comments from…
Intro In Prometheus, PostGIS and Phoenix Part 1 we covered what exactly monitoring is and what are its benefits. We also put together the foundation for our application that we will be monitoring with Prometheus and Grafana. In the final part of this series, we’ll be setting up our monitoring stack, instrumenting our application, and writing a simple stress tester to make our graphs dance.…
Intro In this two part series, we’ll talk about what exactly monitoring is and why you need it in your production application. We’ll also cover how monitoring differs from logging and some considerations that need to be made when selecting a monitoring solution. Finally we’ll go through setting up a monitoring stack alongside a sample Phoenix application. Without further ado,…
Intro In this post we’ll talk about what what exactly error monitoring is, why you need it in your production application, and what tools are available in the space. Finally, we’ll go over setting up a self hosted error monitoring solution for a sample Phoenix application. Without further ado, let’s dive right into things! What is error monitoring? Error monitoring is the…
Intro In this post we’ll talk about what a release is in the context of Elixir and why/when you should use it. We’ll also cover how this was performed historically and how this changes in Elixir 1.9. Finally we’ll go through creating an Elixir release inside of a Docker container using multi-stage builds. Without further ado, let’s dive right into things! What is a release?…
Hello and thanks for stopping by! My name is Alex Koutmos and I am the father of 2 beautiful girls and 1 shy dog. My wife and I enjoy taking our girls on hiking adventures and road trips. When I am not hanging out with my beautiful family, I enjoy fighting working with computers and cars. By day I am a software engineer, and by night I am a grease monkey.
Since the summer of 2020 I have been publishing Elixir tips three times a week on Twitter. These are small and focused code snippets that show you some cool (and possibly lesser known) things about Elixir and tools from around the ecosystem. I found that I often needed to lookup some of my old tips for my own purposes and had a hard time tracking them down in my timeline.
In addition to blogging, I also enjoy writing Elixir libraries in order to solve some of my day to day development problems. I publish those libraries to https://hex.pm/users/akoutmos and have the code freely available on my GitHub at https://github.com/akoutmos. Below are some of the projects that I currently maintain along with some details as to what they do. Feel free to leave feedback on…