The real reason I'm responding is to throw in my $0.02 that for those that want an easy and efficient tiling window manager setup, but don't want to go through the relative pain of xmonad, `awesome` is a great substitute. I've used it for years now, and although my office hardware changed from an old-ish ArchLinux box to a Macbook Pro, I'm still an avid fan of tiling WM's. Even on OS X, the first app I install is always 'DoublePane' to mimic the functionality. 
As efficient as vim shortcuts can make you while banging out code, I am a firm believer that most window managers are absolutely and completely inefficient. Most people whom I convince to give a tiling, scriptable WM a try never look back.
It's vim efficiency for everything you do!
 I'm not affiliated with DoublePane in any way, and there are alternatives out there. That said, for $1.99 (last I checked), it does an incredible job of increasing my efficiency on my Mac.
I'm seeing a lot of people respond about using similar setups with different tools. It doesn't really matter whether you use awesome/xmonad/ratpoison or something else, but I can tell that the people who built the tools I use think about computers the same way I do (https://wiki.archlinux.org/index.php/The_Arch_Way). I'm striving for this:
Pretty good use of $10, I think, unless I suddenly need that $10 for an emergency, like beer or coffee or a raw turkey. So, thanks, even if I'm stuck without a supply of raw turkey for a week.
I don't really know what to think about the trend among some software of having a full programming language in use in the configuration file. It seems like a good idea at first, having all that power at your disposal, but it really complicates things at times. Especially when the language in question is far from the normal languages in use. If you ever find yourself wondering why the $ or. operator was needed in someone's configuration you'll see why that's a bad idea. (yes, I know if you know haskell the reason will be clear. The point is that you shouldn't need to know details of a programming language like that to configure a WM)
Awesome isn't entirely guilt-free with its Lua configuration file, but at least Lua is similar enough to languages like Ruby and Python that you can mostly get what's going on in a config file without having learned Lua specifically.
The biggest issue for me is that although xmonad and awesome are both completely scriptable/configurable -- one of the benefits of having conf files that are "alive" -- xmonad is configured through Haskell while awesome is done through Lua.
To me -- a security guy who can sling code from scripting languages all over the place, but doesn't do any functional programming -- Lua is much easier to understand and use. Not everyone feels this way, and a lot of the configuration is just setting variables anyway.
I know many people who swear by xmonad, some of whom even used it at my suggestion, so please don't take this as a "beware" message. Try both out, and see which you like! :)
As a security guy, even though you're more familiar with Lua et al, wouldn't you have a warmer fuzzy feeling with a strongly statically typed language? (I use Python every once in a while. But having to wait for the running time for detecting basic faults always gives makes me nervous.)
I also started to use uzbl as my browser. Maybe one day I can throw my mouse away :)
So I've stuck with Firefox but have installed Pentadactyl, which adds Vim emulation support. It gets me close enough to avoiding mouse use as I think I'll ever get.
I used to prefer Awesome in part for the tweak-it-while-it's-running appeal of Lua configuration, although I rarely used it. Now xmonad has the same runtime configurability via GHC, with recompilation taking a second at most.
I'd add one more that I find essential: Pentadactyl. Without it, the context switch when using a browser really disrupts the flow.
I surely want to try out the new vim plugin Pentadactyl for firefox.