It's Time to Cleanse it With Fire
Wipe Your Laptop, It's Good For You
Wiping my workstations is roughly a yearly ritual for me. Developing good habits for storing my machine config in the cloud has helped me be more productive when I need to switch machines and has also developed into a bit a hobby over the years.
I might be a little sick, but I thoroughly enjoy the process of setting up a fresh laptop. It's a chance to cleanse my past sins, and like Marie Kondo, say goodbye to things that just aren't bringing me joy.
Some people think this is crazy, they go on migrating from one machine to another, upgrading major operating system versions, as their machine gets slower and more bug-laden, all the while dreading the day they lose their backups and get stuck with a bricked machine.
Being so free with your hardware requires a certain curiosity, a certain desire to codify your configuration.
Tools of the trade
Here are some tools that make it possible for me to live a life of detachment from my worldly machines:
Tool #1: Dotfiles repo
Unrealist keeps a dotfiles repo, that if we're honest, is really just my dotfiles repo, carried forward from previous engagements, and ultimately inspired by the Thoughtbot dotfiles repo. This is intended to be a base configuration that makes sense for the type of work we do. It contains configuration for Git, ZSH, Tmux, Neovim, and a few other tools. This repository lets us codify this configuration, and put it somewhere we can easily fetch it on any machine that has git installed with
git clone https://github.com/UnrealistTech/dotfiles.git
This means I can share this config with other devs who may someday join us, and they can submit pull requests to make changes as time goes on and we collaborate and share ideas for our combined idea of a good setup.
I also keep a personal overrides repo that can override that config with my own. The idea is that each dev would have one of these repos that works along with the org-wide one. Mine is pretty sparse since, in reality, the shared repo is mostly me. These two repos are the source of truth that gets magically combined to make a Voltron of awesome via our next tool.
Tool #2: RCM
RCM is a command-line tool created by the folks at Thoughtbot. It works by symlinking a repository of configuration files to your home directory, while optionally allowing for an override config as well. The easiest way to configure it is to clone the base dotfiles repo to ~/dotfiles
and your overrides repo to ~/dotfiles-local
and then run:
rcup -d ~/dotfiles
This will take care of symlinking the files, and in the case of our config, it will install all of our plugins in Neovim. Anytime the config is updated, or if you want to fetch plugin updates, just run rcup
and it will take care of bringing everything up to date. Just make sure to git pull the dotfiles repos before you try to run updates because rcup won't do that step for you.
Tool #3: Brewfile (for OSX devs)
I switch around between operating systems a lot, but I use OSX a lot. Your particular version of a package manifest may be a little different, but most Mac devs use Homebrew to install most of the dev packages they need. If you use homebrew, make sure to make use of a Brewfile. The Brewfile is essentially just a package manifest, similar to a composer.json
or package.json
or Gemfile
, but for your machine's homebrew dependencies. If you include a Brewfile with your dotfiles repo, you can install its dependencies with:
brew bundle --file ~/.brewfile
adjust per your file's name. You can likely apply similar concepts to Linux and Windows. On Linux, you might decide to use Ansible roles or puppet/chef, etc.
Tool #4: Password Manager
This should be a part of your toolbelt regardless of what you do for what company, or even if you are just a student. Good password hygiene is really difficult, and having a good password manager like 1password or Last Pass makes it a lot easier. A huge bonus is that if your laptop falls into the lake, you can easily install the client on the new machine and have all of your passwords back.
Tool #5: Some kind of cloud file storage and/or backup
You've heard it many times, you either backup your work, or be prepared to lose it forever. I've become accustomed to storing almost all of my files in the cloud. This is quite natural for code that a developer writes, but make sure you have your important documents somewhere other than your personal machine as well. Use Google Drive, iCloud, NextCloud, or something. It's also a very good idea to do traditional backups as well.
Pick and choose what you want
This list of tools is by no means exhaustive, and you don't have to use them all to reap the benefits of the concept here. Just learn that every machine you own is just a tool, and tools can break, become obsolete, or get stolen. Plan to someday wipe your machine for a fresh start or to migrate to a new one and reap the benefits of detachment from your devices and their digital doo-dads.