Yesterday my Mac's filesystem had a bad day. Not just an, "I don't want to get up this morning day," kind of day but the kind of day that ends screaming on the roof, hostage in hand, while the police try to talk you down on a megaphone and the SWAT team creeps around from behind to administer the final solution.
This is the first time I've seen Disk Utility give up and say, "Sorry bro, I can't fix this. Back up what you can and run for your life." No matter, I make backups and most of my data is sync'd with remote services and systems. Two hours later, I've got a freshly formatted Lion system and a small handful of irreplaceable backup files.
And I'm standing at a crossroads: restore from Time Machine, or start from scratch and copy what I need? I decide to go the road less traveled and start with a blank slate.
It was actually liberating to realize how little I need outside of my ~/.vim and ~/.vimrc, and how easy it was to grab those pieces using GitHub & Mac Homebrew. I accidentally lost my SSH config but, no matter, I took ye olde backup (that thing was dusty) and stripped out everything but the dozen-odd hosts that I care about connecting to.
Here's what I installed, in approximate order:
• Factor (http://factorcode.org). I can't live without a Factor environment on hand. I love Factor and have a few indispensible personal tools I've written with it.
• Dropbox — no explanation needed.
• 1Password — the keys to the kingdom.
• XCode Command-Line tools. A few hundred megs vs. the full install, and I don't do Mac or iOS app development.
• Mac Homebrew — cure for the bad old days of Fink/DarwinPorts.
• GitHub for Mac. At first I thought it was gimmicky, but being able to click "Clone in Mac" from the web browser any project and have the repo on my hard drive seconds later is too awesome.
• Tapped the homebrew duplicate repository and compiled the latest Vim. Why didn't I use the vim that comes with Mac OS X? No clipboard register, that's why, and I like my vim with all the fixin's.
• fish (via brew) — my favorite shell for home. Universal variables, friendly colors, and intuitive command line completions make me happy. Setting PATH to prefer the brew versions of utilities over the built in ones is as simple as
set -gx PATH /usr/local/bin $PATH; set -U PATH $PATH — no config files to fuss with.
• Spotify — Gotta have music.
• NetNewsWire — Feed me.
• Cloud.app — instant screenshot uploads that put the link on my clipboard. What's not to like?
• Alfred (alfredapp.com) — Won my heart after LaunchBar. Hotkeys for all of my most used apps.
• Propane (propaneapp.com) — such an awesome app. Completely worth $20, I keep it open to chat with my team whenever we're working.
• Chrome — which, with the profile associated with my work account, downloaded my bookmarks along with my favorite extensions: Vimperator, 1Password, and Block Yourself from Analytics.
• Sparrow — This was an interesting decision. I've used Mail.app for a long time but have gotten sick of its bloat and slowness. I decided not to restore my multi-gig mailboxes (it's all on Gmail/Google Apps anyhow) and use a lightweight client.
The main feature keeping Mail.app in my toolbelt was S/MIME (encrypted) email support, but I found an acceptable replacement in the S/MIME support in iOS 5, for the few times I need to read and reply to a sensitive email.
Things that I love about Sparrow:
• Gmail keyboard shortcuts (hjkl!)
• Wicked responsive.
• Growl notifications
• Easy to quickly reply to email from friends or team members who need a timely response.
• TextExpander — I have some cool abbreviations that are now hard-wired to my fingers, so I gotta have it. My useful abbreviations were in Dropbox so it took no time to get it going again.
• NValt — a version of Notational Velocity that has some cool tricks like Markdown formatting. Discovered by accident when I went to reinstall NV. So far, I love it.
• iTerm2 — it seems a little faster than Terminal, and it makes pretty colors with Solarized (link).
Things I got rid of:
• MacVim — nice, but since I'm always swapping between a terminal window and vim, why not just run vim in the terminal? With the "all the fixin's" version I built and iTerm I have mouse and clipboard support, so there's reason to use it anymore.
• XCode / Developer stuff. I need a gcc/clang toolchain, not a full iOS development environment WITH documentation AND examples.
• A lot of cruft that's accumulated in the form of checked out projects, dotfiles, prefences, apps and brew packages that I don't, preference panes that do various unauthorized things to the underlying parts of OS X. I don't even miss them.
• All told, 25G of crap that I wasn't using.
I guess that it's not such a minimal list after all, but the environment feels and lightweight and fast. Maybe not awesome (awesome.naquadah.org) on Arch Linux fast, but fast. With the SSD I upgraded this MacBook with last year Lion is as quick as ever. But is it quick enough? Of course not!
Out of curiosity I disabled swapping according to this tip (http://hints.macworld.com/article.php?story=201106020948369). Since I'm not running Mail.app and have traded down in terms of memory-hungry apps, I figure my 3GB of RAM should be enough.
Reboot, and it's like magical gnomes climbed inside my computer and made every chip 10x faster. Holy wow. All of the frustrating slowdowns from the past few months? GONE. Any hint of slowness? Banished by a passing breeze, a breeze that smells like awesome win.
You know, it's all about responsiveness. A 2GHz CPU and 3G of RAM doesn't mean anything if the machine randomly hangs when I'm doing a task. When I press keys and move the mouse the computer needs to DO something, NOW. This is something that Apple has always cared about and it's still one of the best things about my Mac. It's in Jef Raskin's seminal work on user interface design, and it's considered a primary feature of an interface. If a tool doesn't respond right away when I use it, then I hate the tool.
Right now? No hate baby, nothin' but love for my new/old rig. :-)