Last Updated: February 25, 2016
·
446
· destructuring

$HOME as a git repo is a gateway drug

On December 31, 2010, I put my home directory under git control. Not just the dotfiles, since I detest symlink spaghetti, the whole thang.

The first commits felt clumsy. Added this script; change the color of my prompt; detect if I'm under OS X. I felt like I had to make a commit a day to get the habit going. Same feeling for months.

Eventually I developed my own style of file organization, learned to use branches and stash to organize large changes. My comments still suck (they still do) but all changes were going into git. I had accumulated a nice round ball of rubber bands.

From there it was natural to think about other aspects of a git repository:

How to deal with dynamic content that couldn't be statically put into git? Or because they contained passwords?

How to deal with passwords, keys outside of the git repo?

What's this gh-pages, README.md, jekyll static site generation?

How do I deploy my home directory to other workstations, servers even?

Can I run services in my home? Can my services talk to each other over an openvpn network formed on top of Comcast, the office, and a Philz cafe?

Can I run an irssi bot from each shell?

How do I make my prompts, my xterms, my desktop go bling bling bling?

Maybe I should do this MacPorts things and stablize it as a distribution, a stack.

These are the same questions I'd ask about work projects hosted on GitHub. My home directory is an application. I use git to track history, chef to configure it, capistrano to deploy it, jekyll to generate documentation, run irssi clients/bots, network them together with iCloud, maintain several MacPorts distributions.

I feel like I'm repeating that cycle again with coderwall protips, collecting interesting things to muse about, playing with snippets, URLs, prose, to share a sense of what I do day to day.