Categories
Geek

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.

Categories
Geek

Oops, better make that NEXT Thursday

The Derrick de Kerckhove-hosted, Steve Mann-attended “What is Reality?” hot tub event that I mentioned earlier is not this Thursday, but the next one, the 14th. My bad.

You know, it serves me right for picking on Steve. If I always wore cyborg eyepieces constantly hooking me up to iCal or Palm calendar, I’d never get dates screwed up. I’ll bet MISTER CYBORG never misses an appointment…

Categories
Geek

Rub a dub dub, four nuts (or eight, depending on how you’re counting) in a tub

This Thursday at the DECONism gallery, there’s be a strange gathering in a hot tub — Derrick de Kerckhove, director of the Marshall McLuhan Program in Culture and Technology at the University of Toronto, will host a “What is real?” panel discussion featuring “post-post cyborg, performance artist and visionary Steve Mann as well as virtual reality artist Maurice Benayoun and the French cyberspace philosopher Pierre Levy.” According to the DECONism site, these gentlement will discuss “The topic of discussion will be fictitious truth, virtual fiction, realiction, and conjured reality.”

In my humble opinion, Steve and Derrick are probably two of the non-institutionalized/non-fundamentalist people least qualified to discuss reality. Then again, maybe they’re doing it as dispassionate outside observers. Levy doesn’t seem too crazy, and I like Benayoun’s art.

(I must confess. I’m quite incapable of saying “Steve Mann” without immediately following it by saying “Mister Cyborg” in a Homer Simpson-esque sarcastic voice, which making “air quotes”, a.k.a. “sarcasm tongs” with my fingers.)

The DECONism gallery is only a couple of blocks from my house, and hey, I’m a kinesthetic sort of accordion-playing guy who carries a lot of technology with him, so I’ll probably attend. Boris (a.k.a. “Bopuc” on the #joiito IRC channel at irc.freenode.net) might drive down from Montreal just to catch this.

Besides, I want to see if Steve’s cyber-implants short out or electrocute everyone in the tub.

Categories
Geek

WiFi Speed Spray

It’s the perfect gift for your gullible friend who can’t afford to switch to 802.11g.

Categories
Geek

Bruce Eckel interview at Borland’s Community site

Check out this Bruce Eckel interview at Borland’s community site. The interview’s all over the map, covering what you’d expect: C++, Delphi, Java, Borland’s IDEs, Java vs. C#, and of course, his new favourite language, Python. There’s also stuff you wouldn’t expect: his favourite song, his favourite movie, and whether he’d rather eat the fat from a moose’s eyeball or a Pop-Tart™ (really!).

In honour of tonight’s meeting of the pyGTA (Greater Toronto Area Python User Group), I’ll end with the most Pythonic quote from the article:

Saving the best for last [he discusses other programming languages just before this part], I’ve said in numerous places that Python is my favorite language, and this is because I’m most productive in that language. I can get so much more done in Python than in any other language I’ve encountered that it’s very hard for me to use those other languages, because to do so means throwing away time. Also, I’ve found the Python community to be my favorite group of language people; I can’t figure out how or why this is the case, but it retains the gentleness and enthusiasm that I most value in my interactions with a language community. I look forward to when I finally get my plate cleared enough that I can continue working on “Thinking in Python.”

Categories
Geek

Show Desktop for OS X (or "Damn you, Hammersley!")

On OS X, I believe there was some magic keystroke — possibly a magic click on a “close window” button — that closed all the windows and revealed the desktop. I’m pretty sure I’ve used it once before. I think.

On OS 9, it was easy — you’d just select “Minimize All” from the application menu (once again, I think that’s what it’s called — OS 9 and prior feel like distant memories now. On Windows, you can either click on the Desktop icon on the Taskbar or use the magic keystroke Windows-M.

Now you can get that capability in Show Desktop, an app that you can have either in the Dock or the menubar that will hide all open windows with a click. You can even provide it with a list of apps to exclude, just in case there were apps that you’d never want it to minimize (“Someone may be trying to reach me on iChat right now!)

I was going to post this entry to Forwarding Address: OS X, after looking for such a utlity to install on my spiffy new 12″ Powerbook. While checking to make sure that nobody on that blog had already written about it, I found that Ben Hammersely posted such an entry…today!

Damn you, Hammersley! Damn you to Hell!

Categories
Geek

Getting XMMS to play MP3s on Red Hat 9

I’d just installed Red Hat 9 on my work desktop box, fired up XMMS and pointed it at Groove Salad when I got a dialogue box saying something along the lines of:

In order to stay out of any trouble with Thomson, who charge royalties (75 cents per unit, or a one-time fee of US$50,000 – $60,000) to anyone who develops MP3 encoding or decoding software, we’ve removed MP3 playback capability. Sorry.

Finding out that XMMS no longer plays MP3s is like finding out that your set of flathead screwdrivers will no longer actually turn screws, but still can be used to open cans of paint.

Luckily, there’s a quick fix. This site has an RPM that restores MP3 playback capability to the versions of XMMS that come with Red Hat versions 8 and 9.