<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>My.Thoughts v1</title><link>https://akoutmos.com/</link><description>Recent content on My.Thoughts v1</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 11 Apr 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://akoutmos.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing Shell Scripts Using Elixir</title><link>https://akoutmos.com/post/elixir-shell-scripts/</link><pubDate>Mon, 11 Apr 2022 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/elixir-shell-scripts/</guid><description>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&amp;hellip;something had to give and unfortunately it was my Elixir blog 😔. But alas, I have promised myself that I can (and will) write a new blog post every quarter as opposed to every month like I used to.</description></item><item><title>Books</title><link>https://akoutmos.com/top/books/</link><pubDate>Thu, 02 Dec 2021 16:56:55 -0400</pubDate><guid>https://akoutmos.com/top/books/</guid><description>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&amp;rsquo;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.</description></item><item><title>The Human Side of Elixir</title><link>https://akoutmos.com/post/betting-on-elixir/</link><pubDate>Mon, 12 Jul 2021 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/betting-on-elixir/</guid><description>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 &amp;ldquo;human&amp;rdquo; aspects of Elixir.
The goal of today&amp;rsquo;s post will be to address some of the non-technical aspects of the Elixir programming language and talk about the profound impact they can have on your engineers and your business.</description></item><item><title>Crafting Beautiful Emails in Elixir Using MJML</title><link>https://akoutmos.com/post/mjml-template-compliation/</link><pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/mjml-template-compliation/</guid><description>Intro In this blog post, we&amp;rsquo;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&amp;rsquo;ll also be leveraging Phx.Gen.Auth and will craft a great looking welcome email to ensure our new users feel extra welcome to our new SaaS platform ;).</description></item><item><title>Dynamically Configure Your Plugs at Run-time</title><link>https://akoutmos.com/post/plug-runtime-config/</link><pubDate>Tue, 18 Aug 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/plug-runtime-config/</guid><description>Intro In this blog post, we&amp;rsquo;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 based tutorial that I usually present.</description></item><item><title>The State of Elixir HTTP Clients</title><link>https://akoutmos.com/post/elixir-http-clients/</link><pubDate>Mon, 10 Aug 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/elixir-http-clients/</guid><description>This post was sponsored by the kind folks over at Check them out at https://appsignal.com In today&amp;rsquo;s post, we&amp;rsquo;ll learn about the Elixir HTTP client libraries Mint and Finch. We&amp;rsquo;ll discuss how Finch is built on top of Mint and what the benefits are of this abstraction layer. We&amp;rsquo;ll also talk about some of the existing HTTP client libraries in the ecosystem and discuss some of the things that make Mint and Finch different.</description></item><item><title>OTP as the Core of Your Application Part 2</title><link>https://akoutmos.com/post/actor-model-genserver-app-two/</link><pubDate>Wed, 29 Jul 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/actor-model-genserver-app-two/</guid><description>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&amp;rsquo;ll be implementing the Actor Model specific parts of our application, putting together a simple stress test tool, and comparing the performance characteristics of a traditional database centric application where every request is dependant on a round trip to the database.</description></item><item><title>OTP as the Core of Your Application Part 1</title><link>https://akoutmos.com/post/actor-model-genserver-app/</link><pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/actor-model-genserver-app/</guid><description>Intro In this two part series, we&amp;rsquo;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 business logic. In regards to our database, we will only be leveraging it as a means of persistent storage only when needed.</description></item><item><title>The Repository Pattern, Ecto, and Database-less Testing</title><link>https://akoutmos.com/post/ecto-repo-testing/</link><pubDate>Tue, 02 Jun 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/ecto-repo-testing/</guid><description>Intro In this blog post, we&amp;rsquo;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&amp;rsquo;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 database-less mock Repo. Without further ado, let&amp;rsquo;s dive right into things!</description></item><item><title>Using Mnesia in your Elixir application</title><link>https://akoutmos.com/post/using-mnesia/</link><pubDate>Mon, 25 May 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/using-mnesia/</guid><description>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&amp;rsquo;s post we&amp;rsquo;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&amp;rsquo;ll dive right into a sample application where we will build an Elixir application that makes use of Mnesia as its database.</description></item><item><title>Getting started with Phoenix LiveDashboard</title><link>https://akoutmos.com/post/phoenix_live_dashboard/</link><pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/phoenix_live_dashboard/</guid><description>Intro In this blog post, we&amp;rsquo;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&amp;rsquo;ll set up a Phoenix application that makes use of Phoenix LiveDashboard and we&amp;rsquo;ll also put together a simple load testing script to exercise the application a bit. Without further ado, let&amp;rsquo;s dive right into things!
What is Phoenix LiveDashboard?</description></item><item><title>How to Use gRPC in Elixir</title><link>https://akoutmos.com/post/elixir-grpc/</link><pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/elixir-grpc/</guid><description>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.</description></item><item><title>Structured logging in Elixir using Loki</title><link>https://akoutmos.com/post/elixir-logging-loki/</link><pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/elixir-logging-loki/</guid><description>Intro In this blog post, we&amp;rsquo;ll be talking about what exactly logging is, and how it differs from monitoring. We&amp;rsquo;ll also cover some best practices that should be considered when logging from within your application. In addition, we&amp;rsquo;ll cover the differences between structured and unstructured logs. And finally we&amp;rsquo;ll set up a simple Phoenix application backed by Postgres and run Loki along side it to collect all of our application logs.</description></item><item><title>Getting your Elixir application ready for CI/CD</title><link>https://akoutmos.com/post/elixir-cicd/</link><pubDate>Mon, 10 Feb 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/elixir-cicd/</guid><description>This post was sponsored by the kind folks over at Check them out at https://appsignal.com In today&amp;rsquo;s post we&amp;rsquo;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&amp;rsquo;ll also explore a wide array of Elixir ecosystem tools that can help you to create top notch CI pipelines. In order to experiment with a handful of the tools that we will be discussing, we will use a Git hooks Elixir library to execute our CI/CD validation steps, but on our local machine.</description></item><item><title>Easy and Robust Rate Limiting in Elixir</title><link>https://akoutmos.com/post/rate-limiting-with-genservers/</link><pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/rate-limiting-with-genservers/</guid><description>Intro In this blog post, we&amp;rsquo;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&amp;rsquo;s queue data structure, and Task.Supervisor. Finally, we&amp;rsquo;ll write a sample application that leverages a rate limiter and we&amp;rsquo;ll make our application modular in the sense that we can swap our rate limiters via configuration to achieve the operational characteristics that we desire.</description></item><item><title>How to Use Broadway in Your Elixir Application</title><link>https://akoutmos.com/post/using-broadway/</link><pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/using-broadway/</guid><description>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&amp;rsquo;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 how Broadway works and when to use it, we&amp;rsquo;ll dive into a sample project where we leverage Broadway to fetch temperature data from https://openweathermap.</description></item><item><title>Broadway, RabbitMQ, and the Rise of Elixir Part 2</title><link>https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir-two/</link><pubDate>Thu, 05 Dec 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir-two/</guid><description>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 database related modules that will allow us to persist our results for later analysis.</description></item><item><title>Broadway, RabbitMQ, and the Rise of Elixir Part 1</title><link>https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir/</link><pubDate>Sun, 10 Nov 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir/</guid><description>Intro In this two part series we&amp;rsquo;ll be talking about what a message queue is and when you would use one in your application. From there we&amp;rsquo;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&amp;rsquo;ll create a sample project that makes use of RabbitMQ+Broadway to scrape comments from HackerNews so we can measure the popularity of Elixir over time.</description></item><item><title>Prometheus, PostGIS and Phoenix Part 2</title><link>https://akoutmos.com/post/prometheus-postgis-and-phoenix-two/</link><pubDate>Mon, 16 Sep 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/prometheus-postgis-and-phoenix-two/</guid><description>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&amp;rsquo;ll be setting up our monitoring stack, instrumenting our application, and writing a simple stress tester to make our graphs dance. Part 2 assumes that you have already gone through Part 1 and have the code and database at a point where we can jump right in.</description></item><item><title>Prometheus, PostGIS and Phoenix Part 1</title><link>https://akoutmos.com/post/prometheus-postgis-and-phoenix/</link><pubDate>Tue, 20 Aug 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/prometheus-postgis-and-phoenix/</guid><description>Intro In this two part series, we&amp;rsquo;ll talk about what exactly monitoring is and why you need it in your production application. We&amp;rsquo;ll also cover how monitoring differs from logging and some considerations that need to be made when selecting a monitoring solution. Finally we&amp;rsquo;ll go through setting up a monitoring stack alongside a sample Phoenix application. Without further ado, let&amp;rsquo;s dive right into things!
What is monitoring? Monitoring is the process of collecting metrics from your applications, infrastructure, supporting services, and databases and then storing this data over time.</description></item><item><title>Monitor Your Phoenix Application with Sentry</title><link>https://akoutmos.com/post/error-monitoring-phoenix-with-sentry/</link><pubDate>Fri, 19 Jul 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/error-monitoring-phoenix-with-sentry/</guid><description>Intro In this post we&amp;rsquo;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&amp;rsquo;ll go over setting up a self hosted error monitoring solution for a sample Phoenix application. Without further ado, let&amp;rsquo;s dive right into things!
What is error monitoring? Error monitoring is the practice of monitoring your application for errors or unhandled exceptions.</description></item><item><title>Multi-stage Docker Builds and Elixir 1.9 Releases</title><link>https://akoutmos.com/post/multipart-docker-and-elixir-1.9-releases/</link><pubDate>Thu, 20 Jun 2019 00:00:00 +0000</pubDate><guid>https://akoutmos.com/post/multipart-docker-and-elixir-1.9-releases/</guid><description>Intro In this post we&amp;rsquo;ll talk about what a release is in the context of Elixir and why/when you should use it. We&amp;rsquo;ll also cover how this was performed historically and how this changes in Elixir 1.9. Finally we&amp;rsquo;ll go through creating an Elixir release inside of a Docker container using multi-stage builds. Without further ado, let&amp;rsquo;s dive right into things!
What is a release? An Elixir release (and Erlang of course) is the process of taking your application and bundling it so that it is ready for distribution (generally called an OTP release).</description></item><item><title>About</title><link>https://akoutmos.com/top/about/</link><pubDate>Thu, 06 Jun 2019 16:56:55 -0400</pubDate><guid>https://akoutmos.com/top/about/</guid><description>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.</description></item><item><title>Elixir Tips</title><link>https://akoutmos.com/top/elixir_tips/</link><pubDate>Thu, 06 Jun 2019 16:56:55 -0400</pubDate><guid>https://akoutmos.com/top/elixir_tips/</guid><description>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.</description></item><item><title>Open Source</title><link>https://akoutmos.com/top/open_source/</link><pubDate>Thu, 06 Jun 2019 16:56:55 -0400</pubDate><guid>https://akoutmos.com/top/open_source/</guid><description>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 GitHub if you encounter any issues or if there are any features that you would like to see!</description></item></channel></rss>