Sunday, October 27, 2002
I’m trying out OmniObjectMeter
and finding it much more useful than Apple’s ObjectAlloc (though that is also good). It shows a stack trace for each allocation event, which makes it very easy to see which instances should have been deallocated and where the missing release
is. You can double-click on a line in the stack trace to select that line of the source in Project Builder (alas, it doesn’t integrate with BBEdit). Today, OmniObjectMeter helped me track down a leak in a third-party framework that the in-development version of SpamSieve
uses. It only took about five minutes, which is especially great since I hadn’t used the product before, save for double-clicking it on the WWDC CD to see what it was. At $149, OmniObjectMeter isn’t cheap, but if it proves this useful again I’ll probably buy it.
Saturday, October 26, 2002
I’m really enjoying the new Fox series Firefly
, which airs Fridays at 8. The first episode hooked me, and it seems to get better each week (except for when Fox decides to show baseball instead—grr
). Last night’s episode, “Out of Gas,” recycled a standard sci-fi plot, but it was told in an unusual fashion with three overlapping timelines. It was also surprisingly funny for a drama in which the crew almost dies. The show has good characterization, sharp writing, and a style that sits just right with me, though I can’t pin down exactly why.
Friday, October 25, 2002
Erik D. Demaine, Susan Hohenberger, and David Liben-Nowell wrote a paper on the computational complexity of Tetris.
In the popular computer game of Tetris, the player is given a sequence of tetromino pieces and must pack them into a rectangular gameboard initially occupied by a given configuration of filled squares; any completely filled row of the gameboard is cleared and all pieces above it drop by one row. We prove that in the offline version of Tetris, it is NP-complete to maximize the number of cleared rows, maximize the number of tetrises (quadruples of rows simultaneously filled and cleared), minimize the maximum height of an occupied square, or maximize the number of pieces placed before the game ends. We furthermore show the extreme inapproximability of the first and last of these objectives to within a factor of p^(1-epsilon), when given a sequence of p pieces, and the inapproximability of the third objective to within a factor of (2 - epsilon), for any epsilon>0. Our results hold under several variations on the rules of Tetris, including different models of rotation, limitations on player agility, and restricted piece sets.
I spent a fair amount of time in David’s office last summer and never once saw him playing! Some of the comments on Slashdot are pretty funny. Also see the grad-student emotion check-list.
Thursday, October 24, 2002
points to an interview
of Marissa Mayer about Google’s UI design. Google does user testing every ten days, and it shows. Mayer also mentions that Google’s text-only ads outperform graphic ad banners. It’s too bad that ad middle-men like FastClick
only offer the standard graphic ads. It would be a win-win-win if smaller sites like ATPM
could run text ads.
A short paper by Philip Wadler (via Lambda).
Lazy, or call-by-need, languages schedule work dynamically by building closures, and shun side effects; strict, or call-by-value languages avoid the overhead of closures and may exploit side effects. Each style has complementary advantages and complimentary adherents.
The gap between the lazy and strict camps has two dimensions, which we shall name style and models. Recent developments suggest that along both dimensions the gap is shrinking. We list some commercial applications of each kind of language, and examine each dimension of difference in turn.
James Fallows, writing for The Atlantic, assumes that we go to war with Iraq and win. What next?
Going to war with Iraq would mean shouldering all the responsibilities of an occupying power the moment victory was achieved. These would include running the economy, keeping domestic peace, and protecting Iraq's borders—and doing it all for years, or perhaps decades. Are we ready for this long-term relationship?
Wednesday, October 23, 2002
I just released DropDMG 2.0, a $10 shareware utility for making disk images. The main Web page has lots more information, but I wanted to list some of the highlights here:
- Supports all the .dmg formats, as well as .img
- Rich-text license agreements in multiple languages, and license
agreements that work on Mac OS 9
- Images that auto-open when you mount them
- Post-process images with BZip2, GZip, or MacBinary
- Fix downloaded DMGs so that they open in Disk Copy
- Hold down Control-Shift to convert an image
- Hold down Option to set temporary preferences for the current item
- Fully AppleScriptable
Thanks to all the beta testers and everyone who registered DropDMG 1.x!
Tuesday, October 22, 2002
TidBITS has posted an article on troubleshooting techniques that anyone can use.
Although specialized knowledge certainly helps, troubleshooting is a universal skill. If you can figure out why your brakes are squeaking or why the sewing machine is jamming, you can figure out computer-related problems. Despite what many non-computer people think, there's no real difference.
has compiled the top 20 RFCs, based on the number of hits in Google.
“Feanor” adds a comment to Slava’s Mach-O ABI post:
Case in point: the _msgSend routine of ObjC is in /usr/lib/libobjc so every message sent in any piece of ObjC code has that 11 cycle penalty tacked onto the beginning, and then it gets the 9 cycle PIC penalty once you actually get there... every object function (method) call in ObjC goes through that.
iTunes recompiled by GCC/MachO was 30% slower at MP3 decompression than with CodeWarrior/PEF. Lame MP3 Encoder was 50% faster with CodeWarrior PEF than with GCC/MachO, both on OS X. (both are Carbon apps)
Monday, October 21, 2002
This new feature in Movable Type 2.5
sounds interesting, but turn if off before editing a post that links to a big QuickTime movie!
hyperjeff.net has compiled a list
of articles about programming in Cocoa and organized them in a sensible fashion.
Sunday, October 20, 2002
A mark of a great interface is that when you try a shortcut that you think should
work, it does
. Today’s example, from BBEdit: hold down Option when selecting New with Stationery to edit the stationery pad instead of creating a new document.
MDJ’s 8000-word converage of Apple’s financials includes this nugget:
That means that after sixteen months, Apple’s US-only retail stores are now contributing more revenue to the company than FileMaker, Emagic, PowerSchool, and all Asia and Pacific countries (except for Japan) combined.
In the October 16th Your Mac Life
), David Pogue says that Apple intends Command-Option keyboard equivalents to be for system use, citing the Dock and Jaguar screen zooming as examples. My recollection is that Command-Option was always for application use and that the Control combinations were reserved for the system. A quick look through the human interface guidelines (classic
) didn’t provide any confirmation for my memory or Pogue’s assertion, though evidence from Apple’s recent software (which, of course, doesn’t always follow the guidelines) is certainly on his side.
In any case, I would prefer
that Apple state once and for all that the system will stay away from Command-Option (except for the specifically mentioned equivalents like Command-Option-H) and applications should stay away from Control. Applications need Command-Option because with OS X Apple has co-opted so many of the plain Command key equivalents. (Plus, if an application uses a plain Command equivalent, it should be able to use the Command-Option variant for a related command.) It would be better if Apple reserved Control for its own use because that’s the only way to allow for future expansion of the system equivalents without taking back combinations that some applications are already using. And, similarly, Control equivalents are the only sure way for users to assign global shortcuts (e.g. with QuicKeys) that are guaranteed not to conflict with applications.
Joel Spolsky of Joel on Software writes:
Theoretically, you get cross-platform Nirvana. And thanks a lot of hard work all the little platform-specific touches (like Alt+Space N to minimize a window) are finally right, which is one of the biggest weaknesses of previous efforts at WORA like AWT and Swing. If I had to start developing a new commercial app I would seriously look at XUL.
…XUL may well be a real benefit to Apple and Linux, because application developers finally have a way to deliver to all three platforms for perhaps 110% of the cost of Windows alone.
Unfortunately, most of the Mac platform-specific touches are wrong. The UI doesn’t look right or feel right. I would guess that XUL is to blame for why Mozilla is so slow to start up and why the UI is so sluggish even after it’s running. I’m not sure XUL is any better than Swing from the user’s point of view. But I do think Joel is right about Netscape and IE; Netscape dropped the ball, and most people used IE because it was better.
Saturday, October 19, 2002
From the reviews I had read, I expected The Ring
to be good. People were saying it was the best in its genre since The Sixth Sense
. One IMDB user writes, “Never have I seen a film that has affected me so.” I found it boring
, though thankfully it didn’t drag on as long as the similarly engaging Fellowship of the Ring
. David Dorfman’s precocious “Aiden” was entertaining, but the parents didn’t live up to their billing. Brian Cox has been in far better films, like Rushmore
From the New York Times:
Mr. Read saw words as playthings and told The New Yorker that “jubilance is an explanation for a lot of the things that happen in language.” He loved and studied slang, euphemisms, pig Latin, double talk, adult baby talk and graffiti. Exuberant, obviously impromptu words like blustrification and discombobulate delighted him.
IDG chief Charlie Greco, quoted by the Boston Globe:
You know how badly they [Apple] want to do San Francisco…We don’t have to let them. We might not let you cherry-pick which Macworld events you do…that’s currently under discussion here.
Slava Karpenko writes about the problems
of Mac OS X using the Mach-O ABI, estimating that it causes a 10% performance hit because Mach-O was designed for a CISC architecture. I haven’t studied this enough to know whether he’s right, but I’ve not heard any
arguments that Mach-O is technically better.
Friday, October 18, 2002
David Pogue writes in the New York Times:
To be sure, the online community is wasting no time in rubbing these gaffes in Microsoft’s face. But nobody’s mentioning the most disturbing part of all this: That it’s part of a longer string of fraudulent Microsoft marketing efforts.…Microsoft’s latest blunder demonstrates is neither jealousy nor wounded pride; it’s pure arrogance. The company thinks it can get away with anything. This time, at least, it’s wrong.
Thursday, October 17, 2002
From the Boston Globe:
The only player with a lack of touches was Vin Baker (1 for 3). After the game, O’Brien said he doesn’t “have any plays for Vin right now.”
Wednesday, October 16, 2002
In Terminal, the apostrophe is too short and the sequence o/
is displayed as ø
. It’s still better than the alternatives, though…
Tuesday, October 15, 2002
Daring Fireball has a great writeup of the Microsoft switcher fiasco.
The details of the switcher article, however amusing, are not important. The real story is that at Microsoft—indisputably one of the most powerful, most successful corporations in the world—it is standard operating procedure to fabricate customer testimonials.
I want a Replace All button in the window that asks what to do when there’s a copy collision—in other words a button like in the Mac OS Finder. I welcome the ability to decide on a case-by-case basis, but I nearly always want to replace everything; that shouldn’t take two clicks. Windows actually handles this rather well, if I recall.
And, since this is my first Finder Wish List entry, I must mention the obvious: the Finder should remember views settings such as window positions, icon positions, open/closed disclosure triangles, and whether the toolbar is hidden. The Jaguar Finder is better than 10.1’s here, but I still run into glitches a few dozen times a day.
I want to recant my previous statement
that NetNewsWire is a good idea that isn’t useful in practice. The key, for me, was to give up trying to use it to read the news (too many sites only have excerpts) or to select which stories to read (clicking a headline often jumps to the linked-to story rather than the referring story). In fact, it’s very useful simply as an indicator of which sites have changed and which have stories worth reading. So I basically ignore the preview pane, and click only in the left pane.
Monday, October 14, 2002
One of the little things that’s been bugging me about Jaguar is that its Terminal application doesn’t display ProFont
properly. It always draws the character sequence l/
as a blank. This is a real problem because ProFont is the best monospaced font in the known universe, and rivals Geneva and Espy Sans for the title of best screen font period. (Plus, it’s apparently the only one of the three that Core Graphics can draw properly; the others it spaces
Since I don’t use Terminal that much, Monaco—after its recent tuning—would be an acceptable alternative except that Jaguar’s Terminal gets its spacing all wrong
. Luckily, Google pointed me to a page by Daniel Sandler that mentions the problem
and offers a solution
: use ProFontISOLatin1 in Jaguar’s Terminal. Many thanks to Daniel and his informant.
Update: Core Graphics apps like Terminal and OmniOutliner draw ProFontISOLatin1’s hyphen character shorter than it should be. It looks fine in Mailsmith and iCab. The quest for the perfect Terminal font continues.
Wednesday, October 9, 2002
I just caught up on my mailing lists and noticed that some people are working on porting Log4J
to Cocoa. I found Log4J immensely useful when I was doing a lot of Java programming, and logging in general is often more effective than stepping through code with a source-level debugger.
Saturday, October 5, 2002
My BBEdit Backups folder is open in a list view sorted by date. I select 4957 items and type Command-Delete to move them to the trash. The Finder locks up with the larger and even more brightly colored spinning pizza of death—for 45 minutes
. This is on an 800 MHz G4 with no other load except for iTunes.
I put the files back in the folder and rebooted into OS 9 to see how fast it
was. In 9, moving the same files to trash took 57 seconds. Add about four minutes to account for the two reboots, and that is still nine times faster than the OS X Finder.
Please don’t anyone tell me that I need to optimize my hard drive or buy more RAM, that the Finder is new code, that I should use Column view, that I should know not to put so many files in one folder, that I should have used rm *
, or that isn’t it great that iTunes didn’t skip while this was going on.
John C. Welch calls Apple on poor AppleScript support:
AppleScript is one of the most critical technologies on the Mac platform, yet unlike its positive attitude towards other high profile technologies, like WebObjects, Apple seems to be quite divided on AppleScript (AS). I tend to look at this as “Good Apple” and “Bad Apple”.
Friday, October 4, 2002
wishes he hadn’t thrown away his early e-mails. I still have all of mine since late ’96, and some from ’95. Basically, I have everything from after I stopped using AOL’s client and BlitzMail
—minus the messages that were lost to Emailer’s many database crashes. Among many messages that I’ll probably never read again (like the one where I asked Metrowerks where my CodeWarrior Academic CD was), I found a few of sentimental value including the initial e-mail exchange with Danny Novo where we discussed my joining ATPM
All, told it’s about 9 GB in mbox format, far less than the amount of disk space I devote to MP3s. Unfortunately, most e-mail software is not designed to handle large amounts of mail. Entourage’s single database has a strict size limit. I used to keep my archives in Mailsmith, but it gets too slow with lots of mail, bloats the file sizes with its database indexes, and doesn’t let me “disconnect” less frequently used mailboxes when I synchronize with my iBook’s small hard drive. So the bulk of my archives are handled by Eudora, whose great speed encourages me to put up with its weird interface.
Thursday, October 3, 2002
From the Globe:
Best said O’Brien told him he was comfortable going with the three guards he had if Best didn't join them. “I said, ‘Fine,’ but that’s not very appetizing in my eyes,” said Best.
Too bad—Best is just what they need, and much cheaper than Anderson. Do they really want Delk to start against Kidd next June?
MDJ 2002.10.02 includes a great article on Internet Config:
Internet Config already contained a complete and useful mapping of file name extensions to creator types, completely capable of mapping almost any file you’d need to send to a Windows machine, and yet Apple’s management wouldn’t even consider using it instead of forcing file name extension on every program, no matter how grossly inappropriate they may be. You do not need Omni Outliner [sic] documents to end in “.ooutline” because there is no Windows version to exchange files with. You definitely don’t need your AirPort Admin settings saved in “.basestation” files. Amazingly, Apple recommends with a straight corporate face that you should search for AppleWorks files by searching for files with the extension “.cwk”, as in “ClarisWorks,” saying that file type “is not an accurate way to search for files,” even though that’s only true because Apple told programmers to make it that way.…Or maybe not: since Internet Config so clearly disproves the NeXT notion that file system metadata must be eliminated, Apple may be deliberately deemphasizing the technology.
With OS 9 and earlier versions of OS X, I could download a file to the desktop and move it to another folder before the download had completed. With Jaguar, the Finder complains that another task is using the file. This is annoying, especially since I often used it to avoid OS X’s clumsy save dialogs.
Today marks the third time in the last week that StuffIt Expander 7 has failed to decode an encoded file. The first two were MacBinary files; this one was the BinHex file for the Toast Titanium 5.2 updater. In all three cases, Expander would simply ignore the file. I made an expander 6.5 drop box using StuffIt Express PE, which had no trouble decoding any of the three files.
Update: downloading the newer
version of StuffIt Expander, which has the same
version number, fixes the problem.
Update 2: apparently Expander 7 is also flaky
on OS 9.
Wednesday, October 2, 2002
The October issue
of ATPM is out. I particularly like the review
of iTunes 3. In the original version of the review, Daniel wrote that iTunes was the first iApp released. I knew that wasn’t right because I remembered that after iMovie was released there were rumors about an upcoming iMusic. I searched the MDJ
back issues to see exactly how old it was. It turns out that iMovie was released in October 1999. iTunes and iDVD were released in January 2001. We had trouble believing that iTunes is that young, and not just because of the inflated version number. This just goes to show that iMovie is way overdue for a maintenance update.