Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

System Configuration

CI status

I try to keep as much of my configuration as possible in this repo. I symlink my dotfiles into the appropriate locations. I also use the scripts in the systems directory to initialize new machines and keep them up to date later. The top-level script detects the current system and runs the appropriate script.

Remapping caps lock

The best tip I ever got for switching away from a default setting was to change my caps lock key to function as both escape and control. On every OS, there is a way to make caps lock work as escape when tapped and control when held down. Check out this blog post on how to do it.

Terminal toolkit

Replacements for Unix commands

  • bat for replacing cat
  • exa for replacing ls
  • fd for replacing find
  • fzf for a general purpose fuzzy finder
    • Jump to directories (making cd somewhat obsolete) with fzf-marks
    • Open files without navigating to the directory
  • htop for replacing top
  • ripgrep for replacing grep

Structured text processing

These are the ones I keep installed, but you can reference this list, which is much more comprehensive.


Desktop applications

Cross platform




  • Todoist for keeping track of what I need to do

xkcd 1172

xkcd 1806