Archive for April 7, 2003

Monday, April 7, 2003

Internationalizing Cocoa Applications

Stepwise has published an internationalization article by Malcolm Crawford and Bill Cheeseman. New to me were the magic command-line switches -AppleLanguages (for launching an application using a different language) and -NSShowNonLocalizedStrings (for logging to the console when a localized string can’t be found). It’s a good article, but I’d rather read about the non-technical aspects of localization.

Quark Translation

John Gruber translates Quark’s PR to English.

New Programming Book

Peter Van Roy and Seif Haridi:

This textbook brings the computer science student a comprehensive and up-to-date presentation of all major programming concepts, techniques, and paradigms. It is designed for second-year to graduate courses in computer programming.…As far as we know, there is no other book with this breadth of coverage that is both practical and theoretically well-founded.

Drafts of the book are available online. The examples are in Mozart, reflecting an emphasis on concurrent programming.

JDK 1.4.1

Chris Adamson:

What’s happening is that Java 1.4.1, now the default when you type java on the command line, does not support certain Java-to-Carbon technologies that QuickTime for Java depends on.

This change also breaks DropDMG 2.0’s MacBinary encoder. JDK 1.3.1 is still installed and available in /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/, however I made the mistake of hard-coding /usr/bin/java into DropDMG. (In the future I will indirect such paths through the defaults database.)

The next version of DropDMG will use a new MacBinary encoder that works with JDK 1.4.1. For now, if you want to make MacBinary-encoded images with DropDMG, you can not update to JDK 1.4.1 or symlink /usr/bin/java to /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/java.

sudo mv /usr/bin/java /usr/bin/java141
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/java /usr/bin/java

CocoaTech Frameworks

Steve Gehrman:

The Cocoa frameworks used to create Path Finder, and source code used to write Path Finder plugins are now open source and ready for immediate download.

Included in the source code package are two powerful frameworks: CocoaTechBase and CocoaTechFoundation. These two frameworks make up the heart and soul of Path Finder.

Also included are 4 real world Path Finder plugins. These aren’t simplified versions, these are the actual full plugins that ship with Path Finder. “Hex View”, “Image Converter”, “Get Info”, and a sample plugin designed to be a perfect starting point to write your own Path Finder plugin.

The license is BSD-style. With loads of categories in the same namespace and dependencies on the Omni frameworks, I doubt many developers will want to use these frameworks as-is, but there’s probably a lot to learn from them. Path Finder is a multi-threaded app, and it handles both Unix and Mac aspects of files.

Sometimes it’s easy to what’s going on, as in NTWeblocFile.m where Gehrman explains his reverse engineering of the Finder’s “webloc” files. In other cases, the code is clear but the rationale is not, as in NSNumber-NTExtensions.m where there is a category for wrapping NSSizes when NSValue seemingly already does that.

I’m not a fan of CocoaTech’s new Geeklog-based site. The old version was much simpler. However, Gerhman includes a link to, a site that has the major CMSs installed so that you can try them out.

The Politics of Participation

Chuq Von Rospach:

I think the difference here is that CPAN is promoting use of the software, and the bottomline purpose of FSF is to promote the policies under which FSF develops software, not really the software itself.

The Girl Who Cried Webmaster

Joey deVilla:

At least a couple of readers of this blog guessed that something was wrong when the “Ten Cool Things About the New Girl” blog entry from last week got yanked. They were right, but they probably had no idea how wrong things went. I’m going to tell the story—with names changed and a few non-essential details omitted. I’m trying to balance telling my story with protecting people’s privacy. Hopefully, I’ve succeeded.

(via Boing Boing)

Code Generation

Dave Thomas:

When the time came to run the acceptance tests, we brought the client in, showed them this language, and explained how it was used to produce the document. We then showed them some new magic: we fed the same document through a different code generator and it produced a whole lot of C code, one function per test. They verified that this C did indeed represent the contents of the document, then we compiled and ran it. The entire Telex switch acceptance tests were run from this domain language (and, amazingly, it passed).

Most Coveted Covers


So many talented book designers get so little recognition. To do our small part to rectify that, DG Strong and Karen Templer—joined by Mignon Khargie as of 09/25/02—will be singing the praises of some stand-out covers and the designers who designed them, more or less weekly.

(via Jerry Kindall)

Quote of the Day

In science one tries to tell people, in such a way as to be understood by everyone, something that no one ever knew before. But in poetry, it’s the exact opposite. —Paul Dirac