My daily readings 09/10/2011

Design is largely about making choices. The PC hardware market has historically focused on three factors: low prices, tech specs, and configurability. Configurability is another way of saying that you, the buyer, get a bigger say in the design of your computer. (Bright points out, for example, that Lenovo gives you the option of choosing which Wi-Fi adaptor goes into your laptop.) Apple offers far fewer configurations. Thus MacBooks are, to most minds, subjectively better-designed — but objectively, they’re more designed. Apple makes more of the choices than do PC makers.

But now that Apple’s products are more popular, we’re beginning to see another benefit to Apple’s lesser degree of configurability: greater scalability. Apple needs larger quantities of fewer different components to manufacture the same number of computers as other companies. It’s not just the economies of scale that all companies get when they sell 3 or 4 million laptops in a quarter — it’s greater, because Apple’s 3 or 4 million laptops sold share a larger number of the exact same components.

The new MacBook Airs are iPad-like. I’ve called my 11-inch Air an “iPad Pro”, and the more I use it, the more that feels true.1 Apple is selling more MacBooks than ever before, but their range of models is shrinking, not expanding. As SSD prices fall, I expect Apple to drop the “Air” and “Pro” distinctions and simply offer four Air-like MacBooks: 11, 13, 15, and 17 inches.

It’s the Jobs side of the equation that Apple’s rivals — phone, tablet, laptop, whatever — are able to copy. Thus the patents and the lawsuits. Design is copyable. But the Cook side of things — Apple’s economy of scale advantage — cannot be copied by any company with a complex product lineup. How could Dell, for example, possibly copy Apple’s operations when they currently classify “Design & Performance” and “Thin & Powerful” as separate laptop categories?

In software engineering, the singleton pattern is a design pattern used to implement the mathematical concept of a singleton, by restricting the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects (say, five). Some consider it an anti-pattern, judging that it is overused, introduces unnecessary limitations in situations where a sole instance of a class is not actually required, and introduces global state into an application.[1][2][3][4][5][6]

Singleton classes are an important concept to understand because they exhibit an extremely useful design pattern. This idea is used throughout the iPhone SDK, for example, UIApplication has a method called sharedApplication which when called from anywhere will return the UIApplication instance which relates to the currently running application.

You can implement a singleton class in Objective-C using the following code: