small medium large xlarge

High Fidelity

So you want to listen to the latest Spice Girls recording?

Well, maybe you’ll want to put together a music system worthy of the
task. You might spend several months reading the HiFi magazines and
lurking on newsgroups before deciding on a preamp, amplifier, digital
Dolby, speakers, and turntable (after all, nothing sounds as good as
vinyl). The guy at the store mentions you’ll need 18-gauge
gold-plated cables to connect it all together. You bring it all home,
then spend days worrying about the placement of the speakers—good
listening area, proper distance from the wall, just enough deadening
(Did the latest repositioning really make a difference?). Nine
weeks after starting, you clean the record, spray on an anti-static
mist to stop dust from clogging the grooves, and slowly, slowly, lower
the needle. The anticipation is glorious as the needle gently but
inexorably spirals in towards the first track. You hold your breath.

Or, you could just slap the CD into your boom box.

The Ears Have It

Which is better?

To a true audiophile, nothing short of a custom-built, component-based
audio system will do. To the average Joe, who doesn’t want to be
bothered with all the messing around, the boom box is fine. There’s a
difference in quality, to be sure, but it’s a trade-off for
convenience, a trade-off that most people are happy to make.
Audiophiles look down their noses at the integrated system crowd, but
the vacuum tubes in their power amplifiers are still warming up while
the CD set is halfway through track three. It’s a trade-off. There
really is no single "better"—it depends on what you want.

It’s the same with many of the technical choices that face us in
computing. Assembly language gives me the ultimate control, but I can
slap together an interface in VB or Smalltalk in an hour or so. An
editor and Makefiles let me fine-tune my build environment, while an
IDE shields me from the messy details of compiling and linking.

Maybe one of the biggest rifts in the newsgroups right now is
Microsoft Windows versus Linux. And most of the acrimony starts from
the Linux side (if for no other reason than most Windows users have
never heard of Linux). Anti-Microsoft feelings run high, and are
expressed vehemently. Microsoft products are unreliable, they say.
Microsoft systems have lower performance, lower availability, fewer
tools, worse connectivity, and poorer configurability. Microsoft is
responsible for all the computing world’s ills. Everyone should
immediately switch to a Linux-based desktop.

Harmonic Distortion

What seems to offend the madding techie-crowd most is that Microsoft
products aren’t technically as good as (say) Linux or BSD. Like the
boom box compared to component hi-fi, Windows is basic, integrated, and
lacks configurability.

So what?

Just as no one seriously writes review articles comparing $100 boom
boxes to $5,000 hi-fi systems, people should get over this idea that
you can compare Windows and some flavor of Unix. The two systems are
designed for different audiences, with different objectives, and
different expectations. Unices come from a background of serious
applications, in high-availability, high-load server environments.
Unix systems are expected to be networked, and networked hard. In the
Unix world, the application takes center stage, and user interfaces
are relegated to the cheap seats. Unix systems are not used, they are
administered. Unix was never aimed at a mass market.

Windows has different objectives. Windows is a computing appliance,
where the technology is driven by marketing. Windows is oriented
around the user interface, not the application. This is its strength,
and historically the cause of its weaknesses. Windows looks good, and
when you stick within its domain, it can be easy to use. For a
lowest-common-denominator system, the technical folks at Microsoft
actually set the bar fairly high. The ability of COM components to
interoperate and contain each other is admirable—Unix boxes are only
just beginning to catch up with this at the User Interface
level. Windows configuration (while frustrating at times) can be a
snap. It took me 2 minutes to get my ’95 box dialing into my ISP; with
my Linux box I had to write a chat script, two shell scripts and
recompile the kernel.

Turntables

I don’t think Windows is a particularly good system, but, like growing
old, it’s better than the available alternatives for 90% of the users
out there.

It’s just that, personally, I’m not one of that 90%.

For me, the Windows architecture gets in the way. The monolithic,
closed-box design stops me from configuring my environment the way I
need. GUIs that insist on repackaging the underlying data model stop me
from manipulating that same data with other tools. Windows tools are
not orthogonal—if they weren’t designed to interact, they typically
can’t interact. This puts me at the mercy of other applications
developers—if I don’t want to work their way, I’m pretty much stuck.
This is probably the biggest single cause of the building
anti-Microsoft resentment among developers. As a breed, they dislike
being told how to work. It’s like the difference between Microsoft
Word and markup languages such as LaTeX and SGML. A benefit of Word is
WYSIWYG—What You See Is What You Get. The disadvantage is
WYSIAYG—What You See Is All You’ve Got. Everything is on the
surface. There’s no underlying model.

By contrast, the layered architecture of a Unix system, even at 20+
years old, still offers me flexibility and configurability. I’m more
productive as a result, probably by a factor of two or more. My code
is better, because I can write and use text manipulation tools to
eliminate duplication, build tools to integrate components, develop
filters to help with testing, and use some frighteningly powerful
editors to help me get it all in to the system in the first place. I
pay for all this, of course. I have to invest time learning my tools,
and spend time administering them, keeping them clean and sharp. I
consider this time well spent. It pays itself back in increased
productivity, but, more importantly, it keeps me close to the system.
I know how it works. When things go wrong, I know where to
look. I can code with confidence, because I’m coding deeply, not just
on the surface. Like Pirsig’s Zen motorcyclist, I care for my machine,
and it takes care of me.

So lets drop the petty, childish Microsoft bashing. Who cares that
Microsoft technology may not be ideal? Linux users hoping to unseat
Microsoft from the desktop stand about as much chance as Ferrari
owners hoping to displace General Motors vehicles. Let’s not waste our
energies.

Instead, let’s enjoy that fact that we have alternatives. We
can configure and reconfigure our environments as we need. We can
choose to use Windows when necessary, then switch to Linux or BSD
when we need to get down to business.

We can have the high-technology, high-complexity audio system for when
we want the best, and the boom box for the picnics.

Let’s use what we have, appropriately and wisely. Let’s try to get
over this “my operating system is better than your operating system”
game, and instead let’s think about what “better” actually means.