-
Create a self-hosted chat service with your own Matrix server
A speed-run introduction to Matrix via Dendrite.
-
Deceptively simple search-and-replace across multiple files
How to interactively search-and-replace across many files with just two commands, thanks to Vim.
-
Look mom, I'm a GitHub Action Hero
The GitHub blog interviews me for their GitHub Action Hero series.
-
Command line tricks for managing your messy open source repository
A handy toolbox for the terminal to help open source maintainers make their projects sparkle.
-
The surprisingly difficult task of printing newlines in a terminal
Your guide to string interpolation quirks that confound the best of us.
-
Bash and shell expansions: lazy list-making
A tour of brace expansion, shell parameter expansions, and playing with substrings in Bash.
-
A cron job that could save you from a ransomware attack
How a simple scheduled job can help you quickly recover from ransomware.
-
A lightweight, tool-agnostic CI/CD flow with GitHub Actions
How to take advantage of a simple GitHub Actions workflow without sacrificing agnostic tooling.
-
A portable Makefile for continuous delivery with Hugo and GitHub Pages
My Makefile for building this site, optimizing images, and running my CI/CD GitHub Actions flow.
-
How to quickly batch resize, compress, and convert images with a Bash one-liner
A fast command line interface solution for batch image processing.
-
How to do twice as much with half the keystrokes using `.bashrc`
An overview of time-saving aliases, functions, and creating a useful Bash prompt.
-
How to set up a fresh Ubuntu desktop using only dotfiles and bash scripts
Configure settings, install programs, and customize your desktop environment with a single bash command.
-
How to write Bash one-liners for cloning and managing GitHub and GitLab repositories
Using xargs and awk in Bash to automate managing remote-hosted repositories.
-
A quick guide to changing your GitHub username
Some additional steps to consider after making a change to your username on GitHub.
-
Git commit practices your future self will thank you for
Learn how to easily create a clean and readable Git commit history with git squash, message templates, git stash, and tags.
-
An automatic interactive pre-commit checklist, in the style of infomercials
How to set up an interactive checklist using a Git pre-commit hook script.
-
Batch renaming images, including image resolution, with awk
How to batch rename images with custom values using file, awk, and rename - in rainbow colors!
-
How to replace a string with sed in current and recursive subdirectories
The power to update multiple files with a single command in your terminal.
-
How I created custom desktop notifications using terminal and cron
How you can use tools your Linux system already has to create custom desktop notifications.