Archive for May 3, 2003

Saturday, May 3, 2003

Coroutines

Dan Sugalski has posted another good introductory article, this time on coroutines. He’s got a great series going here. I only wish he would list some references at the end.

AAC

My brother did some listening tests with AAC at different bit rates. He found that AAC at 192 kbps was indistinguishable from AIFF with his setup, but that 128 kbps (which ITMS uses) was noticeably worse, though better than MP3. As a result, I don’t think I’m going to bother re-ripping my 224 kbps MP3s in AAC.

A Course in Universal Algebra

One of Springer-Verlag’s old graduate texts is now online (via Kai Von Fintel). They’ve re-paginated it for US Letter and get bonus points for using a good LaTeX-to-PDF converter, so that the PDF is searchable and looks good on screen.

Unifying Tables, Objects and Documents

Erik Meijer and Wolfram Schulte:

This paper proposes a number of type-system and language extensions to natively support relational and hierarchical data within a statically typed object-oriented setting. In our approach SQL tables and XML documents become first class citizens that benefit from the full range of features available in a modern programming language like C# or Java. This allows objects, tables and documents to be constructed, loaded, passed, transformed, updated, and queried in a unified and type-safe manner.

CD Labels

Is there a program like Discus—but better? A lot of people say it’s better than the others, which would be truly sad. I tried to use the demo a few days ago and it seemed unbelievably clumsy. I couldn’t control the formatting of the track names, and there wasn’t even a command for centering text boxes. The interface uses weird cross-platform controls that remind me of the Squeak demo I saw a few years ago.

I ended up making my labels in FrameMaker instead. I don’t really recommend doing layout-type stuff in FrameMaker, but it has good table support and I’m very comfortable with its stylesheet interface.

rsync

Mike Bombich has written a tutorial on using rsync over ssh (via Mark Pilgrim). This is an amazing combination. I can change a few files locally and synchronize (or, as purists would say, reconcile) the entire ATPM Web site (10K files) with the server in a few seconds. This is my favorite example of something that Mac OS X can do right out of the box, but that was hard even with third-party software on OS 9.

SM2DGraphView 1.0

SM2DGraphView is a framework drawing graphs. I haven’t figured out why it uses arrays of NSStrings instead of NSValues.

httpflow

Bill Bumgarner and Ben Holt wrote some code for looking at HTTP sessions.

Even More Apple Music

ATPM 9.05

Early Friday morning we released the May issue of ATPM.

Quote of the Day

Listen. Strange women lying in ponds distributing swords is no basis for a system of government.Monty Python and the Holy Grail

Interface Criticisms

John Gruber rightly blasts Safari’s use of click-through. And Erik Barzeski voices some of my criticisms about drawers. There are only two drawers that I recall liking: the pages/thumbnails drawer in Preview and the Preview drawer in Path Finder. Apple’s guidelines for using drawers are vague.

Use drawers only for controls that need to be accessed fairly frequently but that don’t need to be visible all the time. (Contrast this criterion with a utility window, which should be visible and available whenever its main window is in the top layer.)

Huh? Utility windows aren’t visible all the time, either, because you can hide them. So where is the guideline that tells me when to use a drawer rather than a utility window? Presumably we should learn by example:

Some examples of uses of drawers include access to favorites lists, the Mailbox drawer (in the Mail application), or browser bookmarks.

In my experience, favorites and bookmarks work much better in separate windows, because of width issues. I’ve used programs that put the mailbox list in panes, and others that put it in a separate window. Both worked better than Mail’s drawer, which isn’t even in the keyboard loop.

A drawer’s contents should be included in the window components that the user can select by pressing Tab.

I think the key difference between a utility window and a drawer is that you never have more than one copy of a given utility window on screen at a time. So you would use a drawer when you want to be able to see two drawers at a time. For instance, Transmit uses drawers to show FTP transcripts. That’s potentially useful. But I’d still prefer separate windows because I probably don’t want the width of the transcript to be the same as the width of the connection window. And I might want to view a full screenful of the transcript next to a screen-high connection window.