Yehuda Katz is a member of the Ember.js, Ruby on Rails and jQuery Core Teams; his 9-to-5 home is at the startup he founded, Tilde Inc.. There he works on Skylight, the smart profiler for Rails, and does Ember.js consulting. He is best known for his open source work, which also includes Thor and Handlebars. He travels the world doing open source evangelism and web standards work.

Quest for a Clean Machine

My last machine finally died a slow, painful death, so I have the opportunity to start with a new, fresh machine. As usual, I begin with high hopes of keeping things clean and easy to navigate, but I anticipate failure. In an effort to stave off that failure, I’ll be blogging specific techniques (successful and failed) that I use to try and keep things organized.

My steps so far:

  • Update the system to the latest OSX. Repeat until there are no updates left.
  • Install XCode. As an iPhone developer, I downloaded and installed the latest XCode with iPhone support. Failing that, I would have just downloaded the latest from Apple.
  • I then went into the Help menu in XCode, opened Help, and subscribed to Core Library, Java 5 API Reference, Apple XCode 3.1, iPhone OS, and iPhone OS 3.0.
  • Install MacPorts.
  • Install AppZapper. This is the first thing I haven’t done before. AppZapper will remove other traces of an application, in addition to the application icon itself from /Applications.
  • Install LaunchBar. This is equivalent to QuickSilver, but I prefer LaunchBar. After installing LaunchBar, go into the Advanced Tab in Help and select “Hide Dock Icon”. This activates a hack that hides LaunchBar from the dock, while keeping it running.
  • Install Google Chrome. This isn’t strictly necessary, but I’ve been playing with Chrome for the past few days and the fact that it avoids long-term memory leaks has helped reduce the long-term degradation of a machine that eventually needs a restart.
  • Install and setup Adium.
  • Install bash-completion via ports. sudo port install bash-completion. After completing, add . /opt/local/etc/bash_completion to ~/.profile. Also, add +bash_completion to /opt/local/etc/macports/variants.conf. This will cause all future ports to also install their bash completion, if available.
  • Install git-core via ports. This will include bash_completion, because we added it to the default variants above.
  • Update Rubygems. gem update --system. Wait for it to bulk update your gems. This should be the last time you ever have to do this (thanks Eric!)
  • Use Calaboration to sync my Google Calendars with iCal.
  • Transfer music from backup to iTunes and setup iTunes to be using the correct user.
  • Resync my iPhone with iTunes.
  • Remove System Preferences and Time Machine from my dock.
  • Trash downloaded files from my ~/Downloads.

Next, I’ll talk about how I’m organizing my Code directory :)

10 Responses to “Quest for a Clean Machine”

I’m a dork but I love reading about how other people setup their machines. Thanks for sharing :) (Of course in this case I’ll have to wait till I eventually get a Mac :P)

You should try AppCleaner as a free alternative to AppZapper that works great!

Yes, thanks for sharing Yehuda. I get into this stuff too.

I tell you, I wish I knew what I knew what I know now when I setup the development environment on this machine.

It makes me want to re-install my OS. :)

Thanks for the write-up! Many of these steps were already part of my routine, but particularly the bash completion instructions were very helpful. Guess I should rebuild git to benefit from this.

I’m a die-hard tcsh user.

Some little known files included in Mac OS X make tcsh command completion (among other useful features) several orders easier to set up. They’re located at /usr/share/tcsh/examples. They were written by Wilfredo Sanchez at Apple.

@Yehuda What I’d love to know is how do YOU setup your ruby stack.

Do you use Macports?
Do you build yourself?

I’ve been taking the everything with MacPorts approch but, I get tired of having to sudo everything all the time.

I tried chmoding /opt to 775 once but, I remember that doing some weird stuff. I may have just needed to do it recursively but, I was afraid I might piss something off.

What are your thoughts on that is it heresy? :)

Have you tried the Webkit Nightly builds? I switched from Firefox a couple months ago (before there were OSX Chromium builds) and haven’t looked back.

Maybe you don’t know this, or you prefer the old GCal setup but Google has an installer now for iCal support and it works between the iPhone and your desktop (with Google’s ActiveSync for mobile devices).

Personal Preference but I mostly compile my own libs and software packages (emacs, multiple rubies) under /usr/local so that when I do a new system install, I just copy over the old ones. As well as small, user exclusive apps under /Users/xxx/Applications for the same reason.

Nice stuff, i learned something :)

But, like Andy Ferra, i was wondering what ruby stack you are using. Apple’s one provides a broken libreadline and is now outdated. I thought it was nothing, until i loss a few hours trying to get merb’s nanite working.

Like others have mentioned, I too enjoy reading about things like this. Thanks for sharing, and I look forward to hearing your follow-up re: your Code directory. :)

Leave a Reply