The case for casings

Monday, July 31, 2006

Let's look at some of Apple's products:
  • iPod
  • iPod nano / iPod photo / iPod shuffle
  • iMac
  • Mac mini
  • MacBook Pro
  • Power Mac
  • Xserve
  • iLife / iWork
Sometimes they uppercase the first letter (iPod, iMac, iLife) sometimes not (Xserve, why not xServe?). Sometimes, I assume since it's part of the proper name, the second word is uppercased (MacBook Pro) sometimes that proper name reasoning fails (iPod nano, Mac mini).

I think the logic is consumer items get a lowercased 'i' prefix (iPod, iMac, iLife) and pro items get uppercased first letters. Oh, but then MacBook is uppercased, and iWork is lowercased. Maybe music stuff is lower, Mac stuff is upper? No, that doesn't work either: iLife, iWork, iMac. Maybe, simply, if the first letter is 'i' then it has to be lowercased. And second words get uppercased only if the editor feels like it.

Hmm....

Some people uppercase Mac like this: MAC. I assume that's so it parallels the fact that PC is uppercased. But of course I always think of MAC Addresses since, as an uppercased item, I assume it's an acronym (like PC is an acronym).

And, speaking of Macs, what happened to the word "Macintosh"? Search Apple's iMac, MacBook, Power Mac, and many other pages for Macintosh and you won't find it. I found it just once on a Mac mini page, and, very rarely on all the pages that discuss Mac OS X.

Where am I going with this? No idea. Just rambling thoughts....

A week from today is Steve's speech at the WWDC where, we're all guessing, he'll be announcing the new MacPro (not "Mac pro"). I'm just hoping he'll say "Macintosh" at least once. :-)

The minutia of optimizations

Wednesday, July 12, 2006

We just released Curio 3.2.1. Definitely grab it since it's packed with goodies for you. Yay!

The most important thing in there is a fix for wacky selection handling if you happened to have a list with an empty list item in it. Very flakey and we're very sorry about that one.

However, to make it up to you, we've added some other treats! :-)

All color pickers have opacity sliders for super flexible effects in combination with the overall figure opacity slider. New much easier methods for creating jump anchors and jump actions simply via Edit > Copy and Edit > Paste As > Jump Anchor or Jump Action. Cleanup in the Organizer to automatically purge orphaned assets when idea spaces are deleted, if requested. A tweaked HTML export template so the result looks more like the real Curio UI.

And the super-yummiest goody (IMHO) is a slew of optimizations. Perhaps this shouldn't be surprising but I love Apple's Shark profiler. I could spend days sleuthing around in its analytics.

Shark works by watching what you do and seeing what routines are called in an application. So, for example, I could start it, add a new list item to Curio, then stop it, and it'll tell me what routines were called and how much time as a percentage of the total time was spent in those routines.

The "minutia" word in the title is appropriate here. Most obvious big time sinks were found and tweaked a long time ago. Now, Shark tells me we're spending 1% of the time in this function. 2% in that function. In most cases, the tweak to make isn't obvious at all. Then you pull yourself back and say, wait a sec, I believe all 15 of these functions are all related. Why are they getting called? Do they have to be called? Can I avoid a call to sin or cos or sqrt which are all super slow?

Then you try an experiment: wait, if I simply cache the bezier path for each figure and maybe its rendered rectangular bounds so I don't compute it each time what'll happen? Zowee! I'm now avoiding tons of functions! What if I do smarter hit testing and distance calculations when users drag figures around? Zowee! More time is saved. What if I queue up all refreshes when a list is modified and do one big update instead of a jillion? Zowee! Zowee!

You get the idea.

After just a few of days of this, some operations, like adding a new, complex list item to a list which is sitting in a very complex idea space, went from (an embarrassing) 13 seconds down to almost immediately. Yeah, that's more like it!

We'll keep spelunking around in Shark of course as we've done all along. The joy of this job is that we truly love working on Curio. Features, fixes, and fine-tuning are all equally important to us, as is your feedback (nice alliteration!).

Take care and enjoy Curio 3.2.1!