Getting pragmatic, part 1

Going as Microsoft-free as possible

When it comes to computer religions — Mac OS vs. Windows vs. various Linuxen — I tend to be rather ecumenical, always preferring to pick what suits both me and the job. As a result, I get called a Mac zealot, Bill Gates sellout (especially since I made a living as a VB programmer for years) or Linux weenie by various parties.

I’m especially suspicious of knee-jerk Microsoft-bashing, and this is in spite of the fact that yes, sometimes Microsoft products will drive you crazy. Microsoft may not be original, but they’re pretty good at taking good ideas and turning them into mass-market products, sometimes pretty good ones at that.

I prefer a pragmatic approach. If a customer’s systems are based on a particular operating system, you develop stuff that will work on that OS. Back in my consulting days, I ended up writing custom “productivity software” — stuff that people in offices use — for customers who were running Windows. My business partner, a very rabid Mac-head kept trying to convince the customers to purchase a Mac version in spite of the fact that they had no demand for a Mac version and would double the development time. “But the Mac is better!” was pretty much his standard retort. While I do agree that the Mac experience is considerably more pleasant, a more pleasant experience that will never be experienced by your customer base is not an experience at all.

So, after all this preamble, it might seem strange that I would declare that I’m attempting to go as Microsoft-free as possible. However, it’s not politics or religion that led me to take this initiative, it’s interoperability. I’ve got three OSs on the go, my main machine is now a Mac, and I work for a company that sells Web services. “Interoperability and universality” is my mantra.

Microsoft products, by default, save their data in binary formats whose details are not generally known to the world outside the Redmond campus. You can, of course, save your files in less proprietary formats, but this approach is a pain for one or more reasons:

  • Oftentimes, you lose things like formatting. It makes one suspect that it’s their way to lock you into doing things their way.
  • The format is tainted with all sorts of extraneous Microsoft-specific junk. Try exporting a Word document as HTML and look at the junk that gets thrown in. It can look like crap on non-IE browsers.
  • Saving is painless, exporting is not. To save, you just hit “control-s” or “command s”. Exporting usually takes you to a dialog box, where you must exporting options.

The Pragmatic Programmer — it should be required reading for anyone who writes code — strongly encourages programmers to embrace plain text. It’s readable by humans, all present platforms and will be readable by future ones. Written properly, it has meaning, even when it is separated from the application that created it. It can also be crunched by simple utility scripts without having to resort to any translation magic.

Hence, I’m choosing applications that embrace The Power of Plain Text. I’ve listed the ones I’m currently using below.

  • Mail

    The Mail application that comes with Mac OS X is pleasant to look at, nice to work with, integrates with the Address Book app and has a pretty good junk mail filter. I’ve been working with it steadily since buying my 12″ G4 Powerbook a couple of weeks ago and have been pretty pleased with it.

  • Thunderbird

    I’ve also got Mozilla Thunderbird installed on my Powerbook, as well as the Linux (Red Hat 9, if you must know — the more hardcore of you can feel free to start hurling tomatoes) and Windows XP partitions of my Athlon 1500-based HP desktop computer at home. It’s a pretty good mail program — my boss Ross uses it — and I used it for a while when the HP was still my primary machine. I switched to Mail because it integrates very well with two other apps on the Mac: Address Book and iCal.

  • Address Book

    Address Book is a wonderful little app for keeping track of people. I love its three-pane format, where the first pane is categories of people, the second lists the people in the currently-selected category, and the third shows the currently selected person’s “business card”, complete with photo.

    The photo feature is great for remembering people whom you don’t know very well or with whom you’ve had only brief real-world contact. In my line of work — developer relations, which involves networking with other computer geeks — this is incredibly valuable. That, and the “notes” section, where you can keep write things like “This person’s significant other’s name is so-so”, “Big fan of this particular author”, “Allergic to peanuts” or “Avoid at all costs”, are incredibly useful to me.

  • iCal

    iCal is a pretty decent calendar, but it ran too slowly on my iBook (the 500Mhz dual-USB model) to be of any use. On the Powerbook, which has a G4 running at a higher clock speed and twice as much memory as the iBook, it runs at a decent speed. Once again, I’m using it because it integrates nicely with Mail and Address Book.

    I do have a gripe with iCal — it’s still a little buggy. Resizing an event on your calendar sometimes causes it to be stuck permanently in “resize” mode, and the only way to deal with it seems to be quitting the program. When you relaunch the program, the event you resized has vanished.

    Apple seems to be under no illusion that iCal doesn’t need work: it’s the only Apple app I’ve seen so far with a Provide iCal Feeback… item under its application menu.

  • OmniOutliner

    Whenever I do note-taking or scribble down design ideas, either by hand or on a computer, I tend to organize things hierarchically. This is especially true for programming; consider this condensed excerpt from my notes for the back end of an application I recently worked on:

    Stored Procedures

    • People
      • Add
      • Edit
      • Delete
      • Get people in booked in seminar x
      • Get person’s seminar attendance history
    • Seminars
      • Add
    • Bookings
      • Add

    When using a computer, I used to do this sort of thing in a text editor or word processor. With a text editor or word processor, you get the advantage of universality, but the contexts of different points — that is, which item belongs to which — is all in the formatting and not really part of the document. With Word’s outline tool, you get a document stored in a format that can’t be read by anything but Word. You might be able to get a script to read it too, if you invoked the right ActiveX magic.

    Thankfully, there’s OmniOutliner, a program that got bundled with Mac OS X. It’s a handy little outlining tool that can saves its outlines in XML and exports to a standard XML format called OPML (Outline Processor Markup Language) as well as clean non-Microsoft-tagged HTML or plain old text.

    There’s all kind of potential for a tool like this, from plain old note-taking, to building the skeleton of applications. I’ll have to write more about in a later entry.

  • BBEdit

    BBEdit is by far the best text editor out there, period. Oh, yes, you can play Tetris and Adventure in Emacs and compose open source haikus in vi, but it has what you expect from a programmer’s text editor, including multi-language syntax colouring, auto-indent, indenting/unindenting/tab-i-fying/de-tab-i-fying/multifile search and replace/regex-based search and replace and so on.

    If you want to get work done on something that feels like a Mac and not too concerned about getting geek cred while working on your computer in Mom’s basement, get BBEdit.

  • Emacs

    After pimp-slapping all the other text editors, I will say that my favourite 1970’s-flavoured text editor is Emacs. Introduced to me by my professor (and software engineering keeper-of-the-flame) David Alex Lamb at Queen’s (a.k.a. Crazy Go Nuts) University, I find its command structure and relative modelessness more comprehensible than vi (I write this as I don my vi-flame-retardant underwear).

    If you’ve got Mac OS X, you might be interested in these GUI versions of Emacs, meant to close the XEmacs gap.

  • OpenOffice

    Sooner or later, you’re going to be cranking out or reading someone’s TPS reports, and more often than not, they’ll be in some Microsoft Office format. You have two options: get your paws on Office, or get your paws on something that can read its hidden and ever-changing formats.

    OpenOffice does this, and presents you with a nice Office-like GUI. I haven’t had too much of a chance to take it for a test spin, but my housemate Paul, who’s cranking out docs for the next incarnation of Peekabooty, swears by it.

7 replies on “Getting pragmatic, part 1”

Ah, emacs! Have you noticed the similarity between emacs wizards and playstation junkies?

– I’ll do a cross-button, up, up, square-button, left, right, cross-button and chop his head off!


– I’ll do a meta-u ctrl-t-t foo void meta-s meta-s and paste that stuff all over the place!

I had a japanese coworker who, I swear, were using emacs key-comb’s that required all ten fingers. At least it certainly looked that way. If he had asked me ‘who the baddest?’ while I watched him edit I would have knee-jerked “Sho-Nuff!”

I can’t argue with the spirit, sadly most of these great utilities are lost on those of us who can’t afford to pay the Apple tax (which where I live is currently running at about 50% more than the equivalent Wintel machine).

So, I just have to use VIM for everything 😉

Although if you do know a good, cheap (free?) cross platform outliner I’ll be willing to give it a try.

Andy Todd


I’m doing something akin, I even have the draft entry written, but I’m turning my back on linux. Even though I’m currently a Gentoo fanboy, after using Panther and Xcode, it’s game over, winner OS X.

If I come up will anything useful, I’ll drop another comment.


Amusingly, even at work (where I have an MS machine because that’s the standard) and at home (where I have an MS machine because I use it to play games), I have Cygwin installed so that I can get a unix-like environment, and I use Cygwin stuff at least as much as any Mac stuff.

Then, of course, I’ve got several unix servers at any one time, but hey, that’s what Cygwin’s xterm + ssh is for. 🙂

BBEdit is indeed very nice, but you might also want to take a look at Hydra ( It does most of what BBEdit does, and adds some really neat stuff besides. Most notable is collaborative editing. On a local network, files can be shared via Rendezvous (great for workgroups), and you can even share docs across the Internet (I helped a friend configure Postfix using this feature just a few weeks ago.) It also support live previewing of HTML via WebKit (the HTML engine that underlies Safari). Oh yeah, and it’s free.

Leave a Reply

Your email address will not be published. Required fields are marked *