Archive for June 2004

Wednesday, June 30, 2004

Gadget Development

Developing for Dashboard is nothing like developing for Konfabulator. There was almost zero chance that I would develop a a widget for Konfabulator. I’d have to learn a completely new platform, and anyone who wanted to use my widget would have to buy a license for that platform’s runtime. Dashboard gadgets, on the other hand, are Web pages. I already know HTML and CSS, and I have a collection of tools for working with them. The runtime is free. If I want to use Cocoa or Java, I can do that, too. John Gruber says:

In terms of attracting hobbyist-level developers, Dashboard is going to be an order of magnitude more approachable than Cocoa application development. If you know HTML and CSS, you can design a gadget layout. If you know JavaScript, you can program a gadget.

I can’t think of any possible way that gadget development could be based on something that would enable more Mac nerds to get up and running writing their own gadgets.

The Konfabulator developers are in an unfortunate situation, partially of their own making, but what’s getting lost in that coverage is that the Mac is now a platform for writing client-side Web applications.

Tuesday, June 29, 2004

The C Family of Languages

An interview from 2000 with Ritchie, Stroustrup, and Gosling (via the new Lambda).


Scott Knaster:

The Microsoft-baiting banners (e.g. “Introducing Longhorn,” “Redmond, start your photocopiers”) are silly. Microsoft isn’t shipping these features, but neither is Apple, until next year. So I guess it’s “Our vaporware is less vaporous than your vaporware.”

The photocopier line is especially silly, since Spotlight and Dashboard look like responses to Longhorn (or other software, depending on your perspective). Apple should grow up.

Brent and Erik respond to Safari RSS. I think it will help both of them.

PreFab UI Actions

With UI Actions, you attach a script to a native Mac OS X application, and the script will be triggered automatically by user actions you specify, such as opening or closing a window, selecting a menu item, editing a text field and many others. An attached script can query the target application for useful information about the user action that triggered it, including a reference to the affected UI element and all of its attributes such as position, size, title, role and value. Using this information, every attached script can draw upon the full capabilities of AppleScript, including Apple’s new GUI Scripting, to amplify and enhance the power of the target application.

Thursday, June 24, 2004


Tomas Jogin:

To begin with, they, the beggars—and some of the undead minions—all want an “invite.” Not an invitation, mind you, they want an “invite.”


Nicholas Riley:

lftp is really amazing. Perhaps it seems odd I'm saying this for a command-line utility, but it does what I mean, virtually every single time.

Code TODOs in RSS

Ben Hammersley has posted a short Perl script that collects TODO comments from source files and puts them into an RSS feed. I read TODO comments in BBEdit’s search results browser, but I'm tickled that finding and displaying them is so easy with Perl’s File::Find and XML::RSS.

Wednesday, June 23, 2004

Web Applications and the API War

Joel Spolsky’s essay on how Microsoft lost the API war is typical Joel. It’s informed and well-written, and yet because some of the minor points and assumptions are unsupported, I don’t quite believe the conclusion. When I read an essay at Daring Fireball (which you should support), the points usually click into place. I can often see early on where Gruber is going to take an argument and how he’ll get there. Then it’s just a matter of watching the exquisitely crafted dominos fall. Would Joel on Software read like that if I had a Windows background instead of a Mac background?

In any case, my main problem with Spolsky’s argument is that he sees .Net as almost a Netscape 6 kind of rewrite. But imagine if Mac OS 9 applications ran as first-class citizens on Mac OS X and if Carbon had automatic memory management and were accessible from a variety of modern languages. Now, maybe I’m all wrong, but I see this as good for Microsoft. They’ve maintained compatibility for Win32 applications. If there’s no return on your investment for porting to .Net, then don’t do it. At the same time, it is now much more attractive for developers to write new applications that will only work on Longhorn. Good developers like good tools; by providing good tools (and lots of marketshare—large numbers of people will upgrade to Longhorn), Microsoft will ensure that Windows development remains vibrant.

The “MSDN Magazine” technologies that Microsoft is always trying to sell to developers sound like QuickDraw GX, OpenDoc, and PowerTalk. Nice as these technologies were, Apple was never fully behind them. But by Spolsky’s own admission, the MSDN Magazine Camp has won. .Net is not a novelty, but a bet-the-company initiative. And not a very risky bet at that—unlike sticking with Win32 forever. Long-term, Win32 is a lose, and not just because of the Web. Microsoft realized this before most people. There was no way to restore the old jewel’s luster, so they built a new one, .Net, to keep desktop developers locked in, and to try to lock in the Web developers as well.

Speaking of Web developers, John Gruber has some interesting thoughts about Web applications:

The persnickety little UI details I obsess over — these are nothing compared to the massive deficiencies of even the best web app. But most people don’t care, because web apps are just so damned easy to use. What’s interesting is that web apps are “easy” despite their glaring user experience limitations.

What I missed when I dismissed them a decade ago is that web apps don’t need to beat desktop apps on the same terms. What’s happened is that they’re beating them on an entirely different set of terms. It’s all about the fact that you just type the URL and there’s your email.

I have two things to say about Web applications. First, they will continue to only make sense for certain kinds of functionality. The Web is becoming more important, and yet desktop isn’t going away. This is because software isn’t a zero-sum game like mindshare is. New Web applications don’t necessarily mean fewer desktop applications. On the contrary, we’ll need more desktop applications just to help build Web applications, and wrappers like Watson and Netflix Freak to make them easier to use. These are, of course, markets that .Net is aimed at capturing.

Second, I think the interesting thing about Web applications is how they play with our expectations. As bad as even the best Web applications are, they somehow feel better than non-native Mac applications—because they’re good for what they are. Exclude, for the moment, the benefits of being able to use a Web application, with your data, on any computer. Would you rather use Gmail or Chandler? Yahoo! Calendar or the original Palm Desktop?

Monday, June 21, 2004

Changing Aliases

Is it a bad sign that aliases on my drive keep changing to point to different files and folders? For instance, on Thursday I discovered that the alias to my downloads folder now pointed to the Eudora application. This sort of thing has been happening on and off for months. Disk Utility and DiskWarrior both say the drive is fine.

Tuesday, June 15, 2004

New PayPal Fee Structure

PayPal is spinning its new fee structure as a good deal, but the reality is that if you sell between $1,000 and $10,000 per month, you’ll pay a higher fee after August 6. Your fee only decreases if you’re selling more than $100,000 per month.

Monday, June 14, 2004

Clotho, OpenMCL, and Alpaca

Clotho is a Mac OS X IDE for OpenMCL, a free Common Lisp environment that can call Cocoa. Alpaca is a simple text editor—basically NSTextView with a REPL—that demonstrates calling Objective-C from Lisp. The bridging is not as pretty as PyObjC’s, but on the other hand you get Lisp’s expressiveness and compiled-code speed.

System Migration

Joe Mullins:

On the newly released G5s, there is a new feature in the Setup Assistant that launches on first boot. It has been called system migration by macfixit. I thought I would give our readers an in-depth look at this new feature.

Thursday, June 10, 2004


Mark Cuban:

At this point, many entrepreneurs think the next step is to take all this feedback, update their 100 page business plans and go out and raise money. It’s as if the missing link for success in a business is cash to get started. It’s not. Far more often than not, raising cash is the biggest mistake you can make.

iTunes and WebKit

Dave Hyatt:

iTunes does not use WebKit to render the music store. What you see when you visit the iTunes music store may look “Web-like,” but it isn’t HTML, and it isn’t rendered by WebKit.

Tuesday, June 8, 2004


Jason Snell:

iTunes does the heavy lifting. When iTunes plays back standard audio content (AAC, MP3, audiobooks, music streams), it decompresses those file formats and creates what’s essentially a raw, uncompressed audio stream. That stream is compressed on the fly using Apple’s Lossless Compression, encrypted, and sent to the AirPort Express. AirPort Express decrypts the stream, decodes it, and outputs it…

Monday, June 7, 2004

SpamSieve AppleScripts

I’ve posted some scripts for use with SpamSieve. Some show how to use the “score” script command to separate the very spammy messages from the ones that are more likely to be false positives. Others let you quickly discard the accumulated spam or redirect the non-spam messages to a second account that you check from a dialup or handheld. Leave a comment if you want to suggest a new script or contribute one that you’ve written.

Exif Untrasher

Lee Bennett:

[Exif Untrasher is] a free utility that attempts to recover images deleted from a memory card—even if you formatted it instead of erased it. I’m here to tell you first-hand that it works.

AirPort Express

The important thing to remember here is that the product is called AirPort Express. It’s a base station with some music capabilities, not a music device with wireless capabilities.

Buoy 1.0

Buoy is an interesting public-domain wrapper for Swing. It uses reflection to let you create Cocoa-style connections between event generators and event handlers, without the cruft of using interfaces and anonymous adapter classes. For instance, the Java:

widget.addEventLink(ActionEvent.class, obj, "doSomething");

is loosely equivalent to the Objective-C:

[widget setTarget:obj];
[widget setAction:@selector(doSomething:)];

Several benefits fall out of this design, and Buoy also makes other improvements to Swing. For instance, (like Cocoa) Buoy doesn’t generate events when you manipulate widgets programmatically.

I don’t write Swing code anymore, but if I did I’d surely want to use something like Buoy.

Saturday, June 5, 2004

Broken Windows

John Gruber makes some well-argued points about security myths, but the real story here is his implication that Mac users live in a good neighborhood in spite of Apple.

Zero tolerance, on the part of the user community, is the only policy that can work.

It’s similar to the “broken windows” theory of urban decay, which holds that if a single window is left unrepaired in a building, in fairly short order, the remaining windows in the building will be broken.

A fine theory, and it also applies to individual software projects.

Wednesday, June 2, 2004

Spam Filter Patent

Gary Robinson:

I don’t think most people in the antispam community should get too worried about this patent, unless they specifically know that their filter carries out the claim limitations mentioned above.

I read the patent myself first, so as not to be influenced, and interpreted it the same way Gary did. That’s not to say that I like it, but some of the negative reaction seems to be overblown.

ATPM 10.06

The June issue of ATPM is out.