I ordered a new MacBook Pro. It came two days after Xmas. 3gb RAM. 160gb HD. Sex on a stick.
Oddly enough, I have to admit that I'm not as excited about this one as my last two. Getting my first 12" PowerBook was *exciting*. Life-changing, professionally speaking. I'd sit on the back patio summer nights with a glass of wine and just explore. Then I stepped up to a 15". I got a much faster box, back-lit keys, and general goodness ensued. Those were visceral upgrades. This upgrade feels more intellectual. Oh sure, I'm loving the dual-core. 3gb of RAM on a laptop is decadent. I doubled my disk space over my last deck. But strange as it may sound, having a remote control for my laptop is one of the killer features I'm really looking forward to. (Has being a professional speaker warped me that much? Nah -- I'm just looking forward to having my cell phone be just a cell phone instead of a Clicker as well...)
As my new MBP booted, it asked if I had an existing computer that I'd like to migrate. I plugged it into my firewire HD. (You *are* backing up to a firewire HD, aren't you? SuperDuper! makes it stupid easy, and when you are living off of your laptop it's simply criminal to not have an up-to-date backup everytime you leave the house.) I could've done this with my old PB as well, but why bother booting it into Target mode when I had a target already up and running? (And yes, up-to-date.) SuperDuper! made that firewire HD an exact clone of the PB, and the new MBP couldn't care less which I used.
I chose to migrate my home directory and my network settings, but not my Applications. I'm moving from a PPC to an Intel CPU. I know that Rosetta would've run my old binaries, but I took this as an opportunity to upgrade to the latest versions of everything and thin the herd. My humble attempt to minimize bit-rot, if nothing else.
I had about 40gb of data to move over. The installer told me initially that it'd take about 4 hours, but the clock looked like it was counting down a bit too fast for that. 30 minutes later and I was staring at a brand new desktop with "?"s in the Dock where my application icons used to be. Time to get to work.
User Apps
The end-user apps re-installed without a hitch. Since all of the user settings came across with my home directory (~/Library/Preferences) and KeyChain brought all of my passwords along for the ride, the transition was seamless. I didn't have to retype a single registration key. I'm using Mail.app, so all of my email was there waiting for me. (I also use IMAP whenever possible, so that would've been Plan B had Bad Things Occurred.) Even my copy of MS Office.X had a few recent patches that I hadn't installed (or known about) until this little exercise.
- Firefox
- Stepped up to FF2. Noticed that Next/Previous buttons are missing from the QuickFind bar when I press "/". One tweak to userChrome.css as described here and I was back in business.
- NetNewsWire
- The latest version shows inactive blogs in a different color. Nice.
- iTerm
- Tabbed terminal windows for me is a must. Shift+left|right arrows to move back and forth means that I don't have to reach for the mouse all the time...
- Skype
- Cross platform IM with my Windows brethren at its finest. I think that the vox chat is better than iChat -- less dropping with less bandwidth. I'm going to try a bit of Windows/Mac video conferencing now that 2.x is out. I'll let you know how it goes.
- MS Office
- It's fine. What more can you say about it? It's a requirement for business, and I have full binary compatibility with all of those Windows users out there. I can't complain, but I'm certainly not doing backflips. There are a couple of patches that claim to make the apps more stable. We'll see. We'll see.
Text Editors and IDEs
Next up were the text editors and IDEs. It's sad that I have four, but each does something unique. Smultron I like for a simple, pretty text editor. It does syntax coloring and is tabbed, which often times is all that I'm looking for. TextMate is fast becoming my editor of choice -- fast, fast, fast. The Ruby/Rails support is what brought me over, but the Groovy/Grails support is what might keep me there. IntelliJ is still where I go for my Java dev, but that is getting less and less these days. And finally, SubEthaEdit. I've been pairing up remotely with another developer, and I have to tell you that SEE does a bang-up job. It's really cool being able to simultaneously edit the same file across two time zones. I've dropped GVim for now, but it might bring my count back up to 5 if I miss it too much.
Utilities
These are the tools that knock the rough edges off of OS X. It's interesting -- as the OS matures, the number of tools I run has dropped dramatically. I'm down to three right now.
I've gotten absolutely hooked on virtual desktops. I used the prosaically named Desktop Manager on my last two PBs. I never had a problem with it, despite the dire "Alpha-quality" disclaimers all over its home page. But it seems to be abandonware at this point. So I decided to give VirtueDesktops a whirl. They say that they are based largely on the DM codebase, and they haven't disappointed yet. In fact, they have some clever new features. I can click on an active app in the Dock and VD will flip to the correct desktop for me. Pretty cool stuff.
I've already talked about SuperDuper! a bit. I was doing a "cp -R ~ /Volumes/mybackup" for a while, but the fact that SD clones my laptop is what won me over. I used it free for about 6 months, and then got tired of waiting 2-3 hours to back up my entire PB. Once I bought the full version, I regularly get 20 minute backups. This software is just no-brainer.
The only other utility I use by the hour is KeyCue. Hold down on the Apple key and it will show you all of the hidden keystrokes you can use in the active app. For example, in a Finder window you can use Apple+1, 2, and 3 to flip between Icon, List, and Column view respectively. Picking up on those hidden key combinations has paid for this little app many times over.
Server Apps
On my old laptop, I added my servers (Tomcat, JBoss, etc.) to /Library. (After all, that's where Apple put it -- good enough for them, good enough for me, eh?) This made it a challenge to migrate to the new laptop. This time around, I created /opt on the new box. We'll see if it makes it any easier to find just my stuff the next time I go through this little exercise.
I upgraded Tomcat to 5.5.20. Since Java5 has been out for well over a year, and Apple keeps the JDK updated along with the rest of the OS, I decided to roll with it. I was running Tomcat 5.0.28 on my last box. The move to the new version gave me the excuse to move over just the webapps that I wanted.
Interesting quirk: Tomcat 5.5 looks at the JRE_HOME environment variable, not JAVA_HOME. "$TOMCAT_HOME/bin/startup.sh" was failing silently, but "$TOMCAT_HOME/bin/catalina.sh run" quickly showed me the error. I tweaked my ~/.bash_profile, and was back up and running:
### java
JAVA_HOME=/Library/Java/Home
JRE_HOME=$JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH JRE_HOME
While I was here, I bit the bullet and did all of the StartupItem stuff that I had never gotten around to on the other two boxes. This dated article walked me through it, and this recent slide-deck confirmed that nothing much had changed.
Of course since I moved $TOMCAT_HOME, JSPWiki couldn't find all of its stuff. (I run a local wiki to grab quick notes. No wiki spam, no authentication hassles, and I always have it with me.) An upgrade to the latest version shows some nice changes to the L&F (tabbed interface) and some beefed up security. I won't be using the latter, but I appreciated the former right away.
Ruby
Getting Ruby up to speed was where I spent most of my time. Even though I don't use the IDE, XCode was first on my list. I decided to go with the latest and greatest download from the website instead of the older bits I already had on CD. Let me tell you, nearly 1gb of bits marching single-file down the pipe was no treat to watch. It makes you appreciate BitTorrent all the more.
I followed the steps here to build Ruby from source. There is no better bootstrap HowTo out there, IMO. Only the version numbers have changed since I last ran through it over a year ago:
There are a number of other libraries that need to be built. (7 or 8 altogether.) Follow the HowTo step by step, and you won't go wrong. You'll even get an up-to-date MySQL installation out of the deal.
To smoke-test your installation, run thru this quick tutorial. You'll have a quick and dirty Rails app up and running and the peace of mind knowing that all the pieces are in place.
Of course, Mongrel must come next: "sudo gem install mongrel".
Run your sample app using mongrel just to be sure.
Groovy/Grails
Groovy version 1.0 shipped on Jan 2nd. Might as well have the fresh bits installed. One "tar xvfz" in /opt, one "ln -s groovy-1.0/ groovy", a bit of .bash_profile tweaking and Groovy was ready for action:
### Groovy
GROOVY_HOME=/opt/groovy
PATH=$PATH:$GROOVY_HOME/bin
export GROOVY_HOME PATH
Grails.latest is 0.3.1 (although 0.4 should be out any day now). A quick walk through the QuickStart confirmed that everything was OK here. There is just nothing finer than having a complete environment in a box: webserver, database, the whole 9 yards. Then being able to type a simple "grails war" and have something ready for production is too cool. Check out the obligatory screen casts to see how quick it really is, and swing by aboutGroovy.com to keep up with the latest.
DarwinPorts
My final task was to get Subversion up and running. There is no joy in compiling that baby from source. (Welcome to Dependency Hell...) On my last two PBs, I used Fink to install native OS X apps with all the myriad of dependencies. It's got a nice GUI, but the binary versions of the installable apps seem to lag the latest stable source. I decided to give DarwinPorts a go. I've been doing a bunch of apt-getting on my Ubuntu server, so the lack of a GUI didn't scare me one bit.
In a master stroke of irony, the latest version of DarwinPorts (1.3.2) is only available as source. So, off to do the configure/make/make install shuffle one last time. One quick "sudo port -d selfupdate" to make sure that I have the latest versions of everything, and then a "sudo port install subversion" to get Subversion.latest (1.4.2) and all of the dependencies. It was really nice letting someone else do all of the dirty work for a change.
Conclusion
Yeah, I still have some GIS libraries to get installed. I'm sure that there is a utility or two that I've missed. But this box is for the most part ready for prime time.
So, out with the old, in with the new. The transition was a bit more work than most people go through, but it was completely self-imposed and well worth the effort. I'll keep my old laptop around for another couple of days, then wipe it clean and leave it by the couch. (Either I'll use it while my son watches cartoons, or he'll use it while I watch the Daily Show.)