g r o t t o 1 1

Peeve Farm
Breeding peeves for show, not just to keep as pets
  Blog \Blôg\, n. [Jrg, fr. Jrg. "Web-log".
     See {Blogger, BlogSpot, LiveJournal}.]
     A stream-of-consciousness Web journal, containing
     links, commentary, and pointless drivel.


On My Blog Menu:

InstaPundit
USS Clueless
James Lileks
Little Green Footballs
As the Apple Turns
Entropicana
Cold Fury
Capitalist Lion
Red Letter Day
Eric S. Raymond
Tal G in Jerusalem
Secular Islam
Aziz Poonawalla
Corsair the Rational Pirate
.clue

« ? Blogging Brians # »





Book Plug:

Buy it and I get
money. I think.
BSD Mall




 10/6/2003 -  10/8/2003
 9/29/2003 -  10/5/2003
 9/22/2003 -  9/28/2003
 9/15/2003 -  9/21/2003
  9/8/2003 -  9/14/2003
  9/1/2003 -   9/7/2003
 8/25/2003 -  8/31/2003
 8/18/2003 -  8/24/2003
 8/11/2003 -  8/17/2003
  8/4/2003 -  8/10/2003
 7/28/2003 -   8/3/2003
 7/21/2003 -  7/27/2003
 7/14/2003 -  7/20/2003
  7/7/2003 -  7/13/2003
 6/30/2003 -   7/6/2003
 6/23/2003 -  6/29/2003
 6/16/2003 -  6/22/2003
  6/9/2003 -  6/15/2003
  6/2/2003 -   6/8/2003
 5/26/2003 -   6/1/2003
 5/19/2003 -  5/25/2003
 5/12/2003 -  5/18/2003
  5/5/2003 -  5/11/2003
 4/28/2003 -   5/4/2003
 4/21/2003 -  4/27/2003
 4/14/2003 -  4/20/2003
  4/7/2003 -  4/13/2003
 3/31/2003 -   4/6/2003
 3/24/2003 -  3/30/2003
 3/17/2003 -  3/23/2003
 3/10/2003 -  3/16/2003
  3/3/2003 -   3/9/2003
 2/24/2003 -   3/2/2003
 2/17/2003 -  2/23/2003
 2/10/2003 -  2/16/2003
  2/3/2003 -   2/9/2003
 1/27/2003 -   2/2/2003
 1/20/2003 -  1/26/2003
 1/13/2003 -  1/19/2003
  1/6/2003 -  1/12/2003
12/30/2002 -   1/5/2003
12/23/2002 - 12/29/2002
12/16/2002 - 12/22/2002
 12/9/2002 - 12/15/2002
 12/2/2002 -  12/8/2002
11/25/2002 -  12/1/2002
11/18/2002 - 11/24/2002
11/11/2002 - 11/17/2002
 11/4/2002 - 11/10/2002
10/28/2002 -  11/3/2002
10/21/2002 - 10/27/2002
10/14/2002 - 10/20/2002
 10/7/2002 - 10/13/2002
 9/30/2002 -  10/6/2002
 9/23/2002 -  9/29/2002
 9/16/2002 -  9/22/2002
  9/9/2002 -  9/15/2002
  9/2/2002 -   9/8/2002
 8/26/2002 -   9/1/2002
 8/19/2002 -  8/25/2002
 8/12/2002 -  8/18/2002
  8/5/2002 -  8/11/2002
 7/29/2002 -   8/4/2002
 7/22/2002 -  7/28/2002
 7/15/2002 -  7/21/2002
  7/8/2002 -  7/14/2002
  7/1/2002 -   7/7/2002
 6/24/2002 -  6/30/2002
 6/17/2002 -  6/23/2002
 6/10/2002 -  6/16/2002
  6/3/2002 -   6/9/2002
 5/27/2002 -   6/2/2002
 5/20/2002 -  5/26/2002
 5/13/2002 -  5/19/2002
  5/6/2002 -  5/12/2002
 4/29/2002 -   5/5/2002
 4/22/2002 -  4/28/2002
 4/15/2002 -  4/21/2002
  4/8/2002 -  4/14/2002
  4/1/2002 -   4/7/2002
 3/25/2002 -  3/31/2002
 3/18/2002 -  3/24/2002
 3/11/2002 -  3/17/2002
  3/4/2002 -  3/10/2002
 2/25/2002 -   3/3/2002
 2/18/2002 -  2/24/2002
 2/11/2002 -  2/17/2002
  2/4/2002 -  2/10/2002
 1/28/2002 -   2/3/2002
 1/21/2002 -  1/27/2002
 1/14/2002 -  1/20/2002
  1/7/2002 -  1/13/2002
12/31/2001 -   1/6/2002
12/24/2001 - 12/30/2001
12/17/2001 - 12/23/2001
Friday, May 3, 2002
02:04 - See, this is the kind of thing I'm talking about.

(top) link
So at about 7:30 PM today, this being a Friday evening, I was sitting at work getting my iMac all outfitted for CVS and code building. (David had just joined the cabal, setting up his new $999 iBook today for the same purpose-- so I figured I should follow suit, especially considering the CVS chalk-talk Chris had just given a couple of days ago for the benefit of us tool-writing QA people.) Don't ever tell me I don't know how to party.

I installed the free Developer Tools from Apple; it comes with CVS, among many other things (such as ProjectBuilder, the descendant of the NextSTEP framework builder application). Then I downloaded a tool called Concurrent Version Library (CVL), a CVS front-end for OS X (and Windows and OpenSTEP) which automates the checkout/edit/checkin process of CVS. Very nice.


Then I noticed a tool in the Developer folder: FileMerge. I opened it up. Ah, very nice-- you select two files (either by file-browsing, or by dragging the two files into two little wells). (It's also fired-off from the Comparison tool within CVL.) Then you press the Compare button.

And... well, it's a nice graphical diff utility. But wait... uh, hold on. Look... look at how it displays the differences. Gray bars that expand smoothly with those little curves in the central gutter, with an arrow indicating which version of that diff to use. You can select each one and specify the behavior. The differences are marked in the scrollbar with little tick marks.

And... look what happens when you scroll down. The diffs... they smoothly flow upward so the diffs in the middle of the screen are visible straight-across. They shift smoothly-- with the curves bordered by antialiased lines that morph to the new shape as you scroll.

This is a diff tool?!

Chris was driving the computer as we discovered this-- and when we saw the behavior of the diff bars as he scrolled down, he and I both erupted in laughter-- the kind of raucous, exhilarated laughter of discovery, the kind of laughter you emit when you see an impossible injoke in a movie, or a gorgeously-turned Lileks phrase, or some righteous caption-contest entries, or a masterful mind-warp like at the end of Fight Club or The Game. We sat there playing with it for a good five minutes, not believing what we were seeing. Then Chris said, "Okay, who signs POs around here? I have got to get myself a Mac."

See, this is exactly the kind of thing I'm on about. This is a diff tool-- one of those things that's so pedestrian and so rudimentary that the full functionality that the everyday coder needs from it was present in command-line tools ten years ago. But when Apple engineers come along and get their hands on it, they see the opportunity to make it damned cool-- using the advantages of Quartz and Cocoa to their fullest, they throw in a feature which-- while it doesn't add more to the functionality of the software than, say, a simple straight line or two from one side to the other would accomplish-- has the elegance and beauty and style to make a jaded programmer's heart go boompdy-doomp. The functionality was there in Quartz, it was easy to add, it made it look really bloody cool-- and they didn't go overboard. They did it in such a way that you have to just sit and stare and play with it, a big dopey smile on your face, thinking ahh, yes... this is the way it's supposed to be. It doesn't get in the way. It doesn't slow things down. It just makes the programmer feel like someone just turned on the air-conditioner on a sweltering summer day.

This isn't Microsoft's every-function-on-the-planet-plus-ToolTips-on-every-damn-thing kind of design ethic. This isn't the slavish drudgery of producing gray tools for dead-eyed coders to use late into the night in order to meet an impossible deadline.

This is the joy of creating, made manifest in the very tools that the creators themselves use.

I don't think I've ever before seen such a clear, simple, self-evident illustration of what makes Apple Apple-- and how impoverished the technology industry would be without them.

Back to Top


© Brian Tiemann