Archive for July, 2009

Here, have a coupon

Sunday, July 26th, 2009

Voices That Matter: iPhone Developers Conference
October 17th and 18th.

This October 17th and 18th, there’s a conference for iPhone developers in Boston, which the organizers asked me to attend.

The conference is called Voices That Matter: iPhone Developers Conference, and the titular voices include Aaron Hillegass (famous for his book), Erica Sadun (famous and infamous for her jailbreak work and advocacy), Bill Dudney (famous for his book), Stephen Kochan (somewhat famous for his book), Jonathan “Wolf” Rentzsch, Fraser Speirs, and Daniel Jalkut.

As most of you know, I’m not an iPhone developer—I write for the Mac only. So I declined that part of the offer.

The other part was a coupon for you, my readers. I know many of you probably are iPhone developers, so I asked whether they would still like me to give you that coupon code. They agreed, so here it is:

PHBLOG

(Those of you who read Jesper’s weblog may recognize it.)

Without the coupon, the registration fee is $495 until September 12th, $695 thereafter. The Word document they sent me says that that the coupon will knock $100 off.

Enjoy the conference!

System vs. Target in PackageMaker

Saturday, July 25th, 2009

The PackageMaker user guide doesn’t explain the difference between “system” and “target” in PackageMaker’s pop-up of Requirement criteria:

For example, “System OS Version” versus “Target OS Version”.

So now that I’ve figured it out, I’ll fill in the gap for you.

  • System is the volume that the installing user is booted from.
  • Target is the volume that the Requirement is testing. (Your Requirements are applied for each volume.)

So if you want to make your Installer package installable to any bootable volume, make it installable to any volume and add a Requirement for Target OS Version. (Another method you may try is “File Exists on Target: /Library”.)

If, on the other hand, you want to make your Installer package installable to the Home folder, make it installable only to the Home folder and add a Requirement for System OS version.

How you can get this wrong

If you make your package installable to the Home folder but test the Target OS Version, your package is broken: It does not work for those of us who have our Home folder on a non-bootable volume (in my case, separate from two other, bootable volumes). You must use the System OS Version, and hope for the best.

If you make your package installable to any volume but test the System OS Version, your package is broken: The user will be able to install your software to a volume whose version of the OS cannot run it. You must use the Target OS Version.

As far as I know, there’s no way to make a package that does both properly, since the choice of any volume, booted volume only, or Home only is per-package, not per-choice or per-contents.

Dramatic twist ending

The above is good if you’re targeting Leopard. If you still support Tiger, there’s a twist. (Obligatory video link.)

GrowlMail is a good example. As a Mail bundle, it requires a couple of user-default settings to work. That makes installing to /Library pointless, because the settings will only be set for the user who installed it, so it won’t work for any other users on the system.

Leopard allows installing to ~, so that’s easy: I use System OS Version, as I suggested above.

But Tiger’s Installer can’t install to ~. The same Installer package that works on Leopard does not work on Tiger (I even tested with earlier betas—it has never worked in any 1.1.6 beta). I don’t know how nobody noticed this, not even our Tiger testers.

The Installer package for Tiger must target /Library, since I can’t do the proper thing on that OS version, so I must make separate GrowlMail packages for Tiger and Leopard.

  • The Leopard package installs to ~/Library and uses System OS version, as I suggested above.
  • The Tiger package installs to /Library and uses both Target OS Version and System OS Version:
    • If the user is running on 10.5 or later (System OS Version ≥ 10.5.0), the package tells them to use the other package. (The other package has a similar check.)
    • If a destination volume does not have 10.4 or later installed on it (Target OS Version < 10.4.0), the package tells them they can’t install there.

This is what you’ll find in Growl 1.1.6b4 and 1.1.6 final. It’ll go away in 1.2, since we’re dropping Tiger then.

The correct way to write a bug report in RadarWeb

Wednesday, July 15th, 2009

While I’m making screencasts of OmniWeb…

RadarWeb provide a JavaScript tool to fill in the section headers for their desired format automatically.
QuickTime/H.264, 960×538, 376 K

This is the format they want you to use, and since a few months ago, it’s now easy for you to use it.

My documentation viewer

Wednesday, July 15th, 2009

This is what I use to view Apple’s documentation:

My web browser.
QuickTime/H.264, 960×538, 1.3 MiB

The application is OmniWeb. I have a series of entry points bookmarked in the (hidden) Favorites bar:

(Someday, Carbon will perish from the list, the ones after it will move up, and another framework—probably either QTKit or Core Animation—will become the new ⌘8.)

And yes, those are all file: links.* Your web browser is perfectly capable of displaying web pages stored locally, and that’s all the Apple documentation is: locally-stored web pages.

With this arrangement, I can get to the reference information I’m looking for faster, and I can have multiple references (even multiple definitions) open at once because OmniWeb supports tabbed browsing.

Here are some other pages worth bookmarking:

You can use these and other bookmarks with a nice feature of OmniWeb which has also, more recently, appeared in Google Chrome: You can type any substrings from your bookmarks’ names and URLs into the address bar, separated by whitespace, and it will know what you mean. So, for example, I can type “kt kit”, and OmniWeb knows I mean “QuickTime Kit”; I simply hit return, and it takes me to that framework reference.

UPDATE 2009-09-07: Updated links to Snow Leopard’s docset name (where possible).

* On Leopard, change the docset name to com.apple.ADC_Reference_Library.CoreReference.docset.

Curtains

Thursday, July 9th, 2009

Via the DFLL, a half-press-release-half-article about “PageMorph”, by a company named EyeWonder.

Here’s EyeWonder’s demo. It waits a minute or so before the ad fully deploys, for maximum caning-you-in-the-back-of-the-head effect.

Following quotes are from the aforementioned article.

Taking attention-seeking to a whole new level, rich media company EyeWonder on Wednesday debuted a new home page-takeover ad that appears to manipulate a surrounding Web page by shrinking, stretching, crumpling or otherwise animating a real-time screenshot of the page.

Shit like this is why I have JavaScript turned off in my browser.

“Attention-seeking”. More like grabbing viewers by the shoulders and shaking them while yelling into their ear.

Thoroughly immersing audiences in an ad experience, …

Similar to how you would immerse a lobster in boiling water, with about the same amount of screaming.

… the PageMorph takeover format is just what marketers and publishers are looking for…

And viewers are running from.

Also, I dispute that publishers are looking to piss off their readers. I generally think publishers like to keep people looking at their content.

“Publishers are looking to create premium placements to sell to advertisers while also keeping ad clutter off their home pages,” said Quist.

Of course. It keeps ad clutter off your page by ripping your page in half and showing the ad through it.

Here’s my own preview of the technology. (NSFW.)

EyeWonder reports that these ads often see a higher-than-average total time of interaction — some placements nearing the one-minute mark.

During which time, readers are going “ARGH WHAT THE FUCK I JUST WANTED TO READ THIS ARTICLE”.

Rich media ads accounted for 7% of online advertising during the first half of 2008, according to a study conducted by the Interactive Advertising Bureau and PricewaterhouseCoopers.

Is it just me, or is “rich media” a euphemism for “slapping readers in the face”?

Last year, EyeWonder reported that revenue increased 67% year-over-year, although the privately held company declined to provide specifics.

They had three customers and now they have five?

“Certainly display advertising has taken a hit during this recession and is a concern for everyone in the ad industry,” CEO John Vincent said earlier this year. “However, EyeWonder invested in 2008 in our service and product offerings…”

EyeWonder invested in… itself!

Meanwhile, today, Peter Hosey invested in my lunch. By making myself a sandwich.