Recent Articles

Finding Long-Running Queries in PostgreSQL

Nov 26, 2021 · 2 min read

Poorly optimized queries and excessive connections can cause problems in PostgreSQL, here's a quick way to identify and kill them.


Calculating Table Size in PostgreSQL

Nov 26, 2021 · 2 min read

Knowing how much disk space individual tables take up is important for DB maintenance and debugging, and it can be accomplished with a single query in PostgreSQL.


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

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

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

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

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

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

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

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

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

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.