Ephemeral computing
How much does the physical object that is your computer actually matter?
I went to the Clojure Dojo on Tuesday evening, opened my laptop, and … nothing. After unscrewing the bottom and pulling out various components in turn (bless ThinkPads and their easy maintainability!) I established that it was the (solid state) disk drive. It wan’t just dead; it was so dead that just having the thing connected caused the BIOS to hang.
It was unfortunate, really, especially since I’d spent the preceding afternoon setting up a good Clojure editor + REPL environment. Luckily, I’d pushed those configuration changes to a Git repository just before leaving.
It seems that dying on sleep is a known problem with this model of SSD (an OCZ Vertex2). I wish I’d known earlier. I’d been led to believe that the principle failure mode of SSDs was dead cells, and it may well be, but this one apparently died because of buggy firmware.
What may surprise you is that I don’t back up my laptop. At least, not in the sense most people understand it. I don’t copy it all to a safe place: most of it doesn’t matter. Almost everything on there exists elsewhere, mostly on the internet. The rest is just junk, resting there temporarily to serve a specific purpose at a moment in time.
My email is hosted remotely. All my work—and the configuration of my working environment—is version controlled using Git, and pushed to public or private repositories every time I make a change. Even the initial setup of the computer—installing software and configuring the environment—is done by a script that’s saved elsewhere. However, that was the theory. Tuesday’s failure was the first time I really put it to the test.
I had to tweak the slightly out-of-date setup script a bit, but it worked. I can take a standard installation of the operating system (Xubuntu in my case), run a script, and have a full operating environment ready to go. It’s particularly easy with Linux as all the software installation can be scripted, too: there’s no need ever to see a wizard or a download page. I’ve made the script idempotent now, so that I can modify and run it over and over when I want to make changes to my working environment. If I’m disciplined, it should never really be out of date again. (You could always use Puppet or Chef to do this. I think that’s probably overkill.)
What I now know for sure is that I can reproduce my working environment on a fresh laptop with almost no interaction in about an hour. The nice thing about this is that the hardware is almost unimportant. With the addition of disk encryption, I don’t really have to worry about the consequences of loss, theft, damage, or failure beyond the obvious financial calculation.
Solid state drives are a huge improvement over platters in terms of access time, but they seem to be quite prone to failure. It’s surprising, really, that a rapidly spinning disc of rust should be more reliable, but I suppose it’s just a more mature technology.
Are the advantages of an SSD worth it? Yes, probably. All technology can fail, and frequently does. If your computer is just an ephemeral incarnation of a reproducible working environment, it doesn’t matter so much.