Lucky Dozen
Today is my twelfth anniversary in Developer Tools at Apple! Still love it, too!
Tagged AppleToday is my twelfth anniversary in Developer Tools at Apple! Still love it, too!
Tagged AppleA couple weeks back, I tweeted the following: Turns out a Raspberry Pi now is about 6× as fast as a SPARCstation 20 was 20 years ago. And a Pi 2 is more like 15× as fast. I was a little low in my numbers, too — they’re more like 7× and 16× to 41× […]
Tagged benchmarks, embedded, performance, programming, Raspberry PiFor hacking/prototyping/fun purposes I have a few embedded systems laying around. For example, I have a couple of Raspberry Pi systems, one of the original Raspberry Pi model B boards and one of the new Raspberry Pi 2 model B boards. And on everything, I have the latest Steel Bank Common Lisp building. On my […]
Tagged embedded, Lisp, programming, Raspberry PiMac OS X has a number of concurrency mechanisms, and that increases with Snow Leopard. In addition to run loops, threads (both Cocoa and POSIX) and operations, Snow Leopard adds Grand Central Dispatch (GCD), a very lightweight way to represent units of work and the style of concurrency they need, and have the system figure […]
Tagged concurrency, Grand Central Dispatch, Mac, NSOperation, programming, Snow Leopard, threadsLast week, Mac OS X 10.6 Snow Leopard was released! Snow Leopard represents a lot of hard work by a lot of folks at Apple and at seeded third-party developers, and it really shows. Now that it’s shipped, I can actually talk about some of the especially cool things this release has for developers.
Tagged Apple, Instruments, Interface Builder, Mac, Snow Leopard, XcodeThe Big Nerd Ranch weblog has a new post about Objective-C 2.0 dot notation. They advocate never using it and they’re completely wrong. Given my reaction on Twitter, several people have asked me to write a more in-depth rebuttal. I’ve already addressed when and why you should use Objective-C 2.0 properties and dot notation in […]
Tagged Cocoa, iPhone, Mac, Objective-C, OOP, programmingVarious pieces of Mac OS X and iPhone documentation have said for quite a while that the “preferred” method is now to use ISO-639-1 (two-letter) or ISO-639-2 (three-letter) language codes codes for localization purposes. Out of the box, Xcode’s project templates still use “English” rather than “en” as their default localization. How can you use […]
Tagged Interface Builder, localization, project model, XcodeIn the past, I’ve talked about ways to easily write unit tests for Cocoa applications, including tests for user interfaces using target-action and tests for interfaces using Cocoa bindings. There are some strategies you can apply to make writing tests for Cocoa code even easier, though. They’re just straightforward object-oriented programming, but sometimes we can […]
Tagged agile development, Cocoa, Cocoa bindings, human interface design, Interface Builder, Objective-C, patterns, test-driven development, unit testing, user interface testing, XcodeI’ve occasionally been asked about the appropriate form for properties representing to-many relationships in Objective-C 2.0. Let’s start with the example of a recipe and its ingredients, represented by instances of the Recipe and Ingredient classes. @interface Recipe : NSObject { @private NSMutableSet *_ingredients; } @property (copy) NSSet *ingredients; @end This is a pretty straightforward […]
Tagged Cocoa, Cocoa bindings, Core Data, Key-Value Coding, Key-Value Observing, Objective-CI’ll preface this post with the standard advice: Don’t create singletons if you don’t absolutely have to. In general, if you’re creating a global “manager” object of some sort, you’re doing something wrong. That said, there’s still occasionally a reason to have such a global singleton, such as a “default something.” The sample code in […]
Tagged Cocoa, design patterns, Objective-C, unit testing