Articles

Occasional posts on Linux administration, Ansible, self-hosting, and whatever else I feel like.

Newsboat Quick Setup

A short guide to building Newsboat from source on Debian.

Ansible Role Testing

Test Ansible roles with Molecule using containers, with the setup kept in a reusable template.

Bash Functions To Make Ollama Slightly Easier To Run In Docker

Bash functions that use Docker to run Ollama, with start and stop wrappers.

Ansible Quickstart (Spring 2026)

A working Ansible install using pipx, with collections pulled from requirements.yml.

Yon Yonson

Turn text into a state diagram with a short shell pipeline and Graphviz.

Minimal Hostname Naming

Bash functions that take the thinking out of hostnames.

Colorblind Colors

The Bang Wong colorblind-safe palette is a sensible and attractive default.

Traefik with Mail-in-a-box as the dns-01 Provider

Solve Let's Encrypt dns-01 challenges through Mail-in-a-Box by pairing Traefik's exec DNS provider with a small shell shim.

Tracking App Usage in Linux

Track your X11 application usage with xprop, ps, and a local SQLite file.

My Bash Prompt

A two-line Bash prompt showing tty, user, host, path, and a smiling or frowning face for the last exit code.

Cloudflare Dynamic DNS Updater

A quick script to dynamically update Cloudflare DNS records from cron.

SSH Daemon on Alternate Ports

Run sshd on alternate ports to work around difficult ISPs.

Deduplication and You

A short Python script that hashes a photo library, finds duplicate files, and moves them aside, with a dry-run mode first.

Encryption with a Funky Partition Layout

Full-disk encryption using mdadm RAID 1, LVM, and LUKS.

Weather Shell Function

A geolocating shell weather function for forecast.io, plus the wttr.in one-liner that replaced it.

CIFS, fstab, and You

Mount Windows SMB shares at boot on a Linux machine with a credentials file and mode hints.

Leveraging LVM Caching

Using a fast disk as a cache in front of an LVM logical volume.

Enable SSD Trim Support with systemd

A quick example of how to enable trim support for block devices using systemd timers.

CentOS 7 FirewallD Initial Setup

A basic firewall configuration using firewalld on CentOS 7.