POLISHING THE APPLE OS
I just read Warren Keuffel's review of Mac OS X development tools, "It's a Zen Thing, in the August 2004 issue and have to pick a few nits. At the risk of sounding like an evangelist, here goes.
First, the GUI in Mac OS X isn't based on X11. Macintosh applications are built using either Carbon or Cocoa (which need no further explanation, since Mr. Keuffel explained them in the article). Both of these APIs drive a common UI system, which consists of Quartz (the 2D graphics engine), OpenGL (for 3D graphics) and Aqua (the window manager and widget library). X11 isn't part of this stack.
X11 APIs are available for developers to use, but you must be running an X server to run the resulting apps. Mac OS 10.3 comes with this server, but users of older Mac operating systems must download and install their own X11 servers. Second, Xserve is not Apple's X server, nor is it the name of the server edition of Mac OS X. Xserve is a hardware device—a 1-U high rack-mounted Macintosh. It comes preloaded with the server edition of Mac OS X (Mac OS X Server). I suspect Mr. Keuffel meant to say "Mac OS X Server in the places where he wrote "Xserve in the article.
If you want to further explore Mac OS development, you may be interested in Apple's Xgrid system, which will allow easier development of applications that run on computing clusters. Available now as a technology preview, Xgrid will be part of the next release of Mac OS (10.4, named Tiger).
In my opinion, having clustering technology as part of the operating system opens the door for some interesting possibilities. Everyday desktop applications could auto-detect instances of themselves on other computers and automatically offload processing to machines that are otherwise sitting idle. But this is probably something best written about after Tiger ships to the general public.
David Charlap Vienna, Va.
Warren Keuffel responds:
If I conveyed the idea that OS X was based on X11, I failed miserably in my intent. I was trying to show that one of the strengths of OS X was that—as with any Unix workstation—you can run X11 apps in addition to native OS X applications, and that there was a basic level of interoperability between X11 and Aqua. I appreciate the clarification on Xserve and OS X Server.
A REAL OMISSION
I just finished reading Warren Keuffel's article on Macintosh programming. As a longtime Mac and Windows programmer, I enjoyed his perspective and review of the Mac as a development platform.
However, he made a major omission by asserting the Mac's Achilles' heel is its neglect of the Windows world. It appears that Mr. Keuffel hasn't been introduced to REALbasic. (I'm not associated with REALbasic in any way; I'm merely a satisfied customer.)
I've been professionally programming for both Mac and Windows using a Mac since 1999. Today, my company's Virtual TimeClock Professional software is in daily use by thousands of Windows- and Mac-based businesses. Though Virtual TimeClock was developed on a Mac, we deploy releases supporting Mac Classic, OS X and Windows 95 through XP. Thanks to REAL Software's version 5 IDE, we'll be adding a Linux release with our client/server edition by the year's end. Contrary to what was asserted in Mr. Keuffel's article, this all happens from a Mac-based shop working happily in OS X.
Keith DeLong
Software Engineer
Redcort Software
Fresno, Calif.
THE MIGHTY MAC
In "It's a Zen Thing, Mr. Keuffel really hit the target regarding why the Mac can be better to work with than other platforms. I write software in the Windows environment day in and day out, which makes me appreciate my Macs at home that much more. I've been a Mac user since 1984, but I didn't brag about it when I was using Windows NT at work and my OS 9 Mac at home crashed all the time and couldn't dynamically allocate memory. I'm so thankful those days are gone.
Now I'm convinced that OS X is the best platform out there for almost every task, and dealing with Windows XP all the time is the biggest hassle. I'm terrified what Longhorn is going to do to me.
Kevin Hoctor
Development Manager
On Center Software
The Woodlands, Tex.
BUG-HUNTING
I enjoyed Adam Kolawa's article "Prevention's the Cure (Test Center, Aug. 2004), which discussed using static analysis to find bugs in software. However, there are two open-source bug checkers for Java not mentioned in the article that your readers may be interested in.
JLint looks for a number of common Java coding errors, with particular emphasis on deadlock detection. Also, FindBugs has checks for nearly 50 kinds of bugs (with more being added), including null pointer exceptions, race conditions, misuse of API methods and untrusted code vulnerabilities.
I should note that I'm a developer for the FindBugs project. However, I'd encourage people to try many static analysis tools-because each uses a different approach, they tend to complement each other. The more bugs found, the better!
David Hovemeyer
Graduate Student
University of Maryland
College Park, Md.
LOST IN TRANSLATION
Alexandra Weber Morales's editorial about press releases ("Bizarre PR, Aug. 2004) was really fun. The Chinese one reminded me of a game we used to play around 1989 or so: Opening PCs to read the warning notice on the AC/DC transformer. Chinese factories were probably using some sort of automatic translator to produce the labels in all sorts of languages. The French ones were always great moments of fun-I still remember some sentences 15 years later!
My favorite: "A chapper choc lectrique ne l'ouvrir pas. (If you escape electric shock do not open the device.) Another one: "Il n'y a pas de materiel serviceable dedans. (There are no working parts inside.)
David Dossot
Cofounder, V.P. Technology
Agile Partner
Luxembourg