Uses This

A collection of nerdy interviews asking people from all walks of life what they use to get the job done.

A picture of Timothy Wood

Timothy Wood

CTO and co-founder (The Omni Group)

Posted in developer, mac

Who are you, and what do you do?

I'm Tim Wood, one of the founders and the CTO of The Omni Group. I work with developers on all our product teams as needed, and our frameworks for Mac and iOS. My most recent projects have been OmniPresence, our new document syncing system, OmniOutliner 2 for iPad, and OmniOutliner 4.

What hardware do you use?

My main work machine is a 15" Retina MacBook Pro. At the office, it is attached to a 27" Thunderbolt display on a VESA arm. Next to that, is a Mac Pro with a 30" Cinema Display, and a couple iPads for testing document synchronization. In our recent office move, we switched over to adjustable height desks, so I typically work standing in the morning and sit down after lunch. Also tucked away in my office is a Mac Mini with an attached Drobo, acting as a CrashPlan server for itself, my laptop, Mac Pro and (importantly) my home machines. Finally, there is my 5.1 system, NHT speakers all around, and a Rega turntable. During the construction of our new space, extra sound insulation may have been added to my office...

At home, I use a Mac Pro and a 30" Cinema Display. It's slower than the laptop these days, but has a huge display and bulk storage for family videos and pictures. I have a new Mac Pro on order, but haven't decided when to get a 4K display yet.

My wife is a photographer and musician, so she generates a fair bit of data that needs backing up. This gets stored on a Mac mini with a Pegasus Thunderbolt RAID, and then cloned via SuperDuper! to 3TB drives in a drive dock, which I rotate back to the office. It also gets backed up to CrashPlan's server and to the previously mentioned CrashPlan server at the office. We have various other Time Machine drives for each workstation.

And what software?

The vast majority of my time is spent in Xcode and Terminal (zsh, but fish looks like it merits a try). We have some internal applications for bug tracking and monitoring our continuous build system that I always have running, as well as most of our published applications.

I use TextMate 2 for random scripting and viewing small diffs, with Kaleidoscope for larger diffs. 1Password is indispensable for keeping track of long random secure passwords. FastScripts gets daily use for kicking off repetitive tasks (like automatically archiving read messages in Mail). Alfred is my app launcher of choice. BusyCal holds my calendar. Whenever I need to edit images, I go to Acorn. And, while working on AppleScript support in our apps, Script Debugger is amazingly useful.

Finally, for open source package management, I'm currently using homebrew.

What would be your dream setup?

Refreshing the Mac Pro is a nice step, but there is still a lot of room left for improvement. I'm a big fan having my laptop always with me, and always up to date. Cloud storage and sync is great for some sorts of documents, but doesn't really help for in-progress changes to source code. I could do some silly dance to commit to a personal branch each time I want move between machines, but that is enough pain that I don't bother most of the time.

Instead, I would love the ability to simply connect a 20Gbps Thunderbolt 2 cable between my laptop and Mac Pro and suddenly have it gain super powers. Apple's multi-core toolkit (GCD) could gain the ability to handle side-effect free tasks on the external CPUs with application provided services (XPC) that get copied to and run on the box. Unplug your laptop and any in-flight operations just get restarted locally in the laptop. On the display side, the system could switch to queuing commands for rendering on the Mac Pro GPUs to its attached display while the laptop remains closed.

On the storage front, there are several things I'd love to see:

  • Touch sensitive connectors for removable storage. Grab the connector and ejection is requested automatically, with visual and audible (or haptic!) feedback indicating you can safely disconnect. Even better, maybe we could have filesystems and software that supported anytime ejection!

  • Consumer-grade bulk storage that protects against silent corruption. I might break down and get a rack-mount FreeNAS box for ZFS at home, but with the size of consumer storage it seems crazy that every OS doesn't have end-to-end checksum validation and self-healing. Cloud storage would solve some of this, but it is too expensive for many people with large data sets (read: lots of photos of kids).

  • A filesystem with snapshots supporting diffing (ZFS or otherwise), copy-on-write, and predicated commits (like Software Transactional Memory). Hacks like NSFileCoordinator and FSEvents are full of edge cases and tradeoffs that make writing syncing and backup software (or really, any software that deals with files) harder than it should be.