Archive for November 2003

Friday, November 21, 2003

Krishnamurthi Notes

Kim Burchett finds that notes from Shriram Krishnamurthi’s programming languages class are online. The class pages also point to a slightly old edition of the excellent Turbak and Gifford book, which is unfortunately one of those annoying PDFs that doesn’t use fonts.

2002 Turing Award Lecture

ACM has posted videos of the lectures by Rivest, Shamir, and Adleman.

Wednesday, November 19, 2003

Mac OS X 10.3 Developer Tools

All things considered, I wish I hadn’t updated my development machine to Mac OS X 10.3. I’m generally very pleased with Panther, but the developer tools have so far done nothing but waste my time.

I tried to edit a nib in Interface Builder, to add a few columns to a table. That was easy enough, but when I built and ran the application the new columns didn’t show. I opened the nib in IB again, and it showed the columns just fine. I don’t know what went wrong, since I didn’t change the nib format or use any new 10.3 attributes. I checked out a fresh copy of the nib from CVS and made the change again. Still no dice. After a few more tries, it eventually worked. I’m not sure why.

I loaded some of my Project Builder projects into Xcode. The files are packages whose names end with .pbproj, so of course the system still thinks they belong to Project Builder. I used the Finder to override the files so they would open in Xcode. To do this, it saved two invisible files inside each project: .LSOverride and Icon\r. (The \r is ASCII 13.) BBEdit didn’t like this; it kept giving me error -43 (file not found) when I tried to Find Lurkers in my sandbox. Eventually I figured out that it didn’t like the Icon\r files. I couldn’t figure out how to add the literal text Icon\r to my .cvsignore file, so I ended up settling for Icon?. (The question mark is a wildcard that matches a single character.)

Xcode has been giving me a lot of trouble in addition to the issues I previously mentioned. I let Xcode update my targets to its native format, deleted the classic targets, and fixed up all the names. It insisted on creating new Info.plist files for all my non-tool targets and placing them next to the project file.

I try to keep the project folder tidy, so I moved the files into another folder. Xcode lost track of them. I updated the paths in the project window so that it could find them, only it didn’t really find them. The corresponding text fields in the Properties tab of the Target settings were blank, and even when I re-entered the information Xcode refused to use it, or even save it when I closed the project. Eventually I figured out that I had to update the relative path in the INFOPLIST_FILE setting in the Build tab of the Target settings.

Xcode still wouldn’t compile the code, though. It seems there’s a bug in the shell script that Xcode generates when compiling yacc files. It gets some of the relative paths wrong. I didn’t know how to customize Xcode’s handling of derived source files, so I decided to go back to the classic target.

The yacc files worked fine with the classic target, but Xcode gave me some errors about the availability macros. (These let me develop on the latest version of Mac OS X and make sure I’m not using any new APIs that will prevent my code from running on older versions of the OS.) Often, these sorts of errors in Project Builder and Xcode go away if I do a clean build. This time some of them did, but not all.

No problem, I thought, I’ll use Xcode’s new cross-development feature, which lets me develop using the 10.2.7 headers while running on 10.3. Unfortunately, although I could select that option in my project, Xcode ignored it for classic targets. So I was back to using the availability macros with the 10.3 SDK. I decided that I could do without MAC_OS_X_VERSION_MIN_REQUIRED, which was causing the errors, and just use MAC_OS_X_VERSION_MAX_ALLOWED. This stopped the errors, but then Xcode started complaining about some glyph and animation stuff in AppKit. It turns out that NSGraphics.h and NSLayoutManager.h have bugs; some new symbols aren’t protected by the availability macros. I authenticated and fixed the header files.

Now everything builds in Xcode using classic targets, which means that I can’t take advantage of new features like distributed builds. I could probably update a dozen or so of the targets to native, but I’d rather get back to coding.

Tuesday, November 18, 2003


Bill Bumgarner:

Walking is really just the “standing” loop with an optimization towards falling in a particular direction in a consistent and controlled fashion.


Comment on Kim Burchett’s blog:

The discipline of programming is fundamentally just data compression.

Monday, November 17, 2003

Security D’oLTs

Bruce Tognazzini discusses some examples of security in the real world.

Amazon Reviews

Richard Monson-Haefel:

More recently, I’ve become aware that some individuals have gone a step further by posting fake five-star reviews on their own books using the names of famous people in our industry. If you think that’s stupid, let me assure it happens. In fact, I found one book that had at least one (probably three) reviews impersonating well known figures in our industry. How do I know they were fakes? I asked the people I suspected were being impersonated. I myself was impersonated on in a slightly different manner.

Friday, November 14, 2003

BBEdit 7.1

BBEdit got a nice little update yesterday. The new SFTP support is sweet.

Wednesday, November 12, 2003

Product Idea

You know what would really rock? PyObjC Anywhere.

Grab Bag

John Siracusa gives his normal in-depth treatment to Panther. I liked his points about auto-hiding scroll bars, look and feel churn, the weird widget instead of a Labels submenu, Finder polling, and the sameness and unpredictability of the Finder.

Matthew Thomas says security certificates are “a demonstrably unusable solution to the wrong problem.”

Sven-S. Porst discusses some iTunes usability issues. I guess I’m not the only one who thought the burning procedure was weird.

Chris Heisel explains how “there is more value in online advertising than the click-through alone.”

The Mac vs. PC question at the recent Democratic presidential candidate debate was apparently a plant.

Tuesday, November 11, 2003

iBook G4

My iBook G4, with Panther pre-installed, arrived a few days before my copy of Panther. It was on my desk only about a week after ordering, which is quite impressive considering how new the iBook G4 is. I had tried to order the iBook G3 (Dual USB) that it replaces direct from Apple, so as to get the developer discount. At the time, the model I was interested in was more than six months old, yet after nearly two months Apple still hadn’t shipped it. I finally got tried of waiting on hold only to be told that they didn’t know why it hadn’t shipped, but that it surely would soon. So I gave up, ordered it from MacMall without the larger BTO hard disk, and received it in a matter of days.

The new 12" iBook is a great little computer. Of course, I wish it had a higher RAM ceiling and an option for a faster processor. The PowerBook G4 is significantly more expensive and includes lots of features I don’t need. Nevertheless, the iBook is reasonably peppy.

I’m nearly always impressed by Apple’s hardware. Even the oft-denigrated platinum (not beige!) G3s were innovative and comparatively stylish. However, with the iBook G4, I think Apple has taken one of its best-ever designs and made it slightly less excellent. I don’t follow hardware too closely, so perhaps the following changes took place with the later iBook (Dual USB) models.

iBook G3

The thin part of the power cable is much stiffer than before, so it doesn’t like to lie flat, and the part that goes to the outlet is significantly more bulky than before.

When closed, the iBook’s case looks mostly the same as before, except of course that the optical drive is slot-loading. I’m not sure which I prefer. The tray can sometimes get in the way, but the slot is next to the power cable, which makes it needlessly difficult to grip ejected discs.

iBook G4

After opening the iBook G4, my first reaction was that it looked like a PC knockoff of Apple’s design. Starting at the top, Myriad replaces Apple Garamond. I think Myriad looks great on-screen, but it lends a kind of Fisher-Price look to the hardware. The metal hinge that gave the old design some personality has been replaced by plastic that’s the same color as the case.

The keyboard, though perfectly serviceable, looks drab compared to the old design. It reminds me of nothing so much as Panther’s window title bars. The finish of the palm rests is rough rather than smooth, and it’s missing the shine that made the old design look so elegant. The trackpad is also not as smooth, which makes it feel slow. The white power button doesn’t quite fit in.

Overall, the iBook G4 seems slightly more solidly built, but it also looks cheap compared to G3.

Panther Text Rendering

Tonza illustrates my comment about how Lucida Grande looks narrower and blacker on Panther.

10.2 vs 10.3

John Gruber explains how on-screen typography is doomed to suck:

Non-anti-aliased text is dorky but sharp. Anti-aliased text is elegant but fuzzy. You can’t win, because truly winning would require on-screen text that is both elegant and sharp, and that requires higher-resolution displays than those we have today.

Which is true, but I’m not asking to win. Just let me pick my poison.

Thursday, November 6, 2003

Source Lists and Brushed Metal

Apple has updated the Aqua Human Interface Guidelines and changed its URLs (again). The new guidelines define source lists:

A source list is an area of window set off by a movable pane splitter to provide users a way to navigate data. Use a source list when the data presented in it is a primary means of navigating within the application, as in iTunes or the Finder. Users select objects in the source list that they act on in the main part of the window.

And source lists are apparently the reason that the Panther Finder’s windows are (sometimes) metal:

You can use a brushed metal window if your application:

  • Provides an interface for a digital peripheral, such as a camera, or an interface for managing data shared with digital peripherals—iPhoto or iSync, for example.
  • Strives to re-create a familiar physical device—Calculator or DVD Player, for example.
  • Provides a source list to navigate information—for example, iTunes or the Finder.

Don’t use the brushed metal look indiscriminately. Although it works well for some types of applications, some applications appear too heavy when using this look. For example, it works well for the iSync application window, but it does not work very well for the TextEdit document window.

Of course, by this logic, Xcode and System Profiler windows would be metal, Safari browser windows would change to metal only when you viewed the bookmarks, the Safari Downloads window wouldn’t be metal, and on and on. It’s not worth thinking about this too deeply, because the brushed metal guidelines are more a retroactive justification for Apple’s design fetishes than a set of sound principles for designing usable, consistent interfaces.

Also note that they’re now called “brushed metal windows” rather than “textured windows.” Hopefully this is meant as a reassurance that the texture won’t be changed to Blue Dalmation in Mac OS X 10.4.

Mac Developer Journal

Apple sent me the first issue of Mac Developer Journal, so I read it. There are some good articles, and contentwise I think it compares favorably with MacTech. But the Zinio format has to go.

From the reader’s perspective, it basically combines the worst features of online and print publishing.

Open Source Quality

Cameron Purdy:

Sometimes I read these rants about how open source automatically obtains magical god-like quality. It’s true in a twisted way: The ten open source projects that religious open source advocates will choose to point to probably have better quality than the average non-open-source product. My advice is to look at open source with an open but critical mind, the same way you should look at non-open-source products. Don’t get caught up in the religion, because in the end, there’s still poison in that kool-aid.

Xcode External Editors

Nat Irons:

Rather than fix this apparent oversight, Xcode makes the situation much worse. I can’t even view a source file in Xcode when an external editor is in use. That’s beyond sloppy, and into the realm of the punitive. It suggests that external editors were a check-off item for the Project Builder team, and once the feature was hacked together the subject was closed.

After switching to Xcode recently (Project Builder isn’t supported on Panther), I finally had to turn off external editing yesterday so that I could step through my code in the debugger. I had almost turned it off earlier, because with external editing on Xcode doesn’t show you any context with compiler errors.

Also, I can’t use Xcode’s rather nice SCM window because it insists on showing diffs (a) in the third pane of the project window that I’m constantly telling Xcode to hide, or (b) in FileMerge. The option to show them in BBEdit doesn’t work.

All this pales in comparison to the fact that Xcode often throws away changes that I make to my projects. Not only does it not always detect when I make changes and save the project automatically, but it also doesn’t offer a way to save manually. There’s no Save Project command in the File menu. What is this, an iApp?

Tuesday, November 4, 2003

Click-through Considered Harmful

Eric Blair recounts two instances of click-through gone awry. By the way, the new Eject buttons in the Panther Finder also accept click-through. Why?

Monday, November 3, 2003

Panther Notes

O’Reilly Mac OS X Conference 2003

O’Reilly has posted slides from the conference. Matthew Barger’s presentation looks intriguing.

ATPM 9.11

The November issue of ATPM is out.