himself, while I learned a lot of things about what makes C++ good and sucky
at the *same* time, he also taught a very important lesson: great engineers are lazy.
It's fairly easy to enumerate functionality in tens of hundreds of lines of poorly
organized, inefficient code, but (according to Bjarne) it's the great engineers
that are capable of distilling that functionality into it's most succinct
form. I've since taken this notion of being "ultimately lazy" into my
professional career, making it the root answer for a lot of my design decisions
and choices: "Why bother writing unit tests?" I'm too lazy to fire up the whole
application and click mouse buttons, and I can only do that so fast; "Why do you only
work with <aid="aptureLink_qYcERvYA4N"href="http://en.wikipedia.org/wiki/Vim%20%28text%20editor%29">Vim</a> in <aid="aptureLink_m0DuZkisMf"href="http://en.wikipedia.org/wiki/GNU%20Screen">GNU/screen</a>?" I can't be bothered to set up a new slew of terminals
when I switch machines, and so on down the line.
Earlier this week I found another bit of manual work that **I** shouldn't
be doing and should be lazy about: building. The local build is something
that's common to every single software developer regardless of language, Slide being a <aid="aptureLink_dkAoFOcNyd"href="http://en.wikipedia.org/wiki/Python%20%28programming%20language%29">Python</a> shop,
we have a bit more subtle of a "build", that is to say, developers implicitly
run a "build" when they hit a page in <aid="aptureLink_FWKNbGJPnm"href="http://en.wikipedia.org/wiki/Apache%20HTTP%20Server">Apache</a> or a test/script. I found myself
constantly switching between two terminal windows, one with my editor
([Vim](http://www.vim.org)) and one for running tests and other scripts.
Being an avid <aid="aptureLink_youtxiRCtA"href="http://twitter.com/hudsonci">Hudson</a> user, I decided I'd give
the [File system SCM](http://wiki.hudson-ci.org/display/HUDSON/File+System+SCM)
a try. Very quickly I was able to set up Hudson to poll my working directory and
*watch* for files to change every minute, and then run a "build" with some tests
to go with it. Now I can simply sit in Vim **all** day and write code, only
context-switching to commit changes.
Setting up Hudson for *local* continuous integration is quite simple,
by visiting [hudson-ci.org](http://www.hudson-ci.org) you can download
[hudson.war](http://hudson-ci.org/latest/hudson.war) which is a **fully self contained**
runnable version of Hudson, you can start it up locally with `java -jar hudson.war`.
Once it's started, visit [http://localhost:8080](http://localhost:8080) and you've find
yourself smack-dab in the middle of a fresh installation of Hudson.
First things first, you'll need the File System SCM plugin from the Hudson Update
Center (left side bar, "Manage Hudson" > "Manage Plugins" > "Available" tab)
![Installing the plugin](http://agentdero.cachefly.net/unethicalblogger.com/images/fsscm_updatecenter.jpeg)
After installing the plugin, you'll need to restart Hudson, then you can create your
job, configuring the File System SCM to poll your working directory: