- There are better options for a privacy-respecting phone
Meet the new, better Apple. Here's how to choose your phone and set it up.
- 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.
- 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.
- Bash and shell expansions: lazy list-making
A tour of brace expansion, shell parameter expansions, and playing with substrings in Bash.
- 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 set up OpenVPN on AWS EC2 and fix DNS leaks on Ubuntu 18.04 LTS
A guide for setting up your own private VPN service, and understanding and fixing a DNS leak.
- 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.