A Whole New Style
I recently got a hair cut and a trim and updated my LinkedIn account with a dapper new photo. Thinking quickly, and realizing that my boss might take it the wrong way, I sent him an email stating that "I was updating my LinkedIn and getting a hair cut!" It probably wouldn't be a big deal normally, but we had also just brought on board someone to take over my day-to-day responsibilities so that I could focus most of my energies on R&D. Needless to say, a minor change of grooming can often signal as an indicator of other changes afoot. And that's why I'm giving the old blog another minor facelift.
How I built my blog on CouchDB + Varnish
Unlike your typical WordPress blog, or ::shudder:: Tumblr thingy, my blog is powered by the indomitable CouchDB and ineffable Varnish. Varnish serves as a routing and caching layer that allows me to run multiple web applications side by side, while at the same time protecting CouchDB from slow clients and floods of bot traffic. CouchDB serves both as the web server and the database, and also provides a number of automatic content generation functions producing sitemaps, extracting lists of links from articles, and faceting documents by time and occasionally subject. For deployment and management, I am also using CouchApp to generate the general scaffolding for the site. Varnish serves the requests and CouchDB does mostly everything else.
Supporting my Terminal habits
On a daily basis I spend probably about 6 hours in the Terminal.app. Most of the applications that I need are in the terminal:
- Mutt - email client
- Profanity - xmpp client
- tmux - terminal multiplexer (think tiling window manager for a VT100)
- elinks - a text based webbrowser
- vim - a text editor with all the trimmings
I usually keep my terminal windows full screen, with one with containing distractions like mutt and profanity for communicating with people at work, another window with elinks open for reading what ever RFCs or docs, and then a half dozen windows with various shells and programs running. One of the nice things about elinks is that it has the ability to add smart links which act like short cuts to various urls. Some of my personal additions are:
- era - http://www.erlang.org/doc/apps/%s/index.html - jump to an Erlang application's documentation
- erm - http://www.erlang.org/doc/reference_manual/%s.html - quickly jump to part of the Erlang Reference Manual
These short cuts mean I can Control-s 1 g era mnesia
Computing with More Less
For the past few months, I've been spending more and more time away from desktop and laptop machines, and spending more and more time on the phone and tablet form factors. For the previous 7 years, I've spent a considerable amount of my professional life building applications that run on those devices, but in terms of day-to-day activities, I had not been using them for much. It wasn't that I didn't have use for them, or like them, or couldn't use them. It was more an inertia against using something I typically spent the entire day cursing. Not having any for profit mobile development for a good 6 months now, I find myself using the iPad and iPhone more than the laptop or the desktop. Now the desktop is relegated to doing remote XCode builds and serving as the kids' entertainment center. The laptop has sat in the closet for 6 months, and the work laptop only comes out when I want to check work email. The rest of the time, I'm usually either coding on the Raspberry Pi via a bluetooth keyboard + iPad as terminal emulator OR I'm hacking on a couple nodes in Rackspace using the iPad as a dumb terminal. Guess what. The iPad is a totally acceptable VT100 terminal replacement and weighs a fuck ton less and requires setting far fewer jumpers!
This style of light weight computing with a retro-future flair doesn't leave a lot to be desired. Builds are as fast as I care to throw money at the problem. I can throw 8 more cores at a build for $1.20/hour, and turn it off when I'm done. I almost never need that much. I can build on Linux (x86 & ARM), Mac OS X, and FreeBSD for about $0.05/hr ($32/month) and $50/month in bandwidth. My build farm is available from anywhere I can get wifi (and with tethering that is anywhere I go). The nicest bit of all this is easy.