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.
Archive for November 2003
Walking is really just the “standing” loop with an optimization towards falling in a particular direction in a consistent and controlled fashion.
The discipline of programming is fundamentally just data compression.
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 Amazon.com in a slightly different manner.
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.
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.
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.
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.
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.
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.
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.
- You can’t print more than one page at once, which is absurd since the layout is obviously designed for printing.
- You can’t copy and paste text to another program.
- You can’t search more than one document at once.
From the reader’s perspective, it basically combines the worst features of online and print publishing.
One of the other stupid questions is:
A significant advantage of a one-party state is that it avoids all the arguments that delay progress in a democratic political system.
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.
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?
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?
- Apple fixed the bug, introduced in Jaguar, which prevented my Mac from booting when more than 1 GB of RAM was installed.
- Overall, Panther seems much faster and more responsive. I’m not sure I’d call it fast yet, but it’s almost like a processor upgrade on G3 Macs.
- The Jaguar Finder was excruciatingly slow at deleting large numbers of files at once. I timed it and found that it took 45 minutes to move 4957 files, where the OS 9 Finder took just 57 seconds. The Panther Finder takes 84 seconds, and it shows a progress window instead of locking up the whole Finder with the SPOD.
- Preview is much better. It’s fast. It supports text selection and searching, and also PDF bookmarks and links, although there doesn’t seem to be a way to see a link’s target, like when you hold down Option in Acrobat. Keyboard navigation in the drawer is screwy. Nevertheless, the improved Preview is probably my favorite Panther feature.
- Opening multiple images with Preview once again opens them in separate windows.
- Open/Save dialogs are much improved. Type-selecting is not 100% reliable, though.
- Apple Help is good—at last.
- The Fast User Switching animation does indeed look cool, but sometimes the cube rotates in the wrong direction.
- Image Capture uses the same kind of animation.
- TextEdit (and Cocoa, in general) can read Word files.
- So far, the Finder has unexpectedly quit once, Mail twice, and Xcode three times.
- Xcode still doesn’t have a command for saving projects.
- Desktop printing is back, and the printer icon in the Dock does indeed look like my printer.
- Exposé works great, but it’s proving to be less useful than I expected, because I tend to hide whole applications, and Exposé doesn’t show their windows.
- The keyboard shortcuts in many applications have changed.
- LaunchBar refused to work until I trashed its files and had it rebuild them.
- Apple has started using a new LinkedTextField UI element. This is a combination button and text field that draws blue-underlined text. It can be seen in Activity Monitor, Mail, Disk Utility, System Preferences, and more. Let’s see some guidelines on when to use these.
- The Finder is better, but still not acceptable. Column reflowing in icon view still doesn’t work right, the icon grid has been enlarged again, and window zooming is buggy.
- Mail’s junk filter identifies spam messages, but for some reason doesn’t move them automatically, even when I check that option.
- Shift-Tab no longer works in Safari forms.
- iPhoto shows “PMPM” or “AMAM” after my photo times, instead of “PM” and “AM.”
- Address Book now stays in Edit mode when you change between cards.
- Smoothed fonts are now blacker and less fuzzy around the edges. This totally changes the way Lucida Grande looks; it seems more narrow, now. I still prefer screen fonts, though. The LCD font smoothing still has visible color artifacts, and doesn’t look as good as on Windows.
- Connected servers don’t show up on the desktop, even if I have that option enabled. Thus, I can’t figure out how to unmount AppleShare volumes.
- The font panel now has a search field.
- The new disk image mounter doesn’t seem to respect the Internet enabled flag.
- The system now intercepts Command-Option-D before it gets to BBEdit.
O’Reilly has posted slides from the conference. Matthew Barger’s presentation looks intriguing.
The November issue of ATPM is out.
- The Candy Apple: What’s in a Name?
- Machine Language: Advertising and Apple
- The Desktop Muse: A New Computer, a New Column, a New Life
- Quick Tips in Design: Part 5: Shape
- About This Particular Outliner: Outliner Features—Part 2
- Cartoon: Cortland
- Cartoon: iTrolls
- Desktop Pictures: Thailand
- Review: Huevos and iSeek
- Review: ID Bag and Brain Cell
- Review: iPod: The Missing Manual (book)
- Review: iTrip
- FAQ: Frequently Asked Questions