I want to describe my computing set up, both hardware and software. But I want to take a slightly different tack than most set up posts out there. Rather than go through the list of all the items I use, and gush about why they are the coolest in the world (there might still be some gushing), I want to go into why exactly I chose those items, and what trade-offs were involved. Hopefully, this approach will make this post useful even to those who disagree with my specific choices.
Before I even get into the details, I must describe the overall goals that I want and need my computing set up to achieve.
As time goes on, time becomes precious. I spent years in college and grad school maintaining my own Linux boxes and servers, tweaking their every detail, compiling my own custom kernel, installing all the latest packages, and happily staying up all night to do so. Believe me, it gets old. I guess it was a good learning experience, but that is certainly not something I want to include in my regular set up. I want it to be as hands-off as possible. If there are services that meet my needs and handle things for me, I want to use them. I want to minimize the number of moving parts, both in hardware and software. I want things to work out-of-the-box. I want to spend the minimum amount of time possible tweaking and maintaining my setup.
As functionality goes, my needs are quite pedestrian. Of course, I need my set up to be programmer-friendly, seeing as that is my day job. I don’t do anything that might be considered heavy duty, like editing large videos. I do deal with the constant stream of images and videos that my setup ingests from digital cameras and phones, but that is a mainstream requirement. By and large, the vast majority of my digital activity centers around consuming, creating and massaging text, be it structured in the form of programs, or unstructured in the form of prose.
After you go through a few machines, you realize that they are nothing but shells, and in the grander scheme of things, completely inconsequential. What does matter above everything else is your data. In your digital life, you don’t just do things, you make them, and save them. Everything else is moot if all this data cannot be safely and verifiably be backed up for the long term. Think about what your life expectancy is. Now think about something recent from your digital trail that really matters to you. It might be vacation pictures, a journal entry, a blog post, anything. Would you like to have that digital item available for your perusal when you are 80 years old? Now try to remember the oldest digital artifact that you can still retrieve, and more importantly, decode and view. Can you? How old is it? That should give you some idea of how hard and full of unknowns the problem of long-term preservation is.
I’ve talked about taking measures to proactively avoid RSI previously on this blog. Long story short, if a significant fraction of your working life is spent working with computers, and you do not yet have even the mildest RSI, you should consider yourself extremely lucky, but not immune. Act like you do have RSI, and change your set up right now to avoid it. It will happen sooner or later, and you might as well tackle it before it actually happens, so that you have a good chance of completely avoiding it.
After years of experimentation, I have found that the following works for me:
- Absolutely no mice. As early as college, my right wrist was completely ruined by excessive mouse use. I moved to using the mouse only with my left hand, and also doing as much as possible with the keyboard, but I could feel the pain creeping into my left hand as well. I tried trackballs, vertical mice, ergonomic mice, everything you can think of. Eventually, I was saved by the magic trackpad.
- Use a split keyboard. Using a split keyboard, the kind that has an inverted V shaped space down the middle, lets me type without bending my wrists at an unnatural angle. I use the GoldTouch keyboard.
- Use dictation software. Of course, this does not work for programming and fine text surgery, but for tasks where I just need to transfer a large number of words from my brain into a computer, this works wonderfully and keeps my hands completely out of the loop. It still feels strange sometimes, because my entire life up to now the circuit that moves words from my head to the screen has been silent, and it takes some adjusting to speaking them out loud. But maybe that is just a ghost in my head. I use DragonDictate, the Mac version, and have been a happy user for almost 2 years.
The piece of hardware that I physically interact with the vast majority of the time is the 13 inch MacBook air, the model from mid 2011. It has 4 GB of RAM, and a snappy 128 GB flash drive. Once you taste the sweet speed of a flash drive, you will never go back, and the smaller capacity compared to spinning rust drives will feel like an inconsequential sacrifice. It is by far the sweetest, most lickable piece of hardware I have ever had.
Before my current Mac phase, I had used Windows for several years. I honestly don’t see what the fuss is about–I’ve moved back and forth between the 2 worlds relatively easily. Maybe that’s because all the software that I regularly use runs equally well on both sides. The major advantage of the Mac side of things is that they tend not to suffer from the bit rot that makes a Windows machine completely unusable after about 2 years.
I’m 90% ready to make the jump to pure netbooks, with nothing but a browser and a net connection. About the only thing holding me back at this point is good dictation software.
For serious, heads down work, the MacBook is connected to a large 30 inch monitor, and an external keyboard and trackpad. I use the Apple Magic trackpad, and the Goldtouch split keyboard.
Most of the real work on the job happens on a humongous, powerful machine, that sits under my desk, fed only by a power cable and ethernet. This, of course, runs Linux. I just ssh and X11 into it from the laptop wherever I am and go about my work.
So those are the 2 major pieces of hardware I regularly use–the large machine that stays put, and the feathery laptop that goes around with me. It’s pretty simple. The laptop is the pretty front-end, and the desktop serves as the heavy backend.
I like this setup because I get the UI sweetness of MacOS X, while being able to use the dev setup on the Linux box.
Other miscellaneous pieces:
- the Logitech H555 headset for dictation, and video conferencing, and occasionally listening to music.
- Bose QC15 noise canceling headphones for the times when I really need to block out the outside world. They definitely go on flights with me. They are kind of expensive for headphones, but they really do make a huge difference. In a regular office environment, it’s as if–whooosh–the whole world just fell away. And on planes, the loud drone becomes a whimpering hiss. This is the one gadget that still amazes me every time I use it.
- An external USB drive, for backups. I use the Western Digital Passport 1 TB.
This is where the religious wars usually start. And rightfully so. If, like me, your digital life mostly revolves around text, then you need to have a religious fervor for your text editor. When I meet a geek who does not feel strongly about their choice of text editor (or worse, uses notepad or gedit), all my “fake geek” alarms go off. As far as software goes, this is the centerpiece of the entire set up.
You know what’s coming–Emacs and vi–those are the only serious contenders. I have some measure of objectivity here, because I have used both for a number of years, and feel comfortable with either. In the end, I fell towards the Emacs camp. What finally tipped me over was the customizability. People keep talking about the look and the key bindings and how many keystrokes it takes to do something. But all that is not important. What is important is whether you can make this editor your own. In the final analysis, Emacs is not really a text editor, but a platform on which to build your workflows. It just happens to be really good at text.
But–I’m not advocating a particular editor here. It really doesn’t matter which one you end up with. What does matter though is that you are a power user of it. It should feel like second nature to you. You should have no trouble making it do your bidding. It should make you feel powerful and light and frictionless. When people look over your shoulder at you going about your work with it, it should look like an incomprehensible buzz to them.
Also, don’t be a text editor mono maniac. I love Emacs, sure, but I confess to dropping down to other tools when they are better suited to the task. For example, for dictation I usually use TextEdit, because MacSpeech Dictate can’t really work with Emacs’ text control. When I’m writing Markdown, I often use Byword. Also, for tracking my tasks, I use Omnifocus. I know, that can be subsumed by Org-mode in Emacs. Org-mode can subsume everything. Doesn’t mean it should.
Actually, I lied about the text editor being the centerpiece of my setup. I ran a time tracking utility, and found that even on days and weeks when I’m mostly heads down programming, the application I spend the most time in is my browser. So it’s pretty important to get this one right, and to tweak it exactly the way you want it.
I use bash. I don’t use a terminal application. I just run all my shells in Emacs. That way, they are simply text buffers, like everything else. Once you do this, you will never understand why people use terminal programs where the only editable line is for the command you are entering.
I like to meticulously name the directories in which I save digital photographs. Usually, I also give each individual picture a short, descriptive filename.
For browsing them, as well as making small edits, I use Picasa. It is overall a great application. But what really attracts me to it is that, unlike most other photo managing apps, Picasa works with your directory hierarchy, and never messes with it. It is a read only application, unless you explicitly modify something yourself.
This is a useful litmus test for almost every application I use. It should work with my directory layout, and provide a view over that. It should absolutely never create its own directory layout with jumbled names that are opaque to me, and have me depend on that one specific app to view my data.
Backups and preservation
I keep all my digital artifacts in a version controlled repository. There is a “master copy” that I commit new items to, and check out from. This holds everything, including binary blobs such as digital photographs. The repository is the Golden copy. It is backed up many different ways. Rsync helps a lot with that.
This means that what is on my laptop is just a cache, a checked out (small) subset of the entire repository.
I know what you’re thinking–what version control system do I use for this? I use CVS. There, I said it. Back when I started my repository in 1999, CVS was cool and the state of the art. And now, I have so much precious data in my repository that I’d rather not migrate it to something else. CVS also has the nice property that it’s repository (the “,v” files) are human readable.
Most of my reading comes through my RSS subscriptions, and then there are the occasional longform pieces I stumble across. But here is my twist: I listen to almost all of my reading. I dump it out to text, and then use Mac OS X’s speech synthesizer to “speak” them out into sound files, which I then listen to on my iPod. Why? It started because I wanted something interesting to listen to during my commute. But then I realized what a better experience listening to something is when compared to reading it on the screen. It’s easier on the eyes, of course, but also free of all the distractions that a screen brings. It also leaves you free to do other tasks, like driving, that don’t divert from the cognition required to comprehend the piece.
The number one thing on my wish list is a high-resolution large (13 inches or more) display. I want something that comes close to the retina resolution levels of the iPad. This point was driven home to me when a full resolution screenshot of the new iPad did not fit on my 30 inch monitor.
Next wish: more storage. You can never have enough storage. Right now, I’m compelled to only carry a small fraction of my repository on my laptop. It would be great to have the whole thing, preferably at flash-like speeds. But I would even settle for a hybrid approach where the OS and apps live on a fast flash disk, and my deep archives are on slower spinning rust disks.