James Montgomerie’s World Wide Web Log

Migrating Xcode SDKs

Lots of people don’t realise that you can copy SDKs from previous versions of Xcode to newer versions and still use them.

For example, with the release of Xcode 4.5, Apple no longer ships the iOS 5.1 or Mac OS X 10.6 SDKs, but if you still need them for some reason, you can grab them from an older install. SDKs are stored in the Xcode app bundle, in Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/, Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/, and Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ - just copy them from inside your old Xcode to similar locations inside your new Xcode.

Note that this won’t give you the ability to do …

My Reluctance to Join App.net

I’ve been wondering about my lack of enthusiasm for App.net. It’s certainly related to the $50/year fee, which seems a bit miserly. I can surely afford that, and I would like there to be a service that’s not beholden to advertisers as Twitter now appears to be.

Is it perhaps simply not worth $50/year to me? I don’t think that’s it. It’s a bit of a circular argument, but if all people - friends and peers - in my industry are all using App.net (as is looking increasingly likely), then, sure, it’s probably worth $50 to me - as is…

Sparrow, Promise, and Feelings of Betrayal

Google has acquired the development team that produces the excellent Mac and iPhone email app Sparrow. Development of the app is being stopped so that the developers can “[join] the Gmail team to accomplish a bigger vision.”

I Believe in Sherlock Holmes

Like many, I find this news disappointing. I bought both the iPhone and Mac versions of Sparrow. I use it daily on my iPhone, and intermittently on my Mac. It’s a great app on both platforms. I’ve been very happy with my purchase so far, but I have to admit I felt a little betrayed when I heard the news of the …


I posted YACYAML, the Cocoa YAML parser/object archiver I’ve been working on for a little while to GitHub today. It converts Cocoa objects to and from YAML, a plain text, human friendly data serialization format.

YACYAML can be used in lots of ways - from replacing plists or JSON for simple config files, up to storing entire custom documents in an easy to view (and easy to hand-edit) format.

Why have I made this?

The short answer is that I like YAML. It’s ‘nicer’ than plists and JSON to edit, and it’s far, far, nicer to look at than …

iOS' Hidden Base64 Routines

It’s commonly held that iOS has no built in Base64 routines (a strange omission, if you ask me). Pootling around in the BSD headers today though, I discovered this is not entirely true. There are a couple of functions hidden away in libresolv.dylib. That’s the, err, BIND-9 DNS resolution library… If you’re not put off by linking to BIND just to get Base64 translation, it’s easy to use. Here’s the interface (publicly declared in a less readable fashion in resolv.h):

// To encode:
// Returns the byte length of the ASCII Base64 encoded data, or -1 on failure.

Please Do Learn How Software Works. If You Want To.

By all means, learn enough programming to put together a prototype and have a better perspective on hiring and managing engineers. Just don’t mistake a foothold in the world of coding for true engineering expertise.
Buzz Andersen, commenting on Jeff Atwood’s Please Don’t Learn to Code

Apple, Failure, and Perfect Cookies

It’s painful, hard, and often time-consuming to restart when you’re already done, but you can’t argue with the results. Both Apple and Nintendo create some of the best, most inspired design out there.
Lukas Mathis, in Chabudai Gaeshi