FastScripts 2.3.2

June 4th, 2007

FastScripts 2.3.2 has been released, and contains a few very significant bug fixes:

  • Support for aliases to folders in script hierarchy!
  • Improve performance of syncing changes to script folders
  • Fix display of keyboard shortcuts on non-US keyboard layout
  • Avoid adding menu item separators for empty script folders

This was easily the most difficult bug-fix release I’ve shipped yet. See the first item in the list above? Wonder why there’s a an exclamation point at the end of that sentence? Partly it’s because the feature has been requested for many years, so it’s long overdue. But mainly it’s because finally delivering this functionality puts a cap on what have been some very frustrating and difficult design changes behind the scenes with FastScripts.

All of this work, and all I get is a double-dot bug fix release?

The reason is that although FastScripts is dramatically changed by this fix, I do consider the failure to support folder aliases as a bug. It was an oversight on my part when I first designed FastScripts, and the oversight cost me dearly in the ways I decided to implement it. The short story is that the automatic syncing that goes on between your scripts, the menu display, and your keyboard shortcuts is all sort of magical. It’s a design goal of FastScripts that you should be able to do just about anything you like with your scripts: move them, edit them, delete them, add shortcuts, remove shortcuts, etc., and that FastScripts should not only keep up but keep up correctly, without requiring you to quit and relaunch the application.

Allowing folder aliases just adds to the complexity. For instance, a particular script can now be pointed to by two separate keyboard shortcuts, which reach the script via different paths through the script tree. Sounds academic, but it’s important to distinguish between these two shortcuts, because one might be a global shortcut, and the other application-specific.

The magic comes at the cost of repeated developer forehead-slapping. Enjoy :)

Update: I was sort of holding my breath hoping nothing too terrible would be discovered in this release. Well, so far nothing too terrible, but Takaaki Kato found a little issue: aliases to applications bundles no longer show the application as a launchable icon in the menu. The problem here is aliases to .app bundles are technically aliases to folders. The new feature is working too well! I will get working on a fix for this.

Update 2: Fixed in 2.3.3.

Service Scrubber

June 2nd, 2007

Most of us face the problem of inertia in almost everything we do. We eat the same foods, watch the same television, take the same walks, go to the same parks, talk to the same people, day in and day out.

And in many ways this is good. But the sheer inertia of our habits can prevent us from realizing how much better things could be with just a little tweaking. Walk a slightly different route one day on the way home from work, and lo and behold, a secret urban garden (my gift to WWDC attendees and SF SoMa workers).

When it comes to computers, I consider myself especially sensitive to the frustrating ways that computers do what I don’t want them to, which is why it’s surprising that it’s taken me this long to install and embrace Service Scrubber, from Many Tricks. The software is free but donations are accepted. I donated, and you will too!

Service Scrubber does one thing well: it gives you power over the (quite likely) sprawling System Services menu on your Mac. Not only does it let you show or hide items, it also lets you remove or change keyboard shortcuts assigned to them. Nifty!

The problem with services is they’re installed passively when you install applications on your Mac. If you’re like me and tend to download and lazily keep around a bunch of applications, your menu will be booming with items you don’t really care about. When I first launched Service Scrubber, I got the unenjoyable spinning rainbow cursor, which was a symptom of it digging through my massive 125 long list of installed services. This was the only user-unfriendly experience I met, and it was quickly made up for. From then on I was in control of everything. And loving it. As I disabled services I would never use, I felt the usefulness of my Mac grow greater with each unchecked box.

Using Service Scrubber to clean up your menu is one thing, but even more significant is the ability to reclaim valuable keyboard shortcuts. As I browse the list of services that I am now disabling, I flash back to the dozens of times I’ve accidentally invoked them. “Grr! Why the heck is the JavaBrowser opening? I don’t even like Java!”

My only criticism of the application is a minor usability issue with the list of services. When an application has provided multiple services, they’re collected in a disclosure group named after the application. But when only one service is listed for a particular application, it shows up in the list by service name. It’s hard to tell at a glance which application these services belong to.

Few utilities scream “necessary” as loudly as Service Scrubber, which is why I’m ashamed it’s taken me this long to overcome my own inertia and to install it. Apple should buy Service Scrubber from Many Tricks and make this part of the standard user experience. Without it, Services are terribly broken.

XML-RPC Response Parsing Failed

May 31st, 2007

We are currently living through a minor sort of plague when it comes to remote editing of PHP-based blogs. As web hosting companies upgrade to PHP 5.2.2, some of you may notice that your attempts to publish or edit entries with MarsEdit yields an error dialog with a cryptic error “XML-Response Parsing Failed.” This bug is caused by a bug in PHP that causes blogging systems to return blank responses instead of the expected XML result.

WordPress was quick to work around the bug, and included the change in their 2.2 release. Unfortunately the 2.2 release also added a minor time zone bug, so we’ll be looking forward to 2.2.1 for complete normalcy.

If you want to fix the bug yourself on whatever system you’re using, the workaround seems to be essentially adding this line to the top of your XML-RPC php file (after the “<?php”):

$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );

Nasty bug. Easy workaround. Hope this passes soon. I get new support inquiries every time DreamHost updates a batch of servers :)

(Big thanks to “mph” for first bringing this issue to my attention in the MarsEdit Forums)

Marketing A Negative

May 30th, 2007

One of the things I really enjoy about the UK is the widespread availability of “instant takeaway food.” It’s very easy to find something in a plastic wrapper that is of relatively good quality. By no means should the quality of plastic-wrapped foods be the final measure of a culture, but it sure is nice have affordable, tasty picnic lunch within about 5 minutes reach.

People in the US who haven’t visited the UK probably don’t understand. Sure we have “fast food.” We even have a culture dominated by fast food. But the food we get from a restaurant like McDonalds actually takes longer and is less tasty than the food people in the UK can pick up off the shelf at a store like Pret a Manger. Not only do they have a wide selection of cold sandwiches (made fresh that day, it seems), but they’ve even got hot wraps under heat lamps that, miraculously, are tasty and melty when you open them up 15 minutes after buying them.

I’m going out on a limb here, but I suspect that the popularity of Pret in the UK has probably had a huge influence on the entire “ready-made food” market there. While most chain restaurants in the US strive to be the next McDonalds, most chain markets, delis, newsagents, drug stores, supermarket, everybody in the UK strives to be the next Pret – or at least keep you from going to Pret. Thats how it seemed to me, anyway.

I like Pret, and I appreciate what I assume they’ve done for the UK food landscape. I like them so much that I decided to spend some of my free time just browsing their corporate home page. While taking in various facts about the company I was amused to see this clever example of “marketing a negative”:

They’ve used the predictability of a “franchising” link on fast-food websites as a means of drawing attention to the fact that they don’t. The “Franchising” link rates top level placement at most fast-food corporate sites because they’re hoping business people will notice the link and decide to open a new location:

So what use is the “Franchising” link on the Pret page? It’s not there for the hapless business person who’s curious about opening a franchise. It’s there to demonstrate for all who view it that Pret is too cool for franchising. You’d like to replicate us, but it just can’t be done. We’re above the fray when it comes to all of your typical fast-food expectations, especially when it comes to franchising:

“Franchising – sorry we don’t. Please don’t call us and ask for a franchise because we don’t; we really don’t. We don’t franchise. The fact is, we don’t like to franchise, so we don’t.”

Giving top-billing to these sassy statements next to feel-good headings like “natural food,” “good jobs,” and “sustainability” gives viewers the impression that Pret is a real exception. Finally, a fast-food chain that’s bucking the trend in all the important ways. They’re so warm and fuzzy, surely it’s all right for me to eat here, even several times a week! It’s good for the environment, I think. And will solve world hunger and eventually end all war. Pret for all!

In fact, Pret’s and McDonald’s corporate pages couldn’t be more different. Pret is the anti-Ronald and McDonalds is the anti-Pret. Which is why it’s so amusing that McDonalds owns 1/3 of Pret! (Thanks to Marko Karppinen for pointing this out to me). Clearly Pret recognizes the friction this may cause in their customers’ thinking. Doesn’t being part-owned by the anti-Pret cast doubt on their rosy public image? Pret responds accordingly:

“McDonald’s do not have any direct influence over what we sell or how we sell it; nor would they want to. They have invested in Pret because they like what we do.”

Why would a multi-national corporation want to have influence over a business they own a full third of?

Pret really knows how to market a negative.