The iPad Project: Day Three - End of an Era, and DRM Hell

Today was a preparation day. The plan calls for the breakup of the iMac lab, so that's what I did this morning. It was a simple enough job to shuffle the computers into the various classes and hook them up.

Definitely gave me a moment's pause though. Where are all my beloved "computers" now? How will I teach "computing" without "computers"?

It's the end of an era, but the beginning of a new one. A new era in which computers serve the needs of children and teachers. An era in which computers are not special artifacts sequestered in a purpose-built chamber into which children are ushered in hushed tones to have their weekly audience with The Computers.

I'm optimistic but, still, .... my computers. snif

Let me explain what's happening: each class will have one iMac, to which they sync their iPads. The primary classes will all sync their iPads to one user account on the class iMac, so that they have as consistent an application set as possible.

The secondary pupils will all sync their iPad to their own user account on the iMac in their guidance classroom. This is because I want the device backups to be under the user's own control and not accessible to other users.

Now, let's talk about the App Store and app distribution. This is capital-H Hard and what I'm writing here isn't close to fully-formed yet.

The fundamental problem is that App Store purchases are tied to App Store accounts. Further, App Store purchases can only live on five Macs. This is a huge issue.

Here's the question: how do I make purchases from the App Store and get them onto 100+ iPads?

Here are the solutions I came up with. Bear in mind that a critical requirement is that pupils do not know the App Store account password. We don't want them spending our money!

Solution #1: every pupil has their own App Store account on their own device

This is fraught with problems. For a start, every pupil needs a method of payment. Then you're paying for one license per iOS device, instead of once per iTunes account. Then there's the problem of making sure that everyone buys the correct application. Too much coordination effort.

Solution #2: every class has their own App Store account

This might work OK for the primary classes, where everyone's syncing to one iTunes library. Won't work so well for secondary classes where everyone's syncing to their own iTunes library. When an app is purchased, everyone in the class would have to "fake-purchase" it for themselves to get it into their library. This will require a lot of running around typing in the App Store password to individual devices.

This solution leads to us buying one copy of the app per class. It's also annoying for secondary teachers who couldn't be sure that all their pupils all had access to some basic set of apps.

Solution #3: one App Store account for the entire school

This might work, except that we would only be able to sync iPads to five computers in the whole school. This will probably be too much of a bottleneck. Having an iMac in the classroom that pupils can sync to is so much more convenient than having to get a time slot on the "sync computer".

Solution #4: one App Store account for Primary, another for Secondary

This is the solution I'm going with at the moment. It, too, is rather fraught with hassle but is about the best that I could design. I have a Mac mini that will be the "canonical" computer for App Store purchases. Once bought on this machine, iTunes Home Sharing will make sure it appears on all the other machines.

This is agonising in many ways:

  1. Every computer has to be authorised for one of two iTunes accounts.
  2. For the secondary kids, every user account has to be individually authorised for the same iTunes account (i.e. telling the user's iTunes library that it's authorised for that App Store account).
  3. Every user will have to check for updates individually, which requires a teacher entering the iTunes password.
  4. This also costs bandwidth and storage. One update is downloaded and stored for each pupil.

Non-Solution #5: iPhone Enterprise Program

I only mention this here because many people are sure to suggest it. It's not a solution to this problem, it's a solution to a different problem. My problem is "How to install 3rd party applications purchased from the App Store on a large number of iOS devices". The Enterprise Program solves the "How to install 1st party applications that we wrote in-house to all our employees' iOS devices".

The Enterprise Program says "You must be a company or organization with 500 or more employees and a DUNS number to apply". We don't have 500 employees (even counting the kids) and I have no idea what a DUNS number is. The only way the Enterprise Program helps me is if I can get an unsigned binary of every version of every application I want to deploy from the developer, sign it myself and deploy it to the devices. I can't see how that saves me any effort.

The Ideal Solution

What I would really like to see is something a little like Mac OS X Server's Software Update Server.

Imagine that, instead of looking directly at the App Store, I could point (via a Configuration Profile) my iPads at an iTunes library on the local network containing authorised apps. The App Store app on the device would then only show apps that are available in that library and everything would appear to be "free" and could be installed directly on the device. Updates would appear on the device when the version in the master iTunes library was later than the version on the device.


There is no way I can look at this that doesn't suggest to me that this is going to be the most agonising part of the entire project. I just hope we can keep it tractable.

This is a hole in Apple's App Store infrastructure that the massive interest in iPads for education is exposing, in a way that the iPhone and iPod touch never did. One can hope that someone at Apple is looking at ways to solve it. If you're that person and are reading this, I would love to help you in any way I can.

[Update" Here's a radar for the 'ideal solution' - rdar://problem/8288347]

Using Instruments to Learn About NSCache

I recently came across the Foundation class NSCache, which was introduced in Mac OS X 10.6 and now in iOS 4. NSCache is a key-value store with an API similar to NSDictionary, except that it will automatically evict objects from its store when the 'cost' (however defined) of the cache rise above a configurable threshold.

Instead of writing a thousand words about using Instruments to explore the behaviour of a class, I decided to make a screencast instead so here, in six minutes, is a quick discussion of NSCache and an example of using Instruments to explore its behaviour in terms of memory footprint.

PS: this is a small size to fit on the blog. It might be better to watch a larger version at YouTube.

The iPhone 4 Grip of Death

I just picked up my iPhone 4 this morning (at the second time of asking, but that's another story).

I had heard that some people were experiencing problems with the exposed antennae on the iPhone 4 and that it was causing a loss of signal strength. I didn't have to work very hard to spot the problem on my phone.

Here's a video demonstrating the iPhone 4 Grip of Death:

This problem isn't confined to people who are left handed. Any right-hander needs to cradle the device in their left to use it for any kind of multi-touch gesture, such as pinching on maps or photos.

There's a question as to whether this is an actual signal degradation problem or simply a problem with sensing and displaying the signal. I shot a second video to demonstrate that the signal is not just being attenuated but almost entirely disrupted.

Here's my procedure:

  1. Disable WiFi
  2. Hold the phone in the 'fingertip grip', observe 4-5 bars of 3G.
  3. Launch TuneIn radio.
  4. Buffer and play a channel.
  5. Switch to the Death Grip.
  6. Observe signal falling to 1 bar.
  7. TuneIn streaming stops dead when it runs out of buffered data.

For all the supposed design refinement of the iPhone 4, this is a near-showstopper. It's very surprising that the device shipped with this kind of flaw. If the fix is to add Apple's £29 rubber bumper on top of this £600 device, that will be a very poor show indeed.

As John Gruber questioned, I don't know whether this is a problem with all iPhones and some people's hands or some phones and everyone's hands. My sister also has an iPhone 4 and is experiencing the same thing.

There has also been some speculation that it could be to do with moisture. I know everyone's skin carries moisture but, as skin types go, I have particularly dry skin. Just one data point, but that's what I have.

On my iPhone

It's been a while. Are you interested in the apps I have on my iPhone? Sure you are. I organise my iPhone by purposed 'pages' of apps.


The citizens of the dock should need no introduction. Byline is a great RSS reader and Twitterrific 2.0 is just a killer Twitter client for iPhone. Wikipanion is a pretty good Wikipedia client, but I also have a bookmarklet for on there too.

Since my wife got an iPhone, we've been experimenting with using AIM in place of SMS, but I don't think that experiment is working out. I usually install Instapaper when I have a backlog or plan to travel. The Compass app is alongside Maps because that seemed like a good idea, but I don't find myself using it much.


The next set of apps are those apps that I do use frequently, but don't need to be on the Essentials page. WordBook and my eBook readers are in here, as well as the ever-awesome PCalc. People have been cynical about Birdhouse, but I find it worthwhile.


I'm a bit of a sad case in that I have been heard to exclaim "Bah! Games!" about the App Store, then I realise that I have more games on my iPhone than any other kind of app. Firemint Real Racing is sensational. Real Tennis is hard to play.


This is my page of apps for travel, either in the UK or abroad. Controversies about the sharp business practices aside, the National Rail app is really very well done. If only the actual trains were that good.


Here go the things I need once in a blue moon but which I do want on my phone. Other apps that I only very occasionally want, I'll usually delete and re-download from the App Store as needed. These, I keep because when I do want them, I don't want to re-download first (for example, Shazam).

"The Oubliette"

This page is mostly "Stuff that Apple won't let me delete". The Camera app goes here, because my double-home-tap action is set to Camera, so I don't need access to the app icon. Oh yes, and the secret app? I could tell you, but then....