Compromise: pull and background

I have a deep-seated desire for multi-tasking on the iPhone (and now the iPad). I understand their reasons for not including it and I understand the tradeoffs of performance, stability and user experience. I don’t want to be bothered using an app to micromanage device resources – that smacks too much of using Mac OS … Continue reading “Compromise: pull and background”

I have a deep-seated desire for multi-tasking on the iPhone (and now the iPad). I understand their reasons for not including it and I understand the tradeoffs of performance, stability and user experience. I don’t want to be bothered using an app to micromanage device resources – that smacks too much of using Mac OS 9.

Mac OS 9 About This Computer

And that’s the world you live in with Android and Windows Mobile multitasking. The resources on a mobile device are sufficiently limited that you are forced to manage your apps to maintain the best performance. That’s obviously something that Apple wished to avoid.

Windows Mobile task managertaskmanager_menu

In my entirely unscientific survey (which consists of standing about with other geeks and moaning about how we wish there was some multitasking on iPhone), I have come to consider the compromises.

Ahhhh, Push It!
Salt-N-Pepa pre-empted the Apple faithful with the refrain “Push it” when anyone considered multitasking to be necessary. This was meant to be the first compromise – notifications could be pushed from the ‘cloud’ (the new word for ‘server on the internet’) to specific installed apps on the iPhone which gave a semblance of being able to interact with more than one application at a time. You could set notifications based on receiving messages on Twitter, a server being down or anything that can be reported (for example, a GPS with sender sending a Push notification that your car alarm has activated). But – push is one way and limited in scope so rather than just demanding multi-tasking, wouldn’t it be better to consider other compromises?

Push notification

Pull
If we can push to an iPhone, what about the server setting up a pull mechanism? Essentially it’s a push designed to ‘get’ data rather than just ‘set’ data. That would mean you could have a service running in the cloud which pings your phone for a location update or a state change in a document and updates the server copy. You could obviously set the frequency, you set the amount and quality of data to be pulled and Apple can provide a simple interface. Heck – build it into MobileMe or demand a MobileMe subscription for it – I have MobileMe anyway and they use part of this already for the “Find my iPhone” feature. So – why not extend this and open a Pull API for iPhone and iPad?

MobileMe Find My iPhone

Pull puts intelligence in the cloud. It makes you want to run server-based applications which will hold your calendar, pull in your location, intelligently warn you when you’re going to be late. Pull makes a difference by putting apps in the cloud.

Background
The more I think about it, the more I realise that I don’t need true multitasking on a phone or a tablet. iPhone (and by extension iPad) are fast enough that there’s no significant delay in launching apps at all. But I do want some apps to be ‘backgrounded’ when certain events occur rather than quitting. I might want to run Spotify on my iPhone (I currently don’t use it) while browsing the web. At the moment I can’t do this – but if Spotify could be identified as a Backgrounded app so that when I hit the Home button, it goes into the background rather than quitting (a little like the Voice Memos app) and only quits properly when something would directly conflict (like an incoming phone call) or when I tell it to quit by holding down a button sequence (the system in place to quit a running app is hold down the Sleep button and then hold down the Home button). There has to be a simple way to do it and, frankly, it’s a pain that Apple can do it with iPod, Phone calls and Voice Memo and third party developers can’t.

Backgrounded phone call

Even just having one backgrounded app would be great – especially when you’re in the middle of something like a multiplayer game – the ability to send a ‘pause’ to the other player because you’ve got a phone call rather than just kicking you out of the game! Backgrounding apps should be a toggle you enable in Settings. Apps that I would background right now would be relatively few but I would consider:

  • iSSH – for keeping alive the connections I’ve made to servers while I check something on the web (thanks to MartyMc for the inspiration on that.) Losing the SSH connection can be a pain. This will become more important on larger screen devices like iPad.
  • ‘TrafficMob’ – an as-yet unwritten app which just runs in the background on your phone, uses your GPS and records your position every 30 seconds. It then uploads this data to a server which plots the points on a map, crowdsources the lot of them and shows you when and where the traffic snarl ups are.
  • Skype – this is obvious. Skype is powerful for me because I talk to people all around the world. I can’t currently just leave it running on my iPhone because then I can’t do anything else and it’s annoying when a call comes in on cellular while I’m in Skype as it takes precedence. This needs a real backgrounding option.

And if something does come in, some notification or call or anything – give me the choice to continue what I’m doing rather than divert my attention.

NOVA with overlaid Push Notification

I’m sure that the talented software engineers and designers at Apple have gone through dozens of permutations trying to find the right one. I just hope that something like this makes it into iPhone OS 4. They’ve already got the UI down, it’s now the engineering challenge of making it work.