To celebrate the one-year anniversary of my last post... sigh... I'm introducing a series covering my latest automated installation and configuration strategies.

There are few things I dislike more than setting up a new computer. I don't like disrupting my workflow. I keep far too many windows and tabs open. Even rebooting seems like a chore. So, anything I can do to streamline my setup is always appreciated.

Two years ago, I moved my dotfiles into GitHub. That helped tremendously. I don't do a huge amount of code editing in the terminal, but enough to want to keep my settings consistent.

I also keep a new machine setup checklist. While useful, it's not been the most methodical piece of documentation I've written. It's a very organic document, written and re-written as I've setup my last few computers. Frankly, it's a mess.

Unfortunately, fiddling with my setup is the last thing I want to do when setting up a new computer. I need a working machine, as soon as possible.


A couple weeks ago, I wiped my MacBook, intending to sell it.

I wavered on that decision, so I started to reinstall. Because this wasn't my primary workstation, I realized I had an opportunity to test and develop a much better automated installation method.

What I'm looking For:

  • Automate as much as possible.
  • Provide documentation for non-automated processes.

    Obviously, there will be plenty of tasks I'll need to do manually. I'd like to either document those better, or incorporate the checklist into an installation script.

  • Modularity.

    My concern with too much automation is the lack of flexibility, or worse, the lack of familiarity. It's been a long time since I've updated my dotfiles, and to be honest, I haven't the slightest idea how it's set up.

    I want to break this process into separate modules. Maintenance should be easier, and I'll be able to update, replace, remove, or ignore sections as necessary. I want to use my zsh and vim configuration in a Linux environment, and skip the Mac-specific pieces.

  • Mac-friendly.

    I'm almost exclusively on Mac, my solutions will obviously be mac-centric.

  • Simple.

    I'm going to use this process only a few times a year. This is for my use only, I'm not maintaining a large (or even small) company's worth of hardware. This process needs to be easy to use -- and maintain -- even if I haven't used it in several months.

The Next Steps

This is -- and continues to be -- a fairly large project. I'm going to split it into five sections, and will write up a separate post of each over the coming weeks.

  1. Bootstrapping.

    I want to start the automated process as early as possible, with as few dependencies as possible.

  2. Automating installation.

    We'll look at the automated installation tools and methods available.

  3. Dotfiles, again.

    It's what started this whole project. After two-years, there's been a lot of changes.

  4. Configuring OS X.

    Automating mac-specific configurations.

  5. Post installation.

    Documentation post-installation tasks, along with a review of the overall process.

April 27 2014.