Author Archive

ARM64: The Next Generation

So, the last few weeks we’ve been off wandering the wilds of ex-Soviet Eastern Europe and the North Atlantic up Greenland way; did we miss anything?


Well, let’s start catching up, shall we then? The new 64-bit chip is a good place, no doubt. First off, see what the mothership has to say

About 64-Bit Cocoa Touch Apps

ARM64 Function Calling Conventions

Note especially “You cannot build a 64-bit project if it targets an iOS version earlier than iOS 7″. So far. There are rumours a future Xcode will support iOS 6 with the 32-bit slice.

[UPDATE: Notes from the Xcode-user list on lipoing together slices yourself, if you were thinking that would be clever:

"As far as lipo is concerned, there is nothing wrong with such a binary, and in the case of a static library that will be later linked into an application, you’re fine as long as the app’s deployment target is properly restricted. That is, if you build such a library by lipo-ing the individual slices together, as long as the app itself has a deployment target of 7.0, you’ll be fine. There are components in iOS pre-version 7 that were not prepared to see binaries containing 64-bit code, particularly when such binaries are downloaded from the app store (which is why things may appear to work locally for you, but would not work if that code ended up on the app store). Until the changes that Chris mentioned have been made, you will not be able to have an app that both supports iOS 5 or 6 and contains 64-bit code..."

"...I can’t really go into specifics, but rest assured that there is a solution forthcoming."]

And if you hadn’t already been making a practice of using NSInteger and CGFloat religiously in any System-interfacing code … well, it’s time to start!

As always, Mike Ash has the definitive get up to speed guide on far more exhaustively lower level information than you’re ever likely to need:

Friday Q&A 2013-09-27: ARM64 and You

If you’re really into the bit banging enough to want to read the full ARMv8 architecture manual … here you go.

But if you just want to see some real world numbers, check out The Move to 64-bit in The iPhone 5s Review over at AnandTech, exhaustively excellent as always.

If you’re not clear yet on the difference between ARCHS and VALID_ARCHS in Xcode, read

iOS 7, XCode 5 Project Build Settings for Architectures and Arm64 support

For those who provide a static library and want to support iOS 5 through now with just one, read

Static Libs With Support to iOS 5 and Arm64

And finally, for a handy-dandy chart of iOS 5+ devices sorted by chip and OS version and screen size, check out

iOS Device Summary

Handy for planning your test device upgrade strategy!

Continue Reading →

VanCocoa 1.0

Just a quick note here for any of you other Vancouverians who might have missed this so far — there’s a new group starting up this week you might want to add to your social butterfly rounds:

VanCocoa 1.0 — August 29th, at 6:30pm

Join us for the first VanCocoa night. We’ll have two talks of roughly 40 minutes each, then off for beer. The event is at SFU Harbour Centre downtown, at 555 W Hastings St.

Nigel Brooke — Audio Inception: MPMedia, AVFoundation, and Core Audio

Padraig Kennedy — Building Tokens

28 folks have RSVPed, 22 spots are left…

Unfortunately we won’t be there ourselves, but we’ll catch you there next time!

Continue Reading →

iTunes Affiliate Changes

In case you never got around to slogging through the approval process for Linkshare link kickbacks, you can cross that off your todo list now: there’s a new affiliate scheme in town!

As a valuable member of the iTunes, App Store, iBooks Store and Mac App Store affiliate program, we want to alert you to some important program changes. We are no longer using the Linkshare or DGM networks, so if you are an affiliate in these programs, you need to migrate to the new program.

Performance Horizon Group (PHG) will support our new affiliate program. To continue earning commissions without interruption, you must set up a new affiliate account with PHG and update all existing Linkshare and DGM affiliate links before October 1st, 2013.

We have improved and expanded our program to create a more global platform with enhanced reporting capabilities. The new program terms include a higher 7% commission on eligible sales within a 24-hour purchase window. You can use the same new affiliate tracking token for US, Canada, Mexico, Australia, New Zealand, Russia, Japan and more. Tradedoubler links are not impacted by this change.


Here’s the FAQ explaining the new links, and the affiliate resources page, but you can skip those and just read this nicely done overview:

iTunes Affiliate Linking

Locate the product you want to link to in iTunes and copy its link. This should look something like

Locate your affiliate token. This is in the upper-right corner of your PHG overview screen. It should look something like 10l3KS.

To create an affiliate earning link simply append &at=token to the link. If your iTunes link doesn’t already include a ? then append ?at=token.

(Optional) If you want to track the performance of this link specifically you can then add a campaign token to the link. This is basically just a string that is meaningful to you which will be associated with all purchases resulting from this link. For example, you could add a blog tag to all your blog links to see how they perform. To append a campaign token simply add &ct=campaign_token to the link. The exact text you use is entirely up to you. It just needs to URL-safe and no longer than 45 characters.

You now have a fully formed affiliate link.

Simpler, more international, better paying, what’s not to like?

Oh … that’s right … all those links out there in apps out the wild that are going to be broken until the unlikely event that we ever get around to updating them. Bah. Too bad we’re not as clever as Michael Tsai here:

New iTunes Affiliate Program

I never liked the LinkShare URLs, and I’m not really a fan of the iTunes ones, either. So I’ve been using an Apache .htaccess file to create friendlier links. For example:

RedirectPermanent /store/mac-app-store/eaglefiler

This redirects through LinkShare to the Mac App Store. Fortunately, this means that there’s a central place to update all the links. I also use this approach to create true permalinks in my apps for certain sites that often break their page URLs.

Yes, doing something like that would certainly have been a clever and forward-looking idea. Ah well, barn doors and horses. We’ll be ready for the next affiliate change!

Continue Reading →

App Website Theme: AppifyWP Pro

So you might recall us mentioning last year this WordPress theme AppifyWP that was a pretty sweet and simple site for your app, and a free landing page too; well, it bears mention again, as they have a new Pro version that lets you easily list out multiple apps. Like, really easily:

Multiple Apps

What makes AppifyWP Pro really glow is a custom post type for your Apps that makes adding your apps as easy as adding a blog post. Each app admin screen is chock full of special settings catered for app developers. A few of those settings include app icon, devices, app screenshots, orientation, App Store links, general appearance, and much much more.

Multiple Platforms

Each app can support up to 9 platforms, with the ability to add a slideshow or video for each platform. Currently AppifyWP Pro has special templates for iPhone, iPad, Android Phone, Android Tablet, Windows Phone, Windows Tablet, Blackberry Phone, PC Screen, and Macbook Air Screen…

Retina Ready

All images used in AppifyWP Pro are retina ready so that your site is crystal clear on high dpi screens. Even images you upload are processed for retina screens as well.

Device Detection

AppifyWP Pro detects what devices people use to browse your site, and if your apps support their device, AppifyWP Pro will display the proper platform to them by default.

Coming Soon Mode

Each platform of an app has a coming soon mode you can enable to hide your app store links and show a custom coming soon message…

There’s other nifty stuff too, but that’s enough to make the point that if you’ve got an ever expanding app stable you want to web support as low overhead as you can possibly manage and still look halfway professional — why this looks like obviously your best option out there by far, head on over and check it out!

(And if you know some alternative that makes this not obviously your best option out there by far? Hey, let us know too!)

Continue Reading →

Video Conferencing: ShowKit

This looks like something well worth looking into if you need some collaboration features in your app quickly: ShowKit!

Screen Shot 2013-08-04 at 8.05.49 AM.jpeg

ShowKit is a mobile SDK that enables iOS developers to add in-app Audio/Video Conferencing, Screen Sharing, and Remote Control between mobile devices to their native apps. We recently introduced our SDK to market and are looking for beta testers. If interested, you can access our beta by typing in promo code “SKIT87″ here.

As a reward for entering our beta you’ll get your first 50,000 Minutes of call time free (normal starting rate is 25,000 minutes of free calls once our beta is over).

Don’t have time to check it out ourselves right now, but that’s a pretty unique set of drop in features and it’s very nicely documented and the pricing seems reasonable, so if you’ve got a use for on device conferencing/VNC type stuff, we wholeheartedly encourage you to sign up with that “SKIT87″ code and let us know what you think!

Continue Reading →

Returning Bracketed Expressions

Now this is a GCC feature extension also present in Clang of which we had not previously been aware:

Ever since I found out that a GCC C extension causes a code block to return a value if you enclose it in round brackets, I’ve been using it in my code. What do you think?

self.bounds = ({
CGRect bounds = self.bounds;
bounds.size.height = self.currentYPosition + SHEETINSETY;

Cool beans. Improves succinctness and reduces declaration scopes, both of which are bug-avoiding Good Things™. Plus there’s the extra bonus of confusing your coworkers by checking in code using extensions they’re probably not aware of either, which is always good for a chuckle. Or “cackling with unholy glee”, as other people see it. Whichever.

h/t: @steipete!

Continue Reading →

UIKit cocos2d Style

Here’s a couple interesting libraries for the cocos2d programmer that the good folk over at found:

Cocos2D Inspired UIKit Library Allowing You To Easily Render Tilemaps And Movable Sprites

I’ve mentioned the Tiled tool for making game tilemaps with the TMX tile format, and the Texture Packer tool for creating spritesheets which are commonly used with the Cocos2D game engine.

Here’s a library from Moshe Berman providing a simple graphics engine for tile based games allowing you to render TMX maps, and sprites along with other handy features such as virtual controls and game state management…

Library Providing Cocos2D CCAction Style Animation Sequences With UIKit Elements

Here’s a library submitted by Nicholas Tau that provides Cocos2D style animations called UIKitAimationPro.

This means that you can easily create complex animation sequences with UIKit elements, also with nice blocks based callbacks.

As Nicholas states in the read me: “It helps you create a sequence of animations like the way in cocos2d. (also like Sprite Kit even without iOS7)”…

That’s certainly one approach to unifying your iOS 6/iOS 7 interface!

Continue Reading →

Programming iOS with JavaScript

So while we’re all twiddling our thumbs waiting for The Great Dev Center Outage of 2013 to end so we can get back to work, how about we find some useful yet completely non-Apple technology to brush up on while we wait? Yes, yes, “useful” and “non-Apple” make it sound like we’re doing a humour piece today, but no! here’s something you just might have overlooked that gives usefulness to what may be a new skill to brush up, brush off or just plain start on learning, and that is: JavaScript!

‘Course, we’ve had ways of communicating with UIWebView for forever, and there’s a veritable plethora of platforms for hybrid apps, but you may have missed a more deeply integrated method that we posted about a while back:

… JavaScriptCore is a part of the open source WebKit project. Instead of using the private library that comes with iOS, you theoretically could compile your own version of this library and bundle it together with your App. Which is exactly what I did…

… Even better would be if Apple would make JavaScriptCore public, and even turn on the Nitro JIT for everyone. I suppose I should file a bug on that…

Looks like that bug got filed! In case you don’t follow WebKit commits, read Apple’s new Objective-C to Javascript Bridge:

A few month back, Apple quietly slipped a very nice Objective-C to Javascript bridge into WebKit. Since the first commit while we were busy celebrating New Year’s Eve, it has been fairly actively developed and improved. This new API supports straightforward embedding of the JavaScriptCore interpreter into native Objective-C projects, including reading and writing variables and object members with appropriate type coercion, calling methods on JavaScript objects, and directly binding Objective-C objects into JavaScript.

It seems likely that this API is going to become public in Mac OS X 10.9 (where JavaScriptCore is already a public framework), and it might be a hint of an eventual public API on iOS. Either way, a new option for building hybrid JavaScript apps is here…

And not too long later, why look what shows up in public:

JavaScript and iOS 7 – The bridge to happiness

I am really excited about something that I haven’t seen mentioned much, and that is a new bridge between the worlds of JavaScript and the runtime of iOS and OS X:

“Introducing a new Objective-C API to JavaScriptCore. iOS developers can now integrate scripting into their apps without having to bundle custom language interpreters. This API builds on top of the existing C API to JavaScriptCore available on Mac, and makes programming with JavaScript much easier and less error-prone.”

And another:

iOS 7 Development: Everything You Need To Know To Get Started

JavaScriptCore – Allows for wrapping of standard JavaScript objects into Objective-C (the code used for iOS apps). Should allow for porting of apps between different mobile operating system platforms.

So, seems like a good idea to brush up on JavaScript, yes…


… but let’s try to be selective about it, shall we? So, Dear Readers; what’s your best resources for getting up to speed quickly while we keep refreshing the dev portal every few minutes? Got a couple here,

Basic JavaScript for the impatient programmer (h/t

DevDocs (h/t @rwenderlich)

Let us know what works for you!


8 Best JavaScript Frameworks For Mobile Application Developers

Continue Reading →

Roundup: A/B Testing

So we were asked recently “What’s your experience with A/B testing on iOS?” After quashing our instinctive retort of “Hah! They’ll be ice skating in hell the day there’s enough time and budget to ship ONE version of anything properly, never mind TWO!” we, well, weren’t left with much of anything. Ring any bells there, dear fellow contractors? Yeah, thought so. So let’s go looking for what tools are out there for that sort of thing, shall we?

In case you haven’t encountered the concept before, A/B testing (aka split testing aka bucket testing aka optimization testing) is essentially randomized focus group surveying; do two (or more, in which case it’s called MVT, multivariate testing) versions of your ad campaign or your landing page or your checkout screen or whatever, metric up whatever your success criteria are, and serve up the different versions to different users and see which version metrics out better. Rinse and repeat.

In the web world, this is a widely used practice and there’s no shortage of tools to help you out with it, from to Adobe® Test&Target™ to Amazon A/B Testing Service to Optimizely to SiteSpect to Visual Website Optimizer and oodles of others. (And as an interesting aside, check out How to Increase Your Mobile App Sales With A/B Testing and Increase iPhone App Downloads by A/B Testing App Names for tips on addressing A/B testing for all your App Store materiel — name, icon, description, and screenshots — by way of selectively advertised landing pages. Neat idea, that.)

In the iOS app world, not so much; until researching this we’d only ever heard of the idea being used extensively in the context of Zynga’s development practices. But a quick Google immediately turned up a flurry of results for

Screen Shot 2013-07-09 at 1.48.41 PM.jpeg

Clutch’s native mobile A/B testing tool helps you to choose the best way to present information to your users. It works by showing users different variations of your app, and then measures the effectiveness of each variation. Until now, app developers have been forced to build their own tools to do this kind of testing. With Clutch’s A/B testing tool, you get an easy yet powerful platform to start running these tests in minutes…

Well, there we go then! Or … not so much. is winding down – for more information about the future of and how you can smoothly transition your apps, please see our announcement.

They did open source it so if you want to host your own custom A/B framework server , why there it is at clutchio/clutch along with all the other pieces of the puzzle. But many of us are probably looking for a hosted solution I expect; so let’s keep looking. And, rather to our surprise, there is a veritable plethora of them out there:

Apptimize: $50/monh up to 1M installs

Screen Shot 2013-07-09 at 4.31.38 PM.jpeg free open beta

Screen Shot 2013-07-09 at 4.36.45 PM.jpeg

Artisan Mobile: $1000/month up to 25K users

Screen Shot 2013-07-09 at 4.40.28 PM.jpeg $18/month up to 10K samples

Screen Shot 2013-07-09 at 4.45.38 PM.jpeg

Leanplum: apply for beta

Screen Shot 2013-07-09 at 4.48.07 PM.jpeg

Optimimo: $49/month up to 10K users

Screen Shot 2013-07-09 at 4.53.09 PM.jpeg

Pathmapp: $19/month to 2K users

Screen Shot 2013-07-09 at 4.55.12 PM.jpeg

Swrve: by request, apparently

Screen Shot 2013-07-09 at 4.59.06 PM.jpeg

And that appears to be an exhaustive list of hosted services … this week. If none of those look your thing and you want to roll your own with your different flavour of analytical choice or whatever, besides the above mentioned clutchio full stack collection there’s a variety of other projects on github to get you started too:


An iOS Library to support A/B Testing remotely defined values in Apps and reporting back to a server. Includes native controls for A/B Testing UIButton text and background image. Includes generic ABTestCase for testing any NSString value…


This is an Objective-C wrapper for the Conductrics service, which provides an API for bandit-style optimization, dynamic targeting, and A/B testing.


Switchboard – easy and super light weight A/B testing for your mobile iPhone or android app. This mobile A/B testing framework allows you with minimal servers to run large amounts of mobile users.


SkyLab is a backend-agnostic framework for multivariate and A/B testing … integrates easily into any existing statistics web service. Depending on your particular needs, this may include posting to an endpoint in test blocks, or perhaps setting an HTTP header for a shared API client…


Remote configuration and A/B Testing framework for iOS. Documentation available online.

And … nope, run out of links finally. That was particularly autodidactical of a post, we’d had no idea this A/B thing was such a hotbed of development frenzy. As always, if we managed to overlook something Dear Readers, let us know in the comments!

Continue Reading →

Review: Escape Plan

Bit of a diversion today; we’re cutting away briefly from our accustomed iOS programming captivation to give you Dear Readers a recommendation for some lifestyle reading material. So if you’re just here for the geek and not interested in discovering the wide world out there, see you next time; on the other hand, keep reading if “Escape Plan: Discover the World, Live Better for Less” sounds intriguing:


Ah, still here. Excellent. As you may have picked up on if you’ve been hanging around here a while, trolls do like to traipse about; seen about a third of the world, depending how you go about counting. ( is the grandaddy of the place-counting cliques, and comes up with 321 places; aggregates a bunch of minor sources like the DXCC List plus splits larger countries into their provinces and adds a bunch of oddball specks and border quirks to come up with 873 places; and of course the true connoisseur logs their visits to the 981 and counting UNESCO World Heritage Sites as well.)

And we tend to get a reaction whenever this comes up of how ohmigod you must be so rich to do that. And we’re like, well, no actually, if you have some clue about figuring stuff out on your own instead of supporting travel agent chains by booking package tours, it’s actually not a terribly expensive solo hobby — cheaper than it would cost to stay at home (living in the most expensive city in North America makes that comparison easier, of course…) quite often.

And then they’re like ohmigod you go by yourself to strange places how could anyone ever do that scary scary eek! And we sigh. Same planet, different worlds.

So for all those of you who have that instinctive reaction to the idea of going wayfaring, this is the single best book we’ve ever encountered to change your view of the rest of the world. And for those of you who think long term travel is a great idea but impractical, this is the single best book we recommend for you to read too. Hey, we’re iOS programmers, get a data sim from (née iPhoneTrip) and all we need to be productive fits in a carryon and can set up anywhere with a cell signal, amirite?

Even if you’re one of the jaded Bindere Dundats of the peripatetic lifestyle, yeah you know 99+% of this already no big surprise secrets in wait, but even so there’s probably a couple of practical tips you’ll pick up flipping through this to make it worth the read. For instance, we had not previously been aware of which looks like a significant upgrade to our usual mail arrangements.

So yeah; we recommend to pretty much everyone that this should be put somewhere near the top of your personal development reading list. And if you don’t have one of those — why, nothing better to start it off with, click that banner NOW!

Continue Reading →
Page 1 of 108 12345...»