Archive for December 2009

Thursday, December 24, 2009

Automatically Localize Your Nibs When Building

Philippe Casgrain has an interesting localization workflow that puts only the localized .strings files under version control. He updates the English .strings and generates the localized nibs at build time. The layout is controlled by the English nib files, which have a little extra padding. Compared to runtime localization, this makes it easier to spot layout problems. Compared to the traditional approach, there’s less work maintaining and updating localized nib files. The downside is that the layout isn’t tuned for each language.

Measuring Type

Matt Robinson draws some typefaces using a ballpoint pen (via Geoff Tsai). The last image shows how much ink each used.

Tuesday, December 22, 2009

Google’s “Meaning of Open”

John Gruber:

Basically, he’s spewed 4,000 words to say that “open” is always good and always wins, Google is always open, therefore Google is always good and will always win. And please don’t worry your pretty little minds about things like Google’s search or ad algorithms or the specific details of how its data centers work, all of which things Google could not possibly be more secretive about.

Yup.

LaunchCodes 1.0

LaunchCodes (via Matt Deatherage) is a clever utility that tries to restore the creator code functionality that Apple removed in Snow Leopard. It sort of does for files what Choosy does for URLs, acting as a trampoline to receive opened files and redirect them to the proper application. The basic functionality seems to work, but I ran into a few problems:

  1. It doesn’t pass along Apple events. For example, if you find a PDF file using Spotlight or EagleFiler and open it, the query should be passed along to the PDF viewer so that it can search within the file. This stops working when you enable LaunchCodes.
  2. Some of my creatorless files now display in the Finder with generic white document icons.
  3. Applications can no longer tell which application would be used to open a file. For example, when you select an HTML file in EagleFiler, one of the menu commands will say “Open With Safari” and show the Safari icon, and if you select a PDF file it will say “Open With Preview.” Once you enable LaunchCodes, you’ll see “Open With LaunchCodes” and the LaunchCodes icon, which is not very informative.
  4. It doesn’t handle extensionless files. For example, if TextEdit is your default text application and you double-click a Makefile with creator code 'R*ch', it will open in TextEdit rather than BBEdit.

(1) seems like a bug that could be fixed. I’m not sure what’s going on with (2); it may be unavoidable since LaunchCodes doesn’t declare any icons for the file types that it handles. Unfortunately, (3) and (4) are probably not fixable given the way LaunchCodes works.

A Sample Mac Application With Complete Unit Tests

Matt Gallagher demonstrates using OCMock to develop a Cocoa application test-first. I’m skeptical about relying so much on mocks, but it’s good to see a complete example project.

How Success Killed Duke Nukem

Wired tells the story of Duke Nukem Forever:

It’s a dilemma all artists confront, of course. When do you stop creating and send your work out to face the public? Plenty of Hollywood directors have delayed for months, dithering in the editing room. But in videogames, the problem is particularly acute, because the longer you delay, the more genuinely antiquated your product begins to look—and the more likely it is that you’ll need to rip things down and start again. All game designers know this, so they pick a point to stop improving—to “lock the game down”—and then spend a frantic year polishing. But Broussard never seemed willing to do that.

HTML5’s <video> autobuffer Attribute

John Gruber:

A big part of the appeal of the <video> and <audio> elements is that they should be easier to use. As it stands today, though, these elements are unusable in popular contexts without resorting to JavaScript DOM manipulation to effectively turn auto-buffering off.

Sunday, December 20, 2009

iPhone Actions Icon

Jesse Grosjean:

The iPhone standard UI provides an “actions” icon (middle above), but to most people it looks like a reply icon. I use it in WriteRoom for iPhone, but I keep hearing from users who never found the actions (delete, send email, rename, word count), because they thought it was only for sending email.

The iPhone action icon looks like a “share” icon.

Saturday, December 19, 2009

Mail’s Email Aliases, and Complexity Hidden

Chris Clark:

It’s a simple and elegant solution, but not at all discoverable; I needed documentation to help me find the setting, which is unusual and troubling for a UI nerd. I might’ve been understanding if they’d just nixed the feature, as Mail is bundled with OS X and one could argue that it’s not supposed to be for Power Users. But Apple’s designers and engineers took a different route. They added the feature and obviously put a lot of work into it, considering new aliases show up in the menu automagically, but they opted for zero interface. No fifteen pixels of fame.

Friday, December 18, 2009

objc_msgSend() Tour

Bill Bumgarner has written three good posts describing how objc_msgSend() works.

Thursday, December 17, 2009

Googling for Appliances

Paul Kedrosky (via John Gruber):

Pages and pages of Google results that are just, for practical purposes, advertisements in the loose guise of articles, original or re-purposed. It hearkens back to the dark days of 1999, before Google arrived, when search had become largely useless, with results completely overwhelmed by spam and info-clutter.

It’s interesting how Google is dynamite in many areas but almost useless in others. Search is a hard problem.

Wednesday, December 16, 2009

Set BBEdit Tab Width to Widest Cell

Jonathan Rentzsch has written a script that makes it easier to view tab-delimited files in BBEdit. I’ve been doing this manually for a dozen years or so.

Wednesday, December 9, 2009

Modernizing the Responder Chain

Tim Wood has some interesting suggestions for resolving some longstanding problems with Cocoa’s responder chain.

Update: Marcel Weiher adds his thoughts.

Monday, December 7, 2009

Optimizing WiFi Reconnect Time

Joel Levin:

If you move the networks you actually use to be the top items, you will see a drastic decrease in the connection time as airport no longer has to spend a bunch of time connecting to networks that aren’t currently around.

AT&T Mark the Spot

Mark the Spot is an iPhone app for reporting problems with AT&T’s coverage (via Rich Siegel). It remains to be see how much effect apps like this and Citizens Connect (for reporting potholes in Boston) will have, but if the process is frictionless enough it seems worth a try.

Sunday, December 6, 2009

Personalized Search for Everyone

Google:

What we’re doing today is expanding Personalized Search so that we can provide it to signed-out users as well. This addition enables us to customize search results for you based upon 180 days of search activity linked to an anonymous cookie in your browser.

I suppose this makes sense, and even without cookies Google could figure out the history, but it still creeps me out. You can turn it off by clicking on “Web History.” SEO just became a lot more unpredictable.

Kindle Book Sales

Jeff Bezos (via Marco Arment):

For every 100 copies of a physical book we sell, where we have the Kindle edition, we will sell 48 copies of the Kindle edition.

That’s incredible, but I’m not sure that I believe it. Are the numbers skewed by averaging in the free Kindle books or something?

Thursday, December 3, 2009

Disable and Recover from Mac OS X’s Quarantine

Jonathan Rentzsch shows how to disable the quarantine and how to remove the quarantine xattrs from existing files.

Wednesday, December 2, 2009

ATPM 15.12

The December issue of ATPM is out: