waffle

Lately on Waffle

Retainer

HexColorPicker.m, circa one hour ago:

- (void)hcp_checkForUpdateUIFinish:(NSDictionary *)updateDict {
    /* Note: updateDict is by call site convention 
       already passed a retained dictionary */

    NSString *verdict = [[updateDict objectForKey:HexColorPickerUpdateVerdict] copy];
    [updateDict release];
    /* .. */
    if ([verdict isEqualToString:HexColorPickerUpdateNewerAvailable]) {
        NSString *infourl = [updateDict objectForKey:HexColorPickerUpdateNewerURL];
        if (updateInfoURL) [updateInfoURL release];
        updateInfoURL = [[NSURL alloc] initWithString:infourl];
        /* .. */
    }
    [verdict release];      
}

Did you spot it? If a newer version is available, you’re running Hex Color Picker outside of garbage collection and you’re unlucky, updateDict won’t just be released prematurely, but also be dealloced before an attempt is made to pull some more data (the new version URL) out of it. That might leave updateDict pointing to nil, messaging nil also returns nil which makes infourl nil and we end up feeding it to NSURL’s - initWithString:. Which produces an exception. Which takes down the entire application Hex Color Picker is hosted in.

Ruh-roh.

I’ve fixed this and pushed Hex Color Picker 1.6.1, which, in a delicious fit of irony, will expose every single Hex Color Picker user (of a version of such a vintage that it has the bug in it) to the conditions that trigger the bug.

I am reminded of O’Toole’s Commentary on Murphy’s Law: Murphy was an optimist.

Not All About You

Once again, the universal approach, presented slightly differently. Joshua Prince-Ramus talks about how architects have strayed to being “above” execution; how the sketch and the initial idea is genius, and the rest is a long, grueling let-down as the artistic vision collapses into a realistic compromise. And shows a project he was involved with where they didn’t do that — a theater that is flexibly constructed and can be arranged into different configurations.

I say the universal approach because this pattern is evidently sane, well-tested and produces good results: talk to people. Figure out what they want. Don’t rely on them telling you what they want, and don’t rely on you knowing what they want. Figure out a way to separate what they want from how they want it, which problem they want solved from how they want it solved, and work towards delivering that in the most appropriate way possible. Do rely on them and yourself telling you what they like.

This way of doing things is hard: it takes time and effort and introspection. Easy mode for Joshua would have been to tear down the hulk of an arena that was there before and build something that was just beautiful instead. People would have liked it and he would probably have gotten awards and pats on the back. And then ten years later, when the theater had lost their advantage (watch the talk; I won’t spoil everything), people would blame it on the stupid new building and conclude that beautiful is bad and that architects will charge a mint to make things pretty and round every corner but not actually do something. That’s not only stereotypical but probably true in a sad number of cases.

Look deeper. Think about things. Change them. But do it as you get the facts, not beforehand.

Translation From PR-Speak to English of Selected Portions of Microsoft’s Corporate Vice President of Corporate Communication Frank X. Shaw’s Remarks on the New York Times Op-ed Piece Detailing Microsoft’s Ineffectivity to Let Its Own People Do Their Job, Most Famously by Pointing Out the Sad and Tragic Pre-History of ClearType

(See: “Measuring Our Work by Its Broad Impact“)

At the highest level, we think about innovation in relation to its ability to have a positive impact in the world. For Microsoft, it is not sufficient to simply have a good idea, or a great idea, or even a cool idea. We measure our work by its broad impact.

In fact, and to wit, since we’re so consistent in using those terms, we regard the Zune and Windows Mobile 6.5 as resounding successes due to the transformative work they’ve done lately in redefining their industries, ushering in virtually every revolutionary trend for the past few years. Our customers, the broad groups of people who are so content with our innovation that they need only look out for the Microsoft brand when they buy mobile phones or media players, surely agree. We are pleased with the broad impact we manage to acheieve while selling tens of Zunes daily, and we don’t regret for a minute how we relegated great or cool ideas to lower positions on its or Windows Mobile’s priority lists.

After all, if you don’t have any users, and if you’re not being innovative, what’d be the point in maintaining stillborn and carcinogen platforms, desperately touting their superiority on some imaginary scale and refusing, flesh-wound style, to admit huge flaws that are causing users to leave the sinking ship?

Now, you could argue that this should have happened faster. And sometimes it does. But for a company whose products touch vast numbers of people, what matters is innovation at scale, not just innovation at speed.

The mean guy who was obscuring ClearType’s development for a number of years was actually subconciously doing so because he was deeply pondering technical issues of adoption at screen sizes between 2″ and 200″.

Another point worth addressing is Dick’s assertion that Xbox is “at best an equal contender in the game console business.” Fact is, Xbox 360 was the first high-definition console. It was the first to digitally deliver games, music, TV shows and movies in 1080p high definition. The first to bring Facebook and Twitter to the living room. And with Project Natal for Xbox 360 launching this year, it will be the first to deliver controller-free experiences that anyone can enjoy—a magical experience for everyone that Popular Science, Popular Mechanics, and Time magazine each named one of the top inventions of 2009.

Fact is, it was the first at doing a lot of things. That’s all that matters. First first first. I wonder if any of our competing consoles were first with anything this generation, like some new control scheme, media format or general art style of personal avatars. Hm. Um. Nope. Not a looker among ‘em. Trust me.

And they weren’t more powerful or more popular either. What’s that? Popular means “broad impact”? No it doesn’t. If it did, it’d look pretty stupid right now.

There is always the opportunity to do more, to move faster, to bring products and services to the world in new and interesting ways, and we embrace this. But thanks to the contribution of Dick and others on the ClearType team, ClearType certainly stands as an example of how it works well.

The unearthed story of ClearType’s multi-year detainment in arbitrary development hell at the whim of a manager sends a clear message: Microsoft’s management structure works well, has no impact on the quality of the products and certainly doesn’t need to change.

Another Thing

Guy I don’t know on Flickr nailed the reason for my continuous and unwavering interest in the iPad:

The iPad is the Hitchhiker’s Guide to the Galaxy.

Somewhere out there, Douglas Adams is smiling.

That might have been a reference to Numbers’ use of “42″ to represent numeric input, but all things considered, he sure is.

Older posts »