About the author
Will Barrett is a Software Engineer, Technical Lead, and Engineering Manager from the San Francisco Bay Area with over 14 years of experience. He’s a Superset PMC Member of The Apache Software Foundation. He’s held staff software engineer and senior engineer roles at Change.org, Entelo, Sqwiggle and Preset.
Will is the author of On Learning to Program, a blog for new Software Engineers entering the industry. Will is also a certified reviewer on PullRequest where he’s caught hundreds of bugs, security issues, and other critical issues for over 40 teams.
I’ve had to shuffle from machine to machine a lot over the last few years. Each time I change jobs or when my hardware dies it becomes time to set up a new machine again. Having a few things in place makes this a lot easier each time I do it. Here are some of my favorite tips and tricks:
Before You Ditch the Old Machine
Update Your dotfiles
Repository
A dotfiles repository is super helpful. It’s a repository that holds all of your command line configuration files - all those hidden files that start with a dot that live in your home directory. Start by copying all the files into a Git repository and create symbolic links back to their original locations. Check that there aren’t any secrets in the dotfiles, then push them up to Github (or other remote repo of your choice). Once you’re on the new machine you’ll save a lot of time not having to reconfigure all your shell settings.
Move all the files you want to take with you into a web service
Back in the bad old days, I’d be recommending you to burn CDs, use a floppy, or throw things on an external hard drive. These days services like Google Drive, Dropbox, iCloud, and Box provide a better solution. By moving your files into a cloud service you can get redundant remote backup and versioning going forward without worrying about manually connecting your machine to a specific drive. Once you’re on the new machine you can install the client for your cloud service of choice and it’s off to the races.
Make sure you revoke your computer’s access to everything
Don’t bring your RSA keys with you - revoke this set and make a new set on the new machine. Before your computer heads off to its next life, make sure to revoke all access that your key pair has to any systems. Github, servers, anything else. Just remember to set up your new key pair before deauthorizing the old. Same thing goes for GPG keys.
Securely Wipe any Stored Passwords
Before you hand back your machine or send it on to its new home, make sure to securely wipe it.
On Your New Computer
Reserve About a Day to Get Everything Configured
It’s better to just take the hit and spend a day getting everything configured properly and to your liking before diving into development again. Trying to work on a half-set-up machine will be frustrating in a couple of ways - your machine will take longer to be fully set up, and you’ll be hampered while trying to do work without your normal tool chain. Being distracted and multi-tasking will just slow you down. Focus and get your machine set up, then go back to cranking out code.
Generally don’t restore from a backup of your previous computer.
A clean OS install really has a way of making the janky behaviors of a computer go away. I generally prefer starting with a clean install rather than bringing over all my junk from a Time Machine backup or similar.
Run OS Updates First
There’s nothing more annoying than doing your dev setup, then having it broken by an OS software update on the first day you have the computer. May as well get any pending software updates out of the way before you get started to minimize the pain here.
Set Up Your Password Manager
Getting password management set up first thing and disabling browser-based password management will help avoid accidentally leaking any passwords in the transition. It’ll also make getting logged back into all the services we use daily much simpler.
Generate New SSH Keys
You really don’t want to use the ones from the old machine unless you have no way to avoid it. Deauthing those keys and authing a new pair is much safer overall. It’s good to rotate your SSH keypairs occasionally anyway for safety’s sake.
Install Your Dotfiles Repo
Set up your symlinks before installing all of the various development stuff like rbenv
or asdf
or tmux
. When you do install the components you need, your configuration should be right where it needs to be already. If you’re moving to a different OS, say from Linux to OSX, this is a good moment to look at what might not work cross-platform and add in platform detection where necessary.
Change Your Computer Name to Something Cool
It’ll help you bond. Really. Give your computer a little flair, and name your new sharp tool. I like to name mine after weapons from Science Fiction, but you do you. Of course, go ahead and make sure IT doesn’t mind your doing that first…
Conclusion
Swapping computers is an awesome time to draw a clean slate, automate some parts of the transition and have a little fun. Enjoy your shiny new machine!
Find this useful? Be sure to check out these additional articles by Will Barrett: