iPhone 2.0 firmware – the good, the bad and the WTF?!

Posted by: on Jul 18, 2008 | No Comments

Following on from my iPhone repair joy, I upgraded the rental iPhone I have to 2.0 as soon as it came out. I installed apps etc.

All seems pretty good, feels like the dawn of a new era – although something in me dislikes all these extra cluttering apps I now have, instead of just the basics. The coherent design feel is lost with differing icon design approaches etc.

Anyway, for my sins I used to be a Java mobile games developer (J2ME). As a result I have quite a lot of experience with mobile development APIs and approaches. With this in mind, I have some iPhone 2.0 / SDK observations:

  1. App Store is genius. App developers on mobile have never had it so good. This is sweet, trivial to use, works great OTA installation in a way that no Java phone I’ve seen ever could (i.e. proper install progress, keep on using the phone during dowload/install etc). No "where the f**k is my app" syndrome. However what’s with the long delays when Installing… is at 100%, even for trivial apps? The CPU slow at unzips / dmg extraction?!
  2. Quite a lot of apps crash – much more than iPhone 1.x where safari and maps did occasionally crash for me,
  3. Shock horror, running an app occasionally causes instant phone reboot! WTF?! I worked with a LOT of really bad Java mobile phones (aaahhhh anybody fancy a Sharp GX10 or an O2 X1?), and even then I never saw a phone spontaneously reboot when running an app. Having viewed some of the SDK videos, I think I have a clue – it could be memory leakage somewhere as… and this is also quite horrifying … iPhone OS X will spontaneously reboot if it runs out of RAM! "What?!" I hear you say. Yes, its true. I can see that without true garbage collection and a VM to run the apps in, memory leakage is a very real problem and the only solution may be to reboot rather than lock up. However I would have thought with unix under the shell it would be possible to kill just the application process and free its resources, not "shutdown -r now" !
  4. The push stuff is good BUT… why the hell no preview popup message for pushed mail, like the SMS popup? Come to think of it, why can’t you see more SMS/push mail previews than 1 at a time when the phone is locked? Why aren’t we seeing the photo of the sender next to the message?
  5. The push stuff uses sockets. This makes sense for iPod Touch and when you have wifi, but it drains the batteries bad. For iPhone they should really be using custom SMS data ports like J2ME’s  Push Registry API. The phone is already waiting for SMS packets all the time so this would mean ZERO extra battery usage, instead of keeping this stupid data socket open all the time. A custom data SMS comes in from Apple’s data center, and bingo, it fires up the correct application / does the badge thing etc. Keeping this keepalive connection going is insane on iPhone.
  6. The push stuff, as discussed at WWDC but not documented yet, is unable to launch your application as far as I can tell. This is bad. You need to be able to automatically invoke the target application (with user consent) to provide a nice user experience
  7. Again, unlike in J2ME, there is apparently no way to set a timer on iPhone from your custom application, such that the iphone will start your application again – this precludes a whole range of apps and is particularly painful in light of the inability to run background applications (which is understandable as this raises the spectre of high cpu load and multitasking task manager stuff as well as the battery drain)
  8. Apple should have stolen the sweet idea from Palm OS where your app is automatically "frozen in time" when deactivated. There was no multitasking on Palm OS when I wrote stuff on it, it just seemed like it because all apps ran directly from Flash RAM and when switching to another it just move the execution pointer to another part of RAM. Simple but very effective. Not quite so workable on this basis with unix underlying, but I would have thought "hibernating" apps would give a better impression of multitasking without actually running multiple apps at once, without the developer having to detect application de-activation, preserving state etc. At least offer some kind of declarative "serialize this" indication on objects/state data that allows the app to restart with prevous data with no developer effort.

Anyway, that’s it for now. I imagine they may add some event hook mechanisms to further simulate background applications in future, with strict design guidelines / enforcement of maximum execution time when the hook is called. Eg hook into system location changes, and get called back a max of once per minute, and have 500ms to do something with the data or die.

 

Apple iPhone repair experience – great, but with insanity added for free

Posted by: on Jul 18, 2008 | One Comment

I’m a huge fan of the iPhone, and the SDK and 2.0 firmware are excellent.

However my experiences of the last week have been… bemusing.

First there is the dead iPhone saga – PRE 2.0 firmware release. I was in a café on a Saturday morning, whipped out the iPhone to add weather for a town I’m soon to visit, to see what it is going to be like. Anyway, I add the town, using weak 2.5G signal, and then go back to home screen. Decide to check on AAPL share price in the stocks app… hmm locks up for 5s. Then comes up. Locks up again for 5s. It enters this lock 5s, work 10s loop. Nothing shakes it, I press sleep button. Hard to re-enter PIN when it wakes as of non-responsiveness. Hard reset it, reboot the phone. Takes forever to boot up, presumably as of this locking up cycle.

Try to Restore firmware in iTunes when I get back home. Reboots the phone, ready to re-install… boom phone doesn’t respond quick enough and bang – I have an iBrick in permanent "Restore mode".

So I call to Apple care, establish that it needs to go back to base. I pay the £20 for the rental iPhone. Service is amazing, I have rental phone the next day, postage paid UPS stickers and packaging and instructions to send the old phone back. Restore the rental phone with all my data – better than I could ever have imagined, SMS history comes back, notes, camera roll everything.

So the next day I send my original iBrick back. I muse to myself that the rental scheme is VERY clever. Great customer relations, the £20 covers the UPS carriage. I see that they will let me keep the rental phone if mine is indeed totally dead, rather than ship me a new replacement and force me to ship the rental phone back.

Next day get email 11am saying they’ve received it. By 4pm I get another email saying they’ve finished the repair request and new phone on its way. Gobsmacking.

Next day the phone turns up. A letter in there says that I did indeed have a brick and they have given me a new refurbished iPhone. Hmm ok. Must have been something pretty bad in my old phone then, that just happened out of the blue with no physical damage. Worrying.

Anyway I fire up the replacement phone (remember I still have a good rental iPhone I paid for). Immediately I see them. 3-4 evil white glows at the very top of the display either side of the lock icon in the midde – backlight leakage of some sort that is plainly visible in restore mode thanks to the black background. Euuuuw! Neither my original nor the rental iPhone have this, it is visually disturbing and obviously sub-par.

Now, I phone Apple to tell them this replacement phone is a dud for me in display terms. They say OK I have to send it back pronto using a new repair box they will send out, and do this immediately or the 10-day limit on my rental phone will expire and I will have to pay for the full price of the rental handset! Obviously I point out the vital consumer relations error in this, given that I have a replacement iphone that is functional but worse in display terms than the one I used to have, and that is unacceptable. Furthermore I paid for the rental phone, and have done nothing wrong. If they sent me a smashed iphone in the post, I should not risk having to pay the full handset fee for late return of the rental one.

Off the very helpful AppleCare person goes to talk to a customer relations manager. Eventually we come back and find they have agreed to extend my rental period, and are immediately sending a new "return to base" box and UPS label for the replacement phone that is dud. This box arrived next day (today). Very efficient.

So I still have my rental phone.

Only one problem – remember that I mused that they would logically let me keep the rental phone if my original phone was DOA? What happened to this peice of sanity?

Why the hell am I shipping back another dud phone when I could have kept the perfectly good rental one I have. Why, assuming the 2nd replacement phone I get is OK, do I then have to help destroy the atmosphere of our precious globe by having UPS take back a PERFECTLY GOOD rental phone, after they’ve brought me two other replacements?!

Utter madness. Logistics / systems design gone stupid. Really really stupid. Apple, you are wasting lots of your own time and money on this.

Let people keep the rental handset if theirs is DOA when it gets to AppleCare. Save everybody a lot of pain.