Tech Life Great, now shut up

Bright, Patient Design

The creation of a Rands article goes like this. First, the idea strikes me at some random part of the day… usually in the car to or from work. I spend anywhere from a day to a month fine-tuning this idea in my head until it’s something I want to start writing about. It’s entirely possible that some great work never makes it past this stage because I don’t write it down, but my thought is, “If the idea can’t escape my head, it’s not ready yet.”

When I’m ready to start typing, I fire up TextEdit for a first draft. Yes, TextEdit. I don’t need much out of an editor for that part of the writing process. Actually, all I need is a pleasant font and bold. Code editors don’t work because they don’t have rich text formatting and I use this formatting to visually mark sections and cordon off ideas. Word doesn’t work here because it’s a cluttery mess of functionality I don’t need.

Once I’ve got something 75% of the way there, I start sending it out for content review and copy editing. (If you want to help with Rands stuff, drop me a line. Let’s talk.) This is another advantage of TextEdit — it’s Mail friendly — it pastes exactly what I typed in formatted into the message as opposed to Word which has a penchant to make fonts huge and retarded.

With feedback in hand from the various Rands support folks, I clumsily merge this feedback into TextEdit and then print out the piece and shove it under my pillow for a day. This is bake time. I gotta forget about the piece for 24 hours so I can read it again with fresh eyes before the last edit. There’s a moderately large pile of work which never makes it pass this stage, either; the thought is the same as above, “Not done”.

With a fully baked piece in hand, I begin the mechanical process of prepping the article for posting. Now I need an editor that is markup-friendly. I’ve been using BBEdit since my move to Mac OS X and my thoughts from 2004 still apply: “It’s a fine editor, but what’s the fuss about? Where’s my holy shit?”

I’m not a power user, but I know what I expect out of a good editor and, well, BBEdit is a good editor, but whenever I fire it up I feel like I forgot to read some imaginary manual called, “BBEdit Rocks. Really.” I suspect the fact that I didn’t grow up with BBEdit is part of the issue. The fact that I’m a pure Mac OS X guy with zero pre-Mac OS X experience probably contributes to feeling like I’m missing part of the BBEdit joke. Yeah, Zap Gremlins. Ha ha. I get it. Clever, but great design?

My BBEdit ambivalence allows me to check out new editors as they stream across my consciousness and, to BBEdit’s credit, it’s lasted four years. I’ve test driven several editors during that time and BBEdit remained my technical tool of choice, but it was only a matter of time until someone else knocked my socks off.

The buzz around TextMate started many months ago, but it’s when folks started to ask me to order it that I started to pay attention. There is no copy protection known to man that any bright engineer can’t circumvent, so when an engineer asks you to purchase the software they’re saying, “This is the shit. We should pay these guys for this fine piece of work.”

You bet I downloaded it.

After two steady months of TextMate, I’m happy to declare it my editor of choice because it demonstrates a design philosophy I love. Bright, Patient Design. I’ll explain.

A well-designed application gently lets you know it’s smarter than you. It goes like this:

TextMate: “Hi Rands, I’m TextMate.”

Rands: “Quiet, you, I’ve got stuff to do and no time to do it. I don’t have time to learn a whole crap load of keyboard commands. I’m just trying to format some HTML. Please stay out of my way.”

TextMate: “You bet. Just holler if you need anything.” [insert silence]

TextMate’s interface is a big huge empty space. No toolbar, a clean menu structure. You just start doing whatever it is you do and then, eventually, you need something.

Rands: “TextMate, I need to create a link and IF YOU’RE GOING TO PUT ME THROUGH HOOPS WE’RE THROUGH. I MEAN IT.”

TextMate: “Sure, see that status bar at the bottom, all the HTML commands are there.”

Rands: “Great, now shut up.”

TextMate: “You bet.”

Exploring the status bar at the bottom of each TextMate window is your first glimpse into Bright Patient Design. In a single status bar, TextMate’s potential explodes. First, there’s a exhaustive list of all the different language types supported by TextMate along with a set of formatting and template commands for each and every language. But wait a tick…

Rands: “Hey, TextMate.”

TextMate: “Yo.”

Rands: “I need to add a link.”

TextMate: “Did you check out that status bar?”

Rands: “Yeah, it’s CTRL-SHIFT-L, but I need to associate it with this URL I just put on clipboard. How do…”

TextMate: “Rands, did you use the command?”

Rands: “No, but do I need to paste the HTML and then paste…”

TextMate: “Use the damned command.”

So I do. Ctrl-Shift-L and TextMate does exactly what it’s supposed to do. It adds the HREF and it automagically pastes the URL on my clipboard into the HREF. In my book, TextMate has just taken two separate tasks and made them one. Folks, that’s a 50% savings and 50% savings is engineering nirvana. Careers are made on 50% savings.

Now, I bet BBEdit does this, but fact of the matter is, I don’t know that it does. I’ve spent four years stumbling around that program and my impression is not Bright, Patient Design, it’s Historical Cruft. BBEdit’s biggest flaw is one of its greatest assets: its history. BBEdit’s design is an amalgam of every design decision the Bare Bones Software team has made since its release for System Software 6 in the early 90s and it shows. Go click on the anchor button in the HTML toolbar and tell me what happens. That’s right, you get a dialog with every possible anchor attribute you’d ever need. That’s not bright, that’s lazy.

Bright, Patient Design is knowing that you are going to need to tell people what they want, but having the patience to know they need to discover they need it. It is choosing to stay out of their way while they make this discovery and then, when they’re ready to learn, showing them you can make their life better.

Bright Patient Design acknowledges you are going to make big decisions for your users. You are not going to present every possible bell and whistle. You are going to give them the one bell they need and you’re going to ring it sweetly and they’re going to realize that you’re a better bell ringer than they are.

After my link moment with TextMate, I realized that higher powers were present and I dug into the program. Of course every single damned command, macro, template, and snippet is a customizable script. Of course, it’s trivial to start using these scripts, but TextMate doesn’t throw this seemingly limitless customization in my face, they focus on staying out of the way while I learn at my own pace.

It’s harder than it sounds. Each time Microsoft Excel barks at me asking, “Hey Rands, it looks like you’re managing a list. BOY CAN I HELP YOU!” I want punch my flat panel monitor flat. Excel, you’re not being helpful, you’re being an arrogant prick and shoving your design down my throat. I’ve had the same reaction to just about every Wizard I’ve ever met. Wizards are a grimly unsatisfying experience where potential functionality is dangled in front of me, but I rarely end up with what I need.

Yes, I want you to decide for me, but you better make the right decision based on my need or we’re going have an even bigger problem. Again, this is really hard. Developers have to enumerate every possible user need for their application and then prioritize which of those needs are most important and how to meet them. My guess is TextMate’s developers are a collection of hardcore developers who have been using editors for a bazillion years. In those bazillion years, they got all the market research they needed. They also probably stared at BBEdit a good long time and said, “We can trim 50% of this functional crap and still have a better product.”

Yes, there is a well-defined need for applications where every single option is presented to the user. Photoshop comes to mind. Any professional application, really. You don’t need to be Bright or Patient here in your design because your users are incented to figure out how to be experts. Me, I’m in a hurry and the more your design stays out of my way and let’s me get stuff done, the happier I am and the more likely I’m going to become an expert.

19 Responses

  1. arjache 17 years ago

    I have to admit, I’m kind of surprised you find TextMate to be unobtrusive. Upon reading your review, I downloaded it and tried it out. It took me only 5 characters to run into an overzealously “helpful” feature – 4 letters from the alphabet, and an apostrophe, in an attempt to write a contraction. Bizarrely, I was seeing two apostrophes. I quickly checked my keyboard settings to make sure I wasn’t accidentally in some sort of International English mode, the sort that overload the apostrophe behaviour – but no, my keyboard settings were spot on. I checked to see what editor mode I was in – Plain Text, perfectly appropriate for writing, well, plain text. Finally I checked the options panel – for some reason beyond my comprehension, the “Automatically pair quotes” option had been turned on by default. Now, I can perhaps understand that this is desirable behaviour for programming language modes, or perhaps even for all modes as long as only double quotes are paired. But there is just no way to write coherent English with the default settings without either hitting backspace a lot or sounding like Mr. Data.

    Of course, it’s possible I somehow inadvertantly triggered this option with an obscure key combination, and I’d hate to write off a new editor based on a single option. But it bothers me to have started out on the wrong foot.

  2. It’s harder than it sounds. Each time Microsoft Excel barks at me asking,…

    Rands, this time I do not agree at all.

    While evaluating a new sw, I must see all the options in front of me. Later, I’ll decide to turn them off or make them disappear.

    When there’s simply not enough real-estate to show out all the options and the commands, damn, tell me they are there! Later, I’ll turn the warnings off.

    I do not want to do things in the way I did before, with new sw, at least not necessarily. I expect the designer found a solution to a problem, and I’m interested in seeing wether his solution fits to my problem. I’d never try to make a sw do what is not intended to.

  3. Michael Natkin 17 years ago

    Sketchup is another nice example of the BPD phenomena. Lots of power under the hood, but it is very good at making the right assumptions about the 90% case of what you appear to be trying to do. (Draw a rectangle on a surface? It will split the surface around it so you can now delete the rectangle to make a window in one keystroke). When you go to do something that is a 10% case you will then hit a wall for a moment and have to think about how to operate it. The beauty is it isn’t constantly hassling you just in case you *might* want something obscure. (And Arjache, the pair quotes thing sounds like a bad counterexample for sure).

  4. John Muir 17 years ago

    The design philosophy you described sounds very appealing from my point of view. Difficult, of course, but certainly attractive. I’d say that when developing something this way, usability testing would be even more important than usual. Such “thought through in advance” design decisions are just asking for coder subjectivity to come in and wreck the whole thing: ala so much on show in Linux. But when done well, it sounds to me like a philosophy which can easily sell itself from the enhanced Zen most users will quickly feel on meeting its output.

    Being confronted with obscure functions is one of the worst experiences an app can give a user on first impression. There’s a time and a place for that wealth of functional depth: and that’s *when* it is actually needed and the hell *out* of the way of immediate operation. Keep the deep for the deep, and let us who loathe manuals and wild goose chases have our cake and eat it!

  5. It may seem like a trivial thing, but in my experience, TextMate seems to load quicker. The difference between them may be anywhere from a second to half a second… but I noticed it and liked TextMate better for it.

    (I’ll avoid taking the bait for discussing BBEdit as a pro-level application, and therefore the need to present every possible option.)

    I think the reigning point is that BBEdit and TextMate are both text editors, and should be simple applications. A good read.

  6. If your second home is Terminal, see

    It took me 5 minutes of TextMate to get away from years of Emacs. Go TextMate!



  7. Oh, and I wrote this whole comment in TextMate, then pasted it in.

    Go to Bundles > TextMate > Install “Edit in TextMate”… (This can also be accessed from the little gear menu at the bottom.) After the tool is installed, when focused on a textarea in Safari, ⌃⌘E “opens” it in TextMate. ⌘S then sends the text from TextMate to the focused textarea. Rock.

  8. ARJACHE: The thing about inserting two single quotes in plain text was unfortunately a slip-up in the latest release — it is the Python bundle which too broadly define its set of paired characters.

  9. Robert D. 17 years ago

    I’ve fallen in love with TextMate, too, and I ponied up for it. This is coming from a guy who in college refused to pay for just about any piece of software.

    A lot of Mac people I know swear by BBEdit, but it never really felt like a HOLY SHIT product for me. Frankly, it felt like a kludgy port of the Windows program UltraEdit-32 which, although powerful, is very ugly and mind-bogglingly over-configurable. (Seriously, it has something like fifty-six thousand options in the Options dialog.)

    Getting into TextMate was a serious HOLY SHIT moment for me, because–first of all–it exemplified all that was incredibly useful while not getting in my way or forcing me to go through all of the preferences before I could start working with it (something I had to do with UE32). It also is a perfect example of the elegance with which a good (Mac) app comports itself; knowing how to just shut up and let me work until I need its advanced features, at which point its depth and intelligence becomes apparent. Would that there were such apps on Windows. Elegant, intuitive, powerful programs like TextMate are the reason I switched to Mac this year.

    The simplest way to realize how great these HOLY SHIT apps are is to think about what you were doing before. Before I switched, I was using UE32 for all of my text editing. Well, I fired up my old Windows box today and tried writing something in UE32 and I could not simply get used to all the clutter around me. It was really at that moment when I realized that I would never want to go back; that all the toolbars and dialog boxes in the world are no match for a powerful app like TextMate. I certainly hope someone takes a cue from them and creates a similar open-source version, so that the Linux people can enjoy TextMate as much as I do.

    Oh, and I wrote this whole comment in TextMate, then pasted it in.

  10. Matt V 17 years ago

    Rands recommendation and rationale were enough to interest me, but seeing one of the developers address a complaint here (in under 24 hours, no less) is enough to sell me on the product sight unseen.

  11. This is so funny to read after having our beer-driven conversation about TextMate a few months back. Ha.

  12. Robert D. 17 years ago

    Jason Speck: You just gave me another HOLY SHIT moment.

  13. I suspect the fact that I didn’t grow up with BBEdit is part of the issue. The fact that I’m a pure Mac OS X guy with zero pre-Mac OS X experience probably contributes to feeling like I’m missing part of the BBEdit joke. Yeah, Zap Gremlins. Ha ha. I get it. Clever, but great design?

    I picked up BBEdit around 1993 or 1994 and at the time it really did rock, or in BBEdit humor, ‘It didn’t suck’. I simply refused to edit all my HTML by hand in something like vi.

    Up until around 2001 I also used it as bonus filtering criteria when sifting through web development resumes. In the early days if you knew BBEdit versus the hordes hacking away in something like Notepad you were probably among the cream of the crop when doing web development was largely HTML, animated gifs, and some Perl CGIs. If you saw BBEdit on the resume they got an extra checkmark. Homesite and later Dreamweaver eventually showed up and knocked BBEdit off it’s perch as a premier HTML editor.

    With Mac OS X, BBEdit never went back and updated the look and feel other than some superficial stylings. The menus are cluttered, and I hardly remember where the HTML tools are. I still used it like Rands as my default text editor on the Mac, but I wasn’t all that impressed with it anymore.

    I switched over to TextMate about 9 months ago, and I haven’t looked back. BBEdit hasn’t been opened since.

  14. Alex M 17 years ago

    What are your feelings on Pages?

  15. “””Sketchup is another nice example of the BPD phenomena. Lots of power under the hood, but it is very good at making the right assumptions about the 90% case of what you appear to be trying to do.”””

    And here’s the heart of the matter – what Malcolm Gladwell explains here about spaghetti sauce and coffee:

    90% of what you want isn’t 90% of what I want.

    Therefore software that intuitivly does what you want is software that hits me with stupid decisions and annoying functionality.

    There is no one perfect editor, os, language or spaghetti sauce.

    This is the heart of the editor wars, the OS wars, the programming language wars, the browser wars, the religious wars…

  16. Bruno 17 years ago

    “My guess is TextMate’s developers are a collection of hardcore developers who have been using editors for a bazillion years.”

    That’s developer, singular…amazing huh?

    At least as far as the software goes. Bundles and scripts are another matter (the community around Textmate is big and growing)

  17. Alex Boschmans 17 years ago

    Textmate looks cool and has without a doubt more functionalities, but personally Smultron fulfills all my needs…

    Anybody care to let me know who has used both ?

  18. If you had told me a year ago I would be generating test xml with Ruby scripts where it grabs random words out of some hidden unix dictionary (/usr/share/dict/words) and then randomly choses some numbers in order to test the limitations of my Flash components.

    Then I would have said your joking, but thanks to Textmate here we are

    Hell its even smart enough to tell if you dragged and dropped an image onto empty CSS, into a class, or into the quotes inside a background-image and then act accordingly.

    Oh and the syntax highlighting, so beautifully mac like using transparency so you can see overlaying elements and when you select text you can see the highlighting through it. I can’t edit text efficiently on Windows now (well that and the fact you dont have the granularity of cmd/option/ctrl + left/right) because you select something and you just get a massive block of colour and your brain has to think about the makeup of whats inside this block.

  19. You should try E text editor! ( That is prety close to TextMate and has an encredible undo facility too.