Jack Marchant

Jack Marchant

Written by Jack Marchant, a Software Engineer who writes about writing code. You should follow him on Twitter or check out his code on GitHub

A practical guide to Test Driven Development

September 12, 2019

It’s been a while since I last wrote about why testing is important, but in this post I thought I would expand on that and talk about why…

The Facade Pattern

July 05, 2019

Design Patterns allow you to create abstractions that decouple sections of a codebase with the purpose of making a change to the code later…

The problem with Elixir Umbrella Apps

May 03, 2019

Umbrella apps are big projects that contain multiple mix projects. Using umbrella apps feels more like getting poked in the eye from an…

Building Software with Broken Windows

April 14, 2019

Ever get the feeling that adding this “one little hack”, a couple of lines of code, won’t have much of an impact on the rest of the codebase…

Lonestar ElixirConf 2019 Highlights

March 04, 2019

Last week was Lonestar ElixirConf 2019 held in Austin, Texas. The conference ran over 2 days and was the first Elixir conference I had been…

Using a GenServer to handle asynchronous and concurrent tasks

February 01, 2019

In most cases I have found inter-process communication to be an unnecessary overhead for the work I have been doing. Although Elixir is…

Best practices for integrating with third-party libraries in Elixir

December 19, 2018

When we think about what an application does, it’s typical to think of how it behaves in context of its dependencies. For example, we could…

You might not need a GenServer

November 20, 2018

When you’re browsing your way through Elixir documentation or reading blog posts (like this one), there’s no doubt you’ll come across a…

Offset and Cursor Pagination explained

October 30, 2018

Typically in an application with a database, you might have more records than you can fit on a page or in a single result set from a query…

Using Protocols to decouple implementation details

September 26, 2018

Protocols are a way to implement polymorphism in Elixir. We can use it to apply a function to multiple object types or structured data types…

Add Docker to Elixir/Phoenix projects in one command

August 23, 2018

Recently, I’ve been writing a tonne of Elixir code, some Phoenix websites and a few other small Elixir applications. One thing that was…

Working with Tasks

July 26, 2018

While writing Understanding Concurrency in Elixir I started to grasp processes more than I have before. Working with them more closely has…

Understanding concurrency in Elixir

July 14, 2018

Concurrency in Elixir is a big selling point for the language, but what does it really mean for the code that we write in Elixir? It all…

Composing Ecto Queries

July 06, 2018

Ecto is an Elixir library, which allows you to define schemas that map to database tables. It’s a super light weight ORM, (Object-Relational…

Streaming large datasets in Elixir

June 27, 2018

What is a Stream?We often think about Streaming as being the way we watch multimedia content such as video/audio. We press play and the…

A Queue is just a Q with 4 silent letters

June 06, 2018

A Queue is a collection data structure, which uses the FIFO (First In, First Out) method. This means that when you add items to a queue…

Composing Elixir Plugs in a Phoenix application

March 23, 2018

Elixir is a functional language, so it’s no surprise that one of the main building blocks of the request-response cycle is the humble Plug…

A Comparison of Elixir Supervision Trees and React Component Trees

February 06, 2018

A Supervision Tree in Elixir has quite a number of parallels to how developers using React think about a component tree. In this article I…

Surviving technical debt in the real world

December 21, 2017

Technical debt is a potentially crippling disease that can take over your codebase without much warning. One day, you’re building features…

Elixir Pattern Matching in a nutshell

August 15, 2017

Before being introduced to Elixir, a functional programming language built on top of Erlang, I had no idea what pattern matching was…

First Impressions of Elixir

January 06, 2017

Elixir is a functional programming language based on Erlang. I’m told it’s very similar to Ruby, with a few tweaks and improvements to the…

No excuses, write unit tests

November 29, 2016

Unit testing can sometimes be a tricky subject no matter what language you’re writing in. There’s a few reasons for this:There’s fear unit…