My Development Setup/Flow

Developers seem to love to hear about how other developers work, so I thought I’d try to capture my entire environment, from end to end, in a single post. This will change (has changed) over time and depending on the project/company/whatever, but this is how things are for me right now. A couple of points up front:

  • I work for Automattic, so a lot of this is influenced by our internal policies/security/workflow.
  • I don’t always use all components of this “system”. I’ll try to detail when I do/don’t use certain parts of it as I go.

OK, here goes.

Note: This turned into a little bit of a summary of how we work internally at Automattic as well. Oh well, maybe it’ll provide some inspiration, I think we do some pretty cool things.


Mounting Remote Filesystems in OSX


Most of my work for Automattic is done on a remote sandbox machine, somewhere in Texas. I’ll often jump in and make smaller edits over SSH via vi, but when I’m doing something bigger I much prefer to work locally, using TextMate (I’m on a Mac, obviously). To do that, I need to be able to access files as if they were local, which means either duplicating them to my machine (lame, annoying) or mounting them directly.

I’ve been doing that via one of the following options, and I’m wondering if anyone out there has a better solution.

I’ve tried both for a while now. They both work. Except for when they don’t. Here’s what I’d found:

  • Transmit seems more responsive, when it’s working
  • Macfusion often crashes Finder the first time I access a newly connected filesystem (and is then reasonably stable)
  • Transmit much more randomly just stops working and gives no indication, I just can’t browse any more and have to disconnect/reconnect
  • Macfusion allows you to easily customize a neat icon for each filesystem
  • Transmit seems to have more aggressive caching (or a longer TTL on it) of filesystem details (part of what makes it feel more responsive)

So, have you used one of the following methods? Is there a configuration option I’m missing? How do you go about solving this problem?

UPDATE: I should have mentioned that I need to be able to do this over the open internet (securely), where I’m not connected directly to the same network as the server.