Ok, so here we are. It's 2015. The gold standard for explaining how you solved a technical problem to the internet at large is a blog post with things you can copy and paste or maybe some pictures.
If you're really lucky, someone actually has reusable a public repository of some kind. If you're really lucky, their code works, and if all the gods are smiling on you at once, their code is documented.
It seems to me that we can do better than this. We possess a great many of the right tools to do better than this, at least for a lot of common problems. What does it take to make a given workflow both repeatable and legible to people without the context we have for a given thing (including ourselves)? Writing about it is surely desirable, but how do you approach a problem so that, instead of being scattered across your short term memory and a dozen volatile buffers, your work becomes a kind of document unto itself?
This is the (beautiful) root of what version control does, after all: It renders a normally-invisible process legible, and in its newfound legibility, at least a little susceptible to transmission and reuse.
What do I know works well for transmitting process and discovery, as far as it goes?
Here are some things that I think are often terrible at this stuff despite their ubiquity:
Here's one problem: There are a lot of relatively painless once you know them tools, like "let's just make this a dvcs repo because it's basically free", that if you know they exist and you really want to avoid future suffering you just get in the habit of using by default. But most people don't know these tools exist, or that they're generally applicable tools and not just specialist things you might use for the one important thing at your job because somebody said you should.
I'm starting here again.
Vagrant is a thing for quickly provisioning / tearing down / connecting to virtual machines. It wraps VirtualBox, among other providers. I think the basic appeal is that you get cheap, more-or-less disposable environments with a couple of commands, and there's scaffolding for simple scripts to configure a box when it's brought up, or share directories with the host filesystem. It's really lightweight to try out.
Go to the downloads page and install from there. I used the 64 bit Ubuntu .deb.
$ sudo apt-get install virtualbox
$ sudo dpkg -i vagrant_1.7.2_x86_64.deb
$ mkdir vagrant_test
$ cd vagrant_test
$ vagrant init hashicorp/precise32
$ vagrant up
$ vagrant ssh
This stuff takes a while on the first run through, but is generally really
slick. hashicorp/precise32
is more or less just a preconfigured image pulled
from a central repository.
Their Getting Started is pretty decent.
People around me have been enthusing about this kind of thing for ages, but I haven't really gotten around to figuring out why I should care until recently. I will probably be using this tool for a lot of development tasks.
Other notes: