Blog

Write great command line utilities with Python

Brett Weir, February 13, 2023

Learn how to create simple, standalone, useful Python CLI tools to solve even the most mundane infrastructure problems, so that you can start automating everything.

Lighthouse testing with CI

Brett Weir, February 5, 2023

If you want to really understand how something works, you gotta spend some time with it. Let's see what it would take to create our own Lighthouse CI/CD, without using the packaged solution.

Use pyenv for local Python development

Brett Weir, January 27, 2023

Learn how to use pyenv to bootstrap isolated Python installations, so that you can have the best of containers and local development.

So long, Signal

Brett Weir, January 26, 2023

My reaction to Signal deprecating their SMS support. I liked having one less messaging app to think about.

Serve static assets with Cloudflare R2

Brett Weir, January 11, 2023

Cloudflare's S3 offering turns out to be really easy to set up. I'll show you what R2 can do by building an asset CDN for brettops.io.

Find missing files in Linux

Brett Weir, January 9, 2023

Not every missing file requires a trip to StackOverflow. With a little knowledge of your system, you can often troubleshoot problems faster and without leaving the terminal.

Build an Inkscape container

Brett Weir, January 6, 2023

We'll walk you through creating an Inkscape container to run in CI jobs, and prove that you can automate just about anything with a command line interface.

Phone numbers are not secure

Brett Weir, January 4, 2023

A ton of services require the use of SMS for two-factor authentication. Learn why this is a terrible idea, and why you should avoid services that do this.

GitLab is a bargain

Brett Weir, December 30, 2022

GitLab seems expensive, but when you consider what you'd need to buy to replace it, the price starts looking pretty reasonable.

Proxy Docker images via GitLab

Brett Weir, December 28, 2022

Docker Hub limits the rate at which you can pull container images. Here's how you can use GitLab's built-in image proxy to get around these limits.