Recent Articles

Reliably Finding Files in $PATH
Reliably Finding Files in $PATH
Aug 27, 2021 · 4 min read

Most built-in commands commonly used to find files in $PATH don't always work quite as expected, or are shell-specific.


How to Persist Docker Build Arguments as Environment Variables
How to Persist Docker Build Arguments as Environment Variables
Aug 22, 2021 · 3 min read

Values from the Docker ARG instruction aren't persisted in built images, so here's a quick tip on how to persist them!


Docker Shell vs. Exec Form
Docker Shell vs. Exec Form
Mar 22, 2021 · 4 min read

The RUN, ENTRYPOINT, and CMD, instructions all have two different forms they can be written in, and those forms change how each of those instructions behaves.


You Don't Need an Init System for Node.js in Docker
You Don't Need an Init System for Node.js in Docker
Mar 20, 2021 · 5 min read

But you do need to think about how your application handles exit signals.


Publishing Docker Images with GitHub Actions
Publishing Docker Images with GitHub Actions
Feb 20, 2021 · 7 min read

Publishing Docker images is a common CI/CD task, and the tight integration GitHub Actions has with GitHub repositories makes it a great tool for the job.


Publishing Docker Images with CircleCI
Publishing Docker Images with CircleCI
Feb 15, 2021 · 8 min read

Publishing Docker images is a common CI/CD task, and the flexibility CircleCI offers makes it a great tool for the job.


Changing a Git Commit Message
Changing a Git Commit Message
Dec 5, 2020 · 6 min read

The Git commands to change a commit message are situational - here's a short guide to all of them.


Undoing a Git Commit
Undoing a Git Commit
Dec 3, 2020 · 5 min read

Complicated Git commands are hard to remember and are full of landmines - here's a short guide on how to undo any Git commit.


Installing a Specific Version of Helm
Installing a Specific Version of Helm
Nov 24, 2020 · 4 min read

Helm, the package manager for Kubernetes, can be sensitive to the version of Tiller running in cluster, and as a result may require you to install a specific version.


Making UUIDs More Performant in MySQL
Making UUIDs More Performant in MySQL
Nov 14, 2020 · 3 min read

MySQL does not have a native UUID type, so strings are often used instead, which come with large storage and performance costs.


Generating v4 UUIDs in MySQL
Generating v4 UUIDs in MySQL
Nov 13, 2020 · 3 min read

MySQL's UUID() function generates v1 UUIDs, which have a time component that make them unevenly distributed over short periods of time. We can define our own function to generate v4 UUIDs, which are random and therefore more evenly distributed.


Faking Sequences in MySQL
Faking Sequences in MySQL
Nov 11, 2020 · 4 min read

MySQL doesn't have a concept of custom sequences that other databases such as PostgreSQL do, but they can be faked with a table and some clever queries.