Manton’s Follow-Up on Sandboxing

Manton Reece, on sandboxing for Mac apps:

I’ll admit I have some regret leaving the Mac App Store. It’s just so convenient for purchasing and installation. If I’m going to make this work, I’ll have to redesign my own rather clunky purchase and activation experience. And I’ll have to do a much better job of marketing, something that has not been easy with Clipstart.

I don’t envy anyone who’s facing this problem. I feel like Apple needs to rethink what they’re trying to do with Sandboxing; giving developers more time is not the answer. The problem is that to many useful apps just aren’t going to work with sandboxing, and others are going to need to compromise their users experience in order to accommodate it. I think of Apple has a company who puts the experience of their users first. Forcing apps to fit into a mold this restrictive is forcing them to implement work arounds for things that were never a design problem to begin with, or be left out of the biggest venue to get their app in front of the majority of users.

Xcode Build Script for Automatically Updating CFBundleVersion

Since Git doesn’t create numeric build numbers, I haven’t known exactly what to do with my app’s bundle version (CFBundleVersion) since switching to it. According to Apple CFBundleVersion needs to be “a monotonically increased string, comprised of one or more period-separated integers.” My previous (bad) solution was to sort of ignore this and just update when I release a new version. Now that I’ve started using Hockey for beta relases, it requires a unique number for every build, so I need to start paying more attention to it. It’s for the best since it’s better to give this number some significance.

I didn’t want to have to update this manually every time I send a beta build, so I started looking for an Xcode build script that could generate something like this for my ad hoc and App Store builds. Since I didn’t really like any of the code I saw, I decided to write my own using Python, and while I was at it set it to also commit and tag the build in Git.

You can add this as a “Run Script” build phase in Xcode (make sure you set the shell to /usr/bin/python). The only line you should need to update is configurations_list = ['Beta', 'App Store'] to be the names of the configurations you want this to run under. You’ll also need to set your CFBundleVersion to a start point that’s a whole number (0 for example). If you want this to work with a different SCM, just update the os.system lines to run the right commands for your system (or take them out all together if you don’t want that feature at all). For a configuration called App Store, I have the commit message set to be “Automated Commit For Build 25. Configuration: App Store.”, and the tag to be “AppStore_25”. You can change that if you like.

Of course, I take no responsibility if anything bad happens to your project, but it seems to be working great for mine.

Update: There’s a bug where this will cause simulator builds to fail if you don’t set your “Mac OS X Deployment Target” to 10.7 in your build settings.

MacDrifter on Switching to BBEdit


It was worth the investment. I don’t mean just monetarily. I invested many hours into BBEdit and I’m sure there are many more to come. But it was worth it. I have an environment that I feel productive in.

It’s been my default editor for a couple of months now, and I thought this was a really good in-depth post about the pros and cons of BBEdit.

Still Using Siri

Marco Arment responding to Boris at The Next Web on Siri

But I still use Siri. My wife still uses Siri. Last night at dinner, my friend used Siri. I don’t think Boris and his friends are a representative sample.

Count me in as well. I use Siri all the time for setting timers, sending text messages and looking things up. A lot of times it’s just faster for me to talk than type. I’ve also seen nowhere near the 50% failure rate Marco reported. If I did, I’d probably use it a lot less.

Thunderbolt Audio Interfaces From Apogee and Universal Audio

Apogee Symphony 64 Thunderbolt:

The latest addition to the Symphony I/O module line-up, the 16×16 Analog I/O Module allows you to pack 32 channels of premium Apogee conversion into one Symphony I/O (two module spaces per chassis). No other audio interface delivers this much quality input and output or value in a single 2U rack space interface.

Apogee is well known in audio recording, so this is really exciting if you’re into that. Universal Audio also announced a new Thunderbolt audio interface called Apollo that looks awesome for project studios. Even if you have no interest in high-end audio gear, if you’re a Mac user, it’s exciting to see device makers of this caliber start using Thunderbolt.

(via The Loop)

xScope 3

I’ve used xScope whenever I’ve done user interface work for the past couple of years, and it’s indispensable. My favorite new part of xScope 3 is that it shows more of the info I want for iOS and Mac development (colors especially), without any conversion. The new iOS-centric templates in the Screens view look really useful also. If buy now you can get xScope on the Mac App Store for only $19.99.