Apple Pay Bigger Than All Competitors Combined

Tim Cook:

"Visa and Mastercard. We talked to these guys today, and they told us that if you sum up everyone else that’s in contact-less mobile payments at the point of sale, we’re already number one..."

It took three days to get to number one.

iCloud Photo Library (Beta) with iOS 8.1

iOS 8.1 was released today and iCloud Photo Library has been made available to the public as a beta. I'd recommend against using it for the time being.

From what I can tell, in beta form, iCloud Photo Library on iOS removes all offline synced photos (from Aperture, iPhoto, or PC) and it does not sync them to iCloud. However, it does sync Camera Roll photos across all iOS devices. Getting your Aperture/iPhoto snaps to the cloud will require Photos for OS X, which will be released next year.

Another issue to consider is iCloud storage space. By default, you get 5GB free and iCloud Photo Library will take up a considerable amount of that capacity (my iCloud Photo Library has 227 photos and 15 videos taking up 850MB). I anticipate that when Photos for OS X arrives and fills the iCloud Photo Library with my offline photos, 5GB will appear nothing more than punitive.

Off Topic: Japan vs Brazil

The Japan vs Brazil match was Singapore's National Stadium first capacity sell out. It was excellent!

Check out this panoramic:


Impressed with the iPhone 6 Plus battery

This morning I started my marathon training program and it was the first opportunity I've had to go running with the iPhone 6 Plus.

I went for a 12.5km run with music playing, Bluetooth, GPS, and wifi enabled, and the run being tracked by Runkeeper.

It was a 1hr 9min run and under normal circumstances my iPhone 5s would have been down at around 80% battery life remaining. The 6 Plus only dropped 5% on this run - 95% remaining!

I'm impressed.

Destiny: I Don't Know Why

I've finished all the missions in Destiny and I have no idea what the story was actually about. There was The Traveller, the Vex, the Cabal, the Darkness, the Queen, the Fallen, the Speaker, get the idea.

The story inexplicably jumped from Earth, to the Moon (where the Wizards live), to Mercury, to Venus, to the Reef, to Mars, and then it was finished.

Also odd is the fact that I'm still playing it and I'm not even sure if I'm enjoying it. There is such a gulf between the story and the storytelling that it's impossible to get engaged: the script is awful. Take your "Ghost", Destiny's AI equivalent of Cortana in Halo in the shape of a Monitor with zero personality: "Just so you know, there are more Fallen...and Hive on the way".

Ignoring the obvious storytelling gaffes and contextless battles, what Bungie have built is still remarkable. Balance and feel wise, it's a tremendous shooter and that's why I'm still playing. It just needs a story for me to enjoy it.

FATCA – FFI List – Version 2

I started rewriting FFI List pretty much the day after iOS 8 was announced. Version 2 is a significant release and I’d like to discuss a few of the bigger changes in this blog.


I am, along with many other developers, still learning Swift and it’s a challenge I am relishing. That being said, I am pleased (nervous!?) to say that FFI List is now entirely written in Swift with the exception of Apple’s Reachability code and the Parse 3rd Party library.

FFI List

In Version 1.x of FFI List, updated lists were only distributed with app updates. That wasn’t ideal for a variety of reasons:

  • There was a delay between an FFI list being released and it actually being available in the app; and,
  • Review scores were reset with every release of the app.

With Version 2, that’s changed. The app is seeded with an FFI List (August 25th 2014), and new lists can be downloaded when available. The September 24th 2014 list is available to download now.

This was a significant piece of work for the app. (I hope it works well.)

User Interface

The app UI now supports all devices from iPhone 4S to iPhone 6 Plus, iPad 2 to iPad Air, in both landscape and portrait orientations. What’s more, the app now supports dynamic text. So if you use larger text sizes, the app will display data in larger sizes as well. The Avenir font has also been replaced with Helvetica.

I also wanted to simplify searching. Instead of specifying what you're searching for (name, GIIN, or domicile), you just need to input your search text and the app will search all three. A small change, but one that reduces the number of taps.

FFI List can be downloaded here

Thoughts on the Apple WATCH

Apple really pushed the health and fitness aspect of their new WATCH. It misses one thing that I find essential: standalone GPS. For a runner out on a run, or a cyclist out on a cycle, GPS tracking is of huge importance and I can't believe the WATCH has missed it. You need to have your iPhone with you to use the GPS functionality.

If I want to run without music, I take my Garmin Forerunner which allows me to track my run and my heart rate (with the additional sensor). If I want to run with music, I run with my iPhone on my arm1 (also allowing me track my run and my heart rate (with a Polar H7)). There’s no use case in the middle that makes sense for an WATCH: it needs its own GPS chip to be of use.

WATCH reminds me of the original iPhone: it had no GPS and couldn’t connect to mobile networks, but was still a revolution in terms of what to expect from its market segment. WATCH is the same. It will get there, but this version has early adopter written all over it.

  1. I have no idea what running with an iPhone 6 Plus will look like. I’m keeping an old iPhone 5 around just incase.

Protocol Updates in Xcode 6 Beta 7

Xcode 6 Beta 7 was released yesterday evening and brought with it a host of minor protocol updates, some of which broke all my existing UITableViews stating that they no longer conformed to the UITableView protocols.

After moving code around, deleting derived data, and generally pulling my hair out, I eventually noticed what changes had been made.

Old Protocol

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!

New Protocol

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

Almost identical, but looking at the release notes:

"A large number of Foundation, UIKit, CoreData, SceneKit, SpriteKit, Metal APIs have been audited for optional conformance, removing a significant number of implicitly unwrapped optionals from their interfaces...These changes replace T! with either T? or T depending on whether the value can be null or not null, respectively."

Importantly, you will only see error messages where the protocol function is required. Where it is an optional function, no error message is presented.

App Store Rejection Stats

Apple’s Top 10 app rejection reasons make for interesting reading.

6% of apps submitted were rejected for having user interfaces that were either complex or less than very good.

I have no issue with Apple being the gatekeeper for the App Store, but the above rule is so vague and subjective that it must be impossible to police consistently. I am surprised none of my apps have been rejected for this reason.

That said, I have been rejected once:

20.4 Apps that allow a user to directly purchase a lottery or raffle ticket in the app will be rejected

I was submitting a bug fix1 for Lucky Dip when the above rule was flagged to me.

Lucky Dip picked lottery numbers for you and allowed you create a correctly formatted text message which could be sent to the National Lottery which then purchased your ticket. All purchasing happened outside the app and no account or payment details were ever stored in app.

Despite appealing to App Store Review Board that you couldn’t actually buy a ticket in the app, but instead could only create a text message with the correct numbers, my appeal was rejected.

How did I get around it? There were two buttons: “Pick Numbers” and “Play Numbers”; I changed “Play Numbers” to “Create Text” and the Review Board were happy.

N.B. It turned all of this discussion ended up being a minor waste of time. The National Lottery discontinued the Play by Text service shortly after I realeased Lucky Dip.

  1. This is what annoyed me the most about this rejection: no new functionality was being added and the app had lived quite happily with previous bug fixes.