Archive for June 19, 2003

Thursday, June 19, 2003

Independent Tunes

Mike Swaine points to a report from Apple’s meeting with the independent music artists, which has some fun with statistics:

45% of all songs have been bought as an album. In other words: don’t worry about the death of the album format. 45% of people prefer to buy as an album anyway, even though they always have the option to only buy per-song.

Another way of looking at it would be to say that people are buying about ten times as many singles as albums. In other mathy book news, when I was in the airport last week I noticed that John Allen Paulos has a new book out, about the stock market. Paulos is also author of the classic A Mathematician Reads the Newspaper. No more book plugs for a while—I promise.

Core Mac OS X And Unix Programming

Aaron Hillegass and Mark Dalrymple have written what looks to be a more advanced book on Cocoa and Darwin, however the table of contents leaves me wondering. It spends 52 pages reviewing C, but only two pages on Rendezvous and five total on ObjectAlloc, Sampler, QuartzDebug, and CHUD (that’s Computer Hardware Understanding Development not the classic 1984 movie, although Hillegass’s other book does explain OO delegation in terms of Knight Rider). In any case, it seems to break some new ground for Cocoa books. Unfortunately, that doesn’t mean it covers AppleScript.

Aqua

Have you ever switched from Graphite to Aqua to take screenshots and been surprised by how bright it is?

Tail Calls in Objective-C

Andrew Pinski informed me that although not required to by the language standard, GCC 3.1 does optimize most tail calls in Objective-C. This gives a little performance boost for recursive algorithms coded in the right form (take a look with gcc -S), and it can be the difference between correctness and a crash for deep recursions. Dan Sugalski has promised to discuss this at some point. GCC does not optimize tail calls in methods that catch exceptions or use AltiVec. Andreas Bauer’s master’s thesis describes how a future version of GCC may do better.

IE Mac

Tantek Çelik, a Tasman developer, has links to most of the posts. I don’t really have anything to add to the discussion.

Scheme Books

Kent Dybvig’s The Scheme Programming Language is online. Also online is How to Design Programs by Felleisen et al, which I’ve not read, but which is said to be excellent. To try out the examples on Mac OS X, I recommend JScheme and DrScheme.

Computers in Education

Jerry Kindall links to a great article by Theo Gray (the really enthusiastic guy who demoed Mathematica at a recent Macworld Expo) and Jerry Glynn. This brings to mind the famous Steve Jobs quote:

I used to think that technology could help education. I’ve probably spearheaded giving away more computer equipment to schools than anybody else on the planet. But I’ve had to come to the inevitable conclusion that the problem is not one that technology can hope to solve. What’s wrong with education cannot be fixed with technology. No amount of technology will make a dent.

It Adds Up

I’ve got to admire Pierre Igot for writing a whole page about the brief hole in Mac OS X’s input buffer.

In the good old days of Mac OS 9, even if you clicked on something “in advance”, before the software was actually ready to process your click, your mouse click would be recorded in some kind of “buffer” and would be applied as soon as the software was ready. It was the same with keystrokes.

In Mac OS X, all too often, if you start clicking or typing something before the software is actually ready to register your actions, then what you’ve clicked or typed gets lost in unresponsive UI limbo forever.

It's irritating.

Igot also wrote an article about the intrusiveness of background processes.

As Rob Fleming would say: these things matter.

Putting Code in Books

Dave Thomas tells how he did the code examples for the Ruby book in LaTeX.

Finder File Extensions

I think the real reason to call these extensions rather than suffixes is that, like Mac OS extensions, they cause problems. Here’s an example from Jonathan Rentzsch (whose last name is much longer in English than in IPA).

Liquid

Brent Simmons argues for Web pages with white space on either side of the text, saying that if the text goes from edge to edge he’ll have to make his window narrower in order to read it. I’m the opposite. I prefer pages with flush text so that I can use a narrow window to begin with and not waste any screen space. I don’t like seeing a horizontal scroll thumb that’s enabled only so that I can scroll to the right and see more white space. I find the layout of Daring Fireball particularly odd in that the width of the text doesn’t adjust to the font size. With a large font, there are too few words per line; with a small font, too many. Liquid layouts aren’t perfect, but they do give the reader an extra degree of freedom to play with.

Getting Started

31 Songs

Sven-S. Porst reviews Nick Hornby’s 31 Songs, which seems to be the U.K. version of Songbook.

Writing about music in an engaging or thought provoking way is hard—I mostly fail to do so and so do many writers in music magazines. While Nick Hornby may have the back-catalogue of knowledge, I don’t think he’s terribly good at writing about music. Furthermore, reading the book made clear to me that I appreciate Nick Hornby as a novelist and that I hardly care about anecdotes of his life.

For the record, I thoroughly enjoyed High Fidelity and About a Boy. The movies are good, too, but different. How to Be Good started out well, but then it got heavy handed and went nowhere.

Garbage Collection

Dan Sugalski looks at reference counting and garbage collection. It’s a nice, short introduction from a practical point of view. Garbage collection is a huge area of current research, with many PhD theses awarded to people who figure out how to make it faster and more deterministic.

Using CVS and Project Builder

I don’t actually use CVS with Project Builder, but this looks to be a useful guide if I ever get a developer account on SourceForge.

Safari Extensions

Saving a C file in Safari

Enough said.