My Tools of the Trade
November 10th, 2009I don’t blog enough and I like to write about myself so this suited me.
Hardware
- 24″ iMac
I switched to Mac about 3 years ago now. Before that I was a Linux man. 6 years before that a Windows man. I’ve basically switched every time I find the next cool thing.For me OS X is the current cool thing. Apple do a number of things that are not to my taste. But those things are the minority and overall I greatly respect their design and production principles. OS X is lovely, and it’s UNIX. It’s also UNIX above the UNIX layer: simple GUI tools that do their task well. Cocoa is an amazing toolkit, it has many widgets that no other toolkit has thought of yet. The ones that others do, it does better. I regularly observe little bits of Cocoa creeping into Gnome. Qt/KDE don’t seem to notice.
The iMac is good hardware. It was pricey, but it’s got a great screen, the components are fast, it’s the fastest computer I’ve ever had. I need more RAM though. OS X uses a lot.
24 inches is almost big enough. I can just about get two documents side by side with enough wiggle room for other windows to hang at the edges. I expect 30 to be about right for productivity. After 30 the edges will be for storing things, and later dragging them back to the work-area.
- Mighty mouse
I got suckered in by the squeeze button for Expose. If you squeeze the mouse it activates Expose. Because of this I use Expose about 4 times a minute. There is no faster way to manage windows. Task bars suck, so does the Dock (the dock is only good for the badges). I identify windows visually. I even resize windows sometimes so they identify more easily. I have several multi coloured Terminal windows.The other feature of the Mighty Mouse that I have become dependent on is the scroll ball. Sure it gunks up, and that sucks chunks. However it scrolls seamlessly, ie. it doesn’t scroll in jumps. If I move the ball 1 pixel the window scrolls one pixel. Also being able to scroll horizontally simultaneously and thus pan over 360 degrees is very useful when such things are useful. Also OS X having scroll-wheel acceleration makes the whole experience great. Slow movements of the wheel move small amounts, but as I speed up the scrolling accelerates exponentially. Just like mouse-tracking. Every OS needs this.
- Apple wired keyboard
Now I seem like an Apple fanboy. And to some extent I am. However the keyboard is my least favourite bit. I still like it. The action is good and light, the push-distance is good. The sound is good. But it doesn’t quite suit. I used to have an Ergo Kinesis but in the end it broke. I was quite attached to it though, but it’s pricey. I still seek the perfect keyboard.
Software
- Terminal
I love the command line and UNIX tools. I could switch back to Windows if they abandoned the registry, switched everything to .NET and installed the UNIX toolset and a decent shell. Well probably not.The OS X Terminal is in my opinion the best terminal emulator available.
When you resize the Terminal, it redraws all previous lines. This feature doesn’t exist elsewhere. It’s essential.
You can script it with Applescript. I have scripts for opening stuff in new tabs that I use all the time.
It’s minimal. Bugger all RAM, quick startup. And it still has good and useful translucency which I often use to read the website I am referencing while typing commands. No toolbar. What would you put there?
You can select text and copy it, and paste works. Double clicking selects the word, and it is tuned to select the right parts of the words in a “terminal” sense. That is, it includes path separators correctly, etc. Dragging the mouse after selecting words selects more whole-words correctly, with good distance buffers at the edges of the screen to ensure you can do quick movements without over-selecting. Selecting and manipulating text in the OS X Terminal is perfect.
Also it’s accidental, but the fact Mac’s keyboard meta key is Command and not Control makes it possible to use UNIX commands and Mac commands separately. This is just great. On Linux Control C would either copy or SIGINT. The latter could be unpleasant.
The open command. The open command is great. Terrific integration between the GUI and the CLI. Type `open .` to open the current directory in Finder without blocking. Type `open *.xcodeproj` to open your Xcode project. Other tools mimic it, eg. the mate command complements Textmate wonderfully. You can even pipe to it: `cat README | mate` GitX is a fabulous git tool and I use the gitx command to open it at my current branch all the time.
I have a button in Finder that opens the Terminal at that directory.
Notable gripes: I want 256 colours!
You’d think it was 1990 what with our wonderful 16 colour terminal. - TextMate
I haven’t tried Text Wrangler, but I have never wanted to either. TextMate is very good. - Homebrew
Well obviously. I did build it for myself after all. - Linkinus
Linkinus isn’t perfect, but it is the best IRC client you can get. And I have basically tried them all. It has a great default skin that minimises the amount of noise that you typically get in a IRC channel, eg. it doesn’t list a person’s name twice if they say two lines separately, and it greys out the usually irrelevant channel messages. It also has the first actually functional remember-where-you-last-left-the-channel-line-marker a feature I’ve wanted for years and a whole progression of clients never managed to implement properly. Although I’m sure IRSSI can do it. It sorts nick completion in an order that prioritises people who’ve spoken recently. - iTunes
I use iTunes for music now because it does quite a lot of the little things well. But simultaneously I hate it. It’s huge and bloated. I hate the fact it is also a sync point for iPhone and iPod. But having written a music player in my time, I can see the little details that are important to me and that it deals with well and without hassle. Actually managing music with it is painful, but you tend to only do that once so I can overlook it.For me the future is different anyway. I’m fed up managing a music collection rather than enjoying it. You can probably guess where I’m going with that based on my other activities.
- Safari
Safari is fast, but it also beach balls a lot. I find Firefox big and slow. So I’m looking forward to Chrome quite a lot.Still there are some features that are unparalleled in Safari. Eg. Find. Safari find is great. It greys out all the text and highlights the matches in bright yellow. If you google something then do Find->Next it is already set to your Google query. The cover flow history browser is the first use of cover-flow that is useful. It’s amazingly useful. I visually remember the site I am searching for surprisingly well.
- Tweetie
Tweetie is a beautiful application. But also it has enabled me to get a lot more out of Twitter. Exploration with Tweetie is trivial. Click-click-click and you are browsing some guy that’s a friend of some friend of some girl you know. - Fever
I like RSS, sort of. It’s just a massive influx of information. I long for a future where some computer knows what I’m interested in, or perhaps better, what I should be interested in and feeds it all to me in a satisfying 30 minutes per day chunk. Fever claims to filter your feeds. But that is by far its weakest part. I never use it. It sucks. Everything it classifies as Hot is stuff I was told about on Twitter already. It’s hot in the way that the front page of the Times is hot. You rarely need to read the front page, someone already told you about it and if you were interested you investigated further yourself.However the browsing and grouping UI is state of the art. However, that’s an art that is full of very poor user interfaces.
Thirty dollars is too pricey, but NetNewsWire has a rather unsatisfying user experience and has dodgy sync.
- Git and GitHub
These two have transformed Open Source in my opinion. I used to only very rarely submit patches to other open source projects. The process was rubbish. Find mailing list, create diff against what? Tarball? Subversion HEAD? Cross fingers. Get ignored. Every time I find a bug now I check for github, then I use the github gem to fork the repository at the command line. Then I fix it. Then I push. Then the other guy accepts the patch. The process is almost as streamlined as possible and the world has changed.Projects that aren’t on Github are dated and earn my scorn. I tried to contribute to Growl recently and gave up quickly enough when I realised that my patch would never get accepted. On Github my patch would sit in the network diagram, someone might use it anyway. It creates motivation and motivation is the life blood of Open Source.
- Gitx
I use Git constantly and GitX complements the git terminal command just right. Graphics where you need them, no more. The gitx tool allows you to open GitX from the terminal just like you can with the gitk tool. - Xcode
For objective-c, it’s really good. For everything else, it sucks. - Spotlight
I start all my applications with command-space-foo-enter.
I use GMail for email. I didn’t mention it above because Email is barely a useful part of my life anymore. Which is very different to even 5 years ago.
