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.

Currently, the blog consists of 5 html templates, 4 map-reduce jobs to produce the indexes, 2 views for displaying home vs article pages, and 3 types of listings for navigation. For styling and decoration, I have two fonts, one css file, and one javascript file which generate the typography, basic layout, color scheme (even if it is only shades of grey), and the animated ghost text for the logo. The only image on the site not directly part of an article is the favicon.ico file which helps me find my own bookmarks. One of the design side, I'm leaning heavily towards the journal / newspaper article style, with a few crisp clean lines and a focus on content. Each of the sections are scaled proportionally to the size of the viewing area, and scales to be legible both on a high resolution display or a tablet. As I tend to do a lot of my blog reading/writing on an iPad, getting something readable out of the process is key. And with removal of the last bits of AJAX from the blog rendering, my blog too is both editable AND displayable in a text only web browser -- for 2013, that is becoming an ever more impressive feat!

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:

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:
These short cuts mean I can Control-s 1 g era mnesia and jump to the documentation. Control-s l will then bounce back and forth between the code and the docs. Since I'm usually in Vim, I've got a rather tweaked out color scheme, host of Vim bundles for everything from automatic code linting, builds, deployment, calendaring, personal journal, wiki, and much much more; I basically never leave the home keys. The scariest thing about this setup is that it even works with my iPhone. Using an SSH client on my phone and a tunnel back to my home machine, I can hack on things from anywhere. When the iPad and an external keyboard are involved, it isn't any less capable than the MacBook Pro (which spends its days emulating a 256 color xterm anyways).

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.