exclusive content published on March 14, 2006
Linux is my full time job. I write LAMP applications and act as
sysadmin for a group of Linux servers. I've been using Linux for almost
10 years, and it has been my primary desktop for more than four years.
So why am I writing about a Macintosh? Because during a recent exercise
in curiosity, I discovered a few unexpected things -- about the Mac and
about how I use my desktop.
In twenty odd years of working with computers, I never owned an Apple
computer. Frankly, until OSX, I was never interested. But the BSD
underpinnings of OSX got my attention. The Mac finally got a "real"
operating system. It was interesting enough that several years after it
debuted, I purchased my first Apple computer on eBay, a Mac Mini, to dig
a little deeper into the OS. Not only did Apple do something right with OSX,
but it was smart marketing to introduce a cheap Mac that worked with PC
hardware. It is squarely aimed at Windows switchers and the mildly
curious like myself. I would never have considered springing for a
full-blown iMac or iBook as a learning exercise, but a used
Mini fit the budget.
Everything works if you let it
The first thing that struck me was that all the hardware worked (with
one minor exception). Since Apple controls the hardware and operating
system, this was hardly a surprise. As a Linux user, I am used to
spending time to get all my desktop hardware to work. The Mac seemed to
work better with my PC hardware than Windows; without endless,
conflicting drivers and reboots. I exercised every component on the
Mini and the only trouble I ran into was with the wireless AirPort. The
built-in 802.11g could connect to my 802.11b Linksys base station (WEP
enabled), and would work for up to 30 minutes before suddenly going
dark. I applied all the software patches, including one specifically for
making AirPorts more interoperable but the problem remains.
Fortunately, I had planned to use a wired connection anyway. Apart from
the AirPort, everything else worked perfectly including Bluetooth,
Firewire, USB, printer, etc.
The second thing that struck me was that every Apple software
application worked as advertised. OSX ships with 50 or so applications
that not only work, but are extensively documented. The help system was
quite useful. Most Linux distributions ship with 1000+ applications,
many with overlapping features, about half of which work as advertised,
and about quarter of which are adequately documented.
Finally, the hardware was elegant. The Mini is about the size of a
paperback book but is crammed with technology. I've always been more
concerned with function than fashion, but if you can get both, so much
the better.
I want to digress momentarily to talk about printing, because I think it
is the biggest wart on desktop Linux today. This was highlighted when I
plugged my Lexmark laser printer into the Mac and it automatically
installed and configured itself and worked immediately in all
applications. The Linux situation really needs to be fixed, and CUPS
alone is not doing it. Neither are the KDE and Gnome front ends
that only add another layer to troubleshoot. In
two distros I've installed in the last six months, I could not get the
printer to work. It was detected and configured, but would not produce
output. This is a basic Postscript laser printer that worked fine in
older distros. In these recent ones, jobs would sit in the queue until I
killed them. There really needs to be a unified system level printer
interface, maybe kernel level, so all applications can use printers the
same way. I'd like to see an end to /etc/printcap, even for backward
compatibility. Then, there is the whole issue of Postscript to PCL filters,
not a Linux developer issue, but still a headache. If you
want the best chance at hassle free printing in Linux, my advice is to stick w$
Postscript printers and 2.4 kernels. Now, to get back on track.
Real Unixy goodness
The Mac GUI is a clean, well lighted place, and little things like the
Dashboard and Expose have a certain wow factor. But I really miss
having six X11 desktops. Maybe the X11 included with OSX will allow me
to use multiple X desktops, but I haven't explored that yet.
What matters most (to me) is the shell environment and the excellent
selection of tools that are pre-installed. After firing up
Terminal.app, the default terminal emulator, I was a surprised to find
Bash as the default shell instead of a BSDish Csh or Tcsh. I was also
surprised to find SSH and my favorite text editor, nano, ready to go.
Once I customized the startup scripts (I had to modify /etc/bashrc to
tell it to source $HOME/.bashrc), I felt right at home.
What matters second most is a great browser. While Safari seemed
workable, I prefer Firefox. That was the first application
I installed. I added Gimp, GPG, a few others, and I was done. There
was a small learning curve to understand how Mac apps are installed from
Disk Image (.dmg) files. My mind still insists on calling them "Damage"
files. In most cases, you mount the .dmg file by double clicking it,
then drag the application icon to the Applications folder in the Finder.
Some had actual installers that walked you through the install. Both
were easy to learn.
Secure default settings
The default OSX configuration has all network
services turned off. I had to enable SSH and Apache in System
Preferences. Even the root account is disabled by default. I had to
enable it to change /etc/bashrc. This is a much more secure default
state than Windows, and probably more secure than most default Linux
installs. Of course, it's relatively easy to lock down Linux after a
base install.
The eighty twenty rule
The speed that I was able to become productive on OSX caused me to
reflect a little about operating systems and my daily work. I realized
that eighty percent of my computing life is spent in two applications: a
web browser and a shell.
This minor epiphany made it clear that my desktop OS was not as
essential as I thought. I could easily hop among Linux, Mac, BSD, or
Windows without major problems. Well, I can't get by with the native
Windows shell, but I can SSH into a box that provides a real shell.
I code, write, and do administration from the shell. I need a web
browser for testing LAMP applications, searching the web, and reading
news. For cross-browser compatibility testing, I do use multiple web
browsers. Still, my core applications remain limited to two. I used to
read email from a shell (using mutt), but last year moved to Gmail.
Moving functions between the shell and web browser doesn't disturb my
dual app worldview.
You could argue that what I lump into the shell is actually hundreds of
small programs that make up the GNU or BSD userland. Things like sort,
awk, and grep. You could also argue that SSH and nano should
count as separate applications. However, these are things I take for
granted when I think of a useful shell environment and are common across
Unix-like operating systems. They come with the territory. The ease
and speed of setting up my shell environment on OSX reinforces that
view.
Linux still serves
While Linux doesn't get a lot of desktop love from hardware vendors, it
is a first class citizen when it comes to servers. Linux does
infrastructure right at a very low price point. Hardware vendors
recognize this and actually create drivers for their RAID adapters and
other hardware. Linux is also the primary target for a lot of server
software, including the LAMP stack, languages, mail servers, security
software, databases and more. I still earn my paycheck with Linux.
I will probably return to Linux on the desktop at some point, maybe with
Yellow Dog on
the G4 Mini. On the other hand, maybe it doesn't really matter.

This work is licensed under a
Creative Commons Attribution-NonCommercial 2.5 License.