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.

Slender for Mac and iOS Developers

My friend Kyle Richter has released his new app, Slender. It’s a simple and attractive way for iOS and Mac developers to figure out things like which images in your app are unused, or are missing their 1x or 2x sized counterpart. It’s only $4.99 on the Mac App Store, and I can already tell I’m going to use it on every app I write in the future.

360|MacDev 2012

360|MacDev is in a few weeks, and if you write — or want to write — Mac software, you should be going. You may be more familiar with John’s other conference, 360iDev. These conferences are at the top of a short list of ones I never miss. John and Nicole work hard to get great speakers, make sure everything goes smoothly and create an amazing environment. I’m pretty sure they’re they’re the hardest working people in the conference business.

I’ll be giving a talk on making apps work better and be faster by using Core Data, GCD and using good app design. I’m also looking forward to the other talks: Brent Simmons is going to teach the secrets of creating successful Mac apps, Dave Wiskus will bring us inside the brain of a good designer, Kyle Richter will get all of the iOS developers up to speed and Mike Lee will once again do something amazing that I can never predict until it happens.

So join us in beautiful Denver Colorado, February 3rd & 4th — it’s a crazy amount of content for only $300. Register now if you haven’t already.

Why Brent is Trying Bing

It wasn’t the crap, it was losing trust:

Running a search at Google was starting to feel like walking through a minefield. I’ve trained myself to be careful where I click, because I might step on a +1 explosive or get blown to bits by surprise double-chevrons.

But I still used Google search, because I trusted the search. Now I don’t.

For any company, users trust is a hard thing to gain, and once lost nearly impossible to get back. I think if you’re a company who has it, you should do everything you can to keep it, and never assume your users have nowhere else to go.