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.

My Code Directory

So after a couple of weeks, I’ve managed to remain mostly clean. A couple of observations:

  • It’s crucially important to keep the Downloads folder clean. This means finding a more permanent home for downloaded files quickly or throwing them into the trash. The “broken window” impact of having a anything-but-empty Downloads directory is higher than I expected.
  • Similarly, a strictly controlled Documents directory is crucial. I have “Presentations”, “Virtual Machines”, and “jQuery Doc Files” (for my book).
  • Applications has turned out to be more difficult than I expected. There’s a fine balance between keeping commonly used things at the top-level and keeping the top-level relatively small. Obviously, this is mostly obviated by LaunchBar, but part of this project is about making it a lot easier for me to understand what is on my system, so having a global trash bin isn’t really acceptable, even if it’s easy to rummage in it.
  • It’s very hard to control what gets installed in the system. I’ve tried to install as much as possible via MacPorts, just because I know I’ll be able to uninstall it later.
  • I’ve been using Adium for IRC, AIM, GTalk, and Twitter. Even though it’s not as good as the special-purpose tools for IRC or Twitter, there’s a lot of value in keeping everything in a single app, and being able to combine IRC users with their GTalk counterparts is a nice side-effect that has started to pay off over time. I definitely don’t expect everyone to do this (especially for Twitter), but I’d recommend playing with it and see if having all of your contacts in a single place is a win for you :)
  • Incidentally, part of what makes Adium for Twitter doable for me is Cotweet, which sends me a batched email every so often of the @wycats mentions on Twitter.

What about my code directory?

  • I divided the top-level into two directories: active and vendor. The active directory is for the projects I’m actively working on and have commit (or a fork).
  • That includes: rails, merb, rubygems, gem_resolver, and evented_jquery (private for now).
  • My vendor directory includes git or hg repos I’m watching and use frequently. Under vendor, I have a java directory, which includes the davinci project, jruby, jvmscript, ruby2java, and Rhino.
  • Right under vendor, I have adium, bespin, jquery, macports, matzruby, and rubymacros.

This may or may not scale over time, but again, it has the pleasing property of being able to determine, at a glance, what’s going on in my code directory for some aspect of my work. So far, organizing things reasonably well has helped me a lot to find what I need when I need it in the appropriate context.

5 Responses to “My Code Directory”

I’m liking the series Yehuda.

Sorry to go off topic but, Fabien and are are still wondering about your Ruby stack from the previous post. (see our comments)

It’s not my intention to nag about this, I just figure that you have been busy and didn’t see our comments on the other post. :)

I’m seriously interested.

I would definitely recommend AppCleaner for keeping track of applications, prefpanes and quicktime/internet plugins

and there’s a handy command-line tool pkd_delete (IIRC) that helps with (m)pkgs

I like to keep an “archive” directory in my code directory. I liberally move projects into here if I haven’t touched them in a while. This keeps the active code directory much cleaner and I can easily pull something out of archive if needed.

I wrote a Ruby app using Shoes to help me quickly organize and clear out my download folder:

With regard to the documents folder, having a working folder for your project is fine, but the entire point of the meta data based spotlight system on the Mac is to eliminate dependency on folder names to find content. Why don’t you just tag things when you save them using the finder and create your smart folders? Spotlight comments in the “Get Info” screen is a good spot to enter meta data.

Leave a Reply