Code Monkey vs. iOS4

So having ranted about the hardware, it’s only fitting that I rant about the software on it. Like my article on the hardware, I’m only going to focus on what I think is wrong with it; there’s plenty of articles on the good stuff already.

Multitasking

UI

Apple’s implementation of multitasking, UI-wise, is nearly the worst I could think of. Not only did they fail completely at avoiding a task manager, they ended up implementing one that confuses users even more than a proper one would. On top of this, they broke the cardinal rule: they broke a users understanding of simply closing an app.

Previous to iOS4, pressing the home button was synonymous with closing an app. There was no fear of it continuing to drain the battery, continuing to monitor your location or what have you. This changed slightly with the introduction of push notifications, but the effect was the same, the app was dead and gone. iOS4 has broken this completely, worse than simply changing an expected behavior, they’ve made the old behavior annoyingly difficult to get to. Let’s compare, shall we?

Really closing an app in iOS3-:

  1. Press the home button.

Really closing an app in iOS4:

  1. Press the home button.
  2. Double press the home button.
  3. Tap and hold on an icon.
  4. Press the red minus above the app.

I mean, really? What’s worse is this isn’t even remotely obvious; I’d be willing to bet that most users of iOS4 don’t even know about this. You may be wondering why this is even a problem since most apps don’t multitask anyway and state saving is a useful feature.

When introducing what is effectively just a MRU list, Steve Jobs said “These are all the apps that are running.” Problem is, that’s not even remotely true. It’s just a list if recently used apps, with absolutely no indication of wether they are actually still running or just in a suspended state (if that, since non-iOS4 apps are listed too). Beyond the fact that not actually closing the apps pollutes this terrible ‘multitasking UI’, I’m not even given a choice up front about whether an app should keep running in the background or not.

On the flip side of this, you could say that things like Skype and Pandora are now consistent to their core-feature counterparts. Except the fact that both of these apps use significant bandwidth and in the case of Pandora, more power. You could also say that 9.9 times out of 10, people will not want to actually close Skype while on a phone call, which I’d agree with. In the case of Pandora though, you have to weigh user expectations with consistency. Specifically for Pandora, consistency probably wins out because it’s more convenient than the alternative. However, I feel that core-feature alternatives are the exception and that we can’t even begin to apply this argument to all types of apps.

UI Ideas

The last time I was blogging, I posted an article proposing my solution for the UI of multitasking to avoid a task manager among other things. In it, I proposed that true multitasking be treated like GPS location, that you be asked by the OS whether or not to allow this app to keep draining battery. Having seen Apple’s solution now, I still think it’s a good idea and have some new ideas.

Part of the problem now is that the default behavior is completely up to the app developer who may or may not give you a choice. Sometimes when I exit Colloquy, I actually want to exit and sign out of Colloquy. Sure, Colloquy could likely add a dialog asking me in their task completion thread on whether to keep running or not (which I’d like, actually), but that doesn’t solve it for say Pandora or anything else.

Instead of having explicit closing, what about explicit multitasking? If I tap the home button, it would exit the app as it always has. If I double tap the home button, up would pop the multitasking UI. From there, I could either go to the home screen, or to another running app. Either way, exited through this multitasking UI, the running app would always be allowed to multitask. Options could be setup to allow this from the ‘normal’ app exit, but it would be opt-in.

As for saved state, I’m on the fence. I’d still like to keep a way to explicitly clear it, as is sometimes necessary when apps get confused (I’m looking at you, Trillian.) If it wasn’t for this, I’d want them not in the multitasking list. Sadly the software world is imperfect and I suspect there will always be an app I have to beat with a stick. Non-iOS4 apps should never have shown in the list to begin with, but it won’t really matter for much longer.

Actual possibilities

Many have criticized Apple for not allowing ‘true multitasking’ and instead watering it down to what they saw as important. However, I’m not going to do that, because I actually like the approach Apple has taken. Not only that, but the work to integrate things like Pandora and Skype to look and act like the similar core features of the phone impressed me.

Where Apple fell short though is their belief that Push Notifications was sufficient for all messaging clients. Problem is, not all of us tech informed people have a box running 24/7 they can use as a IRC proxy. Sure, I could probably set one up on my Linode VPS, but I shouldn’t have to. Persistent connections are an important but annoyingly missing piece. Everyone likes to use IRC as the example of this, but let’s use an example more relevant to the every day crowd.

Let’s take some multiplayer game you’re playing with your friend when you get a phone call. Now, a newly compiled single player game would happily have it’s state saved and then restored upon hanging up. Since it’s a multiplayer game however, one of two things just happened: 1. Because the developer took a ton of extra time, the game saved its state on its own and is now trying to reconnect. Or the more likely: 2. You’ve completely lost the connection and have to start the game over. Allowing the game to keep the connection would let it simply pause and then when the call is over it could simply un-pause and continue on it’s merry way with significantly less effort from the developer.

Contacts

I guess at this point it shouldn’t come as a shock to me that Apple seems to have no problem regressing features. Originally I’d planned to complain about the fact that I thought they’d removed custom labels from phone numbers and email addresses. When presented with the new interface that didn’t force me to select one and a preexisting label to the left, I assumed there was no way to change it. As it turns out however, it’s been moved to a menu that appears when you tap that label in edit mode.

Now, if I’d never used iOS 4 before, I’d probably have tried tapping on the label to change it. It seems like a pretty obvious spot to get to that menu on its own. However having been using iOS since 2.0, I was pretty used to it the way it was. When I saw the way I’d been used to was gone, I assumed the feature was gone and I bet I’m not alone.

On its own, the new design is simpler and has significantly less friction. However, as with multitasking, they’ve gone ahead and totally screwed with expected behavior.  I mean, was anyone really upset that adding a phone number or email address took a few seconds longer than it does now?

Email

Threading

Apple, if you’re going to steal/copy/whatever a feature, at least do it right. My biggest hope for email was that I’d get threaded messages from Gmail, where I love them to death. Upon setting up my email account on the new phone, I eagerly went into a 52 email thread and was promptly disappointed. Where are my own messages? Forum threads show my responses, Gmail shows my responses, but Mail does not. “Thread different”, perhaps?

Without seeing my own responses inline, the threading feature is all but useless. The point is to be able to see the entire conversation between parties, and that includes being able to see what you said. Being able to see them together should of helped avoid going into an email and backing out to try to find the previous one, but that hasn’t been remedied at all. Surely that must be an option I can enable, at least, right? Nope.

Worse still is the interface, the back and forth navigation is still just as annoying as it was before. Yes, sure, it’s an improvement because the messages are all together but the beauty of Gmail’s interface is that everything is right there. Even given the small size of the screen, I think that Gmail’s interface is totally doable. Simply pull the email down to reveal the subjects of the other messages, tap to expand. “But wait, that’s as just as many actions as before!” you say. Yes, but it skips the navigation animations that become time consuming quickly when compounded over several emails.

Gmail Archive

I guess at this point I really shouldn’t be surprised, but let us continue on this face-meets-palm quest pointing out where Apple broke user expectations. Previously setting up a Gmail account, delete would (insert surprise joke here) actually trash the email! In iOS4, Apple has added the ‘archive’ feature for Gmail accounts, which is great. What is not great is that it’s now turned on by default. So let me get this straight, Apple introduces a feature (threading) that just affects presentation and has it off by default. When Apple introduces a feature that radically affects where your email goes, however, it’s now on by default even for existing accounts?

Now, granted, at least it’s not the reverse (going from archive to a delete) so at least it’s not more destructive. However, yet once again, Apple has taken existing behavior and decided that you’d rather have this other new behavior. I’m not sure who archives their Gmail messages instead of moving them to trash, but I certainly don’t. Maybe we could have both? Swipe right to delete, left to archive. We’ve already associated swipe right with delete pretty much everywhere, let’s take new completely different behavior and put it somewhere else instead of replacing things.

Annoying Tidbits

  • Why is there a delay in opening a folder?
  • Still no bulk delete in MMS.
  • Safari, maybe I don’t want to go to something in my bookmarks if I don’t have an open page.

Conclusion

Generally speaking, I’m quite happy with iOS4 and do not wish to go back to iOS3. As I said before though, this has just been about the bad.

Apple seems to have no regard for previous user expectations, which I find very disturbing. I don’t have the total sales numbers for iPhones previous to iPhone 4, but this helps put it in perspective. The thing is, when you have something that works and works well, there’s likely not a good enough justification for changing it. It’s only when expectations of users is to be frustrated, or for the feature to not even work, that it’s OK to go ahead and gut the feature.

Code Monkey vs. iPhone 4

I have one and I hate it just as much as I love it. I find that I can actually do what I want in a reasonable amount of time and minimal frustration due to the sheer speed and general responsiveness of the device. Yet I find myself generally less happy with it than I was with my iPhone 3G when I got it. To have come this far, it’s sad to see how far Apple has fallen with this device.

Now, there’s been plenty of coverage on the various issues, many of which I feel completely miss the mark (that’s what we get for enabling everyone to have global soap boxes I guess). Some get close, but over complicate the issues with speculation that bring about more debate than consensus. I only plan to focus on what’s wrong, hardware wise; I’ll write about iOS4 separately.

Comfort

Awkward ways to hold the phone to get a signal aside, this is by far the most uncomfortable iPhone yet. Sure, it looks beautiful, but as a smart phone comfort should be on the top of the list. The iPhone has reached a point where thinner is not better, it doesn’t help consumers at this point and it only makes manufacturing and design that much harder. No one was really crying for a thinner iPhone, because the larger curved back was already comfortable. This new thinner design only makes it harder and more painful to hold on to, having to bring your fingers farther in, bending them even more. Honestly it reminds me greatly of the original NES controllers, turning your hands into painful fixed claws.

To add another to the ‘curved was better’ category, the new sides are just downright painful. Especially when it comes to certain games, the sides actually become painful because the steel band is not the same thickness as the phone. This leaves a nice little crevice on either side of the band that your finger gets pushed into and it doesn’t take very long before this starts to hurt. I suppose I should just ‘avoid holding it that way’, but if we keep adding ways to hold it to the ‘avoid’ list, I’m not going to be able to hold this thing at all.

There’s no doubt that the iPhone 4 looks and feels very solid and precise. The iPhone 3G / 3GS look like toys with their plastic parts in comparison. However, even with their slightly weaker feeling due to the plastic, there’s a comfort and solidity from the full curved back that fits more naturally into my hand. Being larger and filling your hand gives you a greater sense of having a good solid grip on the phone. If I could take the 4′s guts and stick them in a 3G case, I’d do it without hesitation.

Glass

I’ve had my iPhone 3G since the day after launch (2 years), it’s never worn a case and I just toss it in my pocket with my wallet. The plastic back is scratched up like crazy, but I’ve never really cared about that. The glass, however, only has a few minor scratches on the top and bottom, none through the screen. My iPhone 4 has more scratches all over its front glass in the two weeks than I’ve had it (treated exactly the same) than my 3G does. Think about that for a second, more scratches in two weeks than in two years. For what gain, exactly?

My guess is that it has something to do with the fact that they’re laminating the screen and glass together. There’s no doubt even just the lack of a gap between the glass and screen looks significantly better, but at what cost? Is it going to matter if there’s a gap or not when the screen is so covered in scratches that I can’t hardly use the device? Only time will tell, but my spidey sense tells me the answer is ‘no’.

Now, to be fair, the scratches are basically invisible while the screen is on but I wonder how long that will last as they accumulate. I think there’s a definite case for false advertising here; Apple’s own web page says “… the glass is ultradurable and more scratch resistant than ever”. More scratch resistant?! I’d have been perfectly happy if it was as scratch resistant as my 3G, but as it’s been demonstrated all over the web (and in my personal experience), it’s actually significantly worse.

Antenna

I have a hard time expressing just how ridiculous and unfathomable the whole ordeal has been. Speculation abounds, but I lack such guesses because I am completely dumbfounded. Suffice to say, Apple has lost my respect over this issue alone, let alone everything else that’s wrong with this device. I, personally, experience the death grip and it’s no exaggeration and it’s not simply that the bars are wrong. Web page loading can be paused and continued at will repeatedly just by touching and releasing a specific spot on the phone.

There’s been a lot of commenting about this being an issue for left handed people. Here’s the thing, this issue affects data just as much as phone calls. This means that when holding it in my left hand to touch and interact with using my right hand, that wonderful spot of death is firmly cupped in my hand. It’s not specific to just holding it in a way that you’d make a phone call. Please stop saying Apple hates lefties, it’s obvious Apple hates us all equally.

The absurdity of all this is mind boggling, despite the fact that some signal attenuation may happen with any cell phone, including previous iPhones. The simplest solution, even with the current overall design, would be to move the ‘death point’ to the right side. You’re moving it from what’s always going to hit the palm, greatly increasing the chances that it’ll be bridged, to the side where only your fingers are present which would be far less likely to be bridged. During a right handed phone call (at least in my hands), I’m not cupping that gap, my thumb rises over and latches the right side of the phone.

Although Apple claims that there are no real issues beyond what affects a normal cell phone and says that a lot of the confusion stems from a bug in the software, I’m calling bullshit. For me, it doesn’t just degrade the signal, it removes it completely. Data transfers stop dead in their tracks, even simple webpages won’t continue loading. I wish I had a 3GS or something to record it, but I’ve paused web page loads multiple times in the same load just by pressing the ‘death point’. To be fair, I have seen some cases where I had to use more than finger to interrupt it, giving credence to the idea that it is actually just extreme attenuation.

However, other cell phones don’t put the antenna in the best possible place to be blocked/shorted/whatever is going on. They don’t take the most comfortable way to hold the phone and tell you not to just “avoid holding it that way” or to buy a case (for which they sell an insanely overpriced piece of plastic). Besides the cases meant to clip to a belt, who actually bought a case for their cell phone pre-smart phone? Nearly no one, so why is this different?

The response has varied wildly, anywhere from “calm down, buy a case and enjoy your iPhone” all the way to lawsuits. The expectation of us to buy a case just to be able to hold our phone in a comfortable manner and still have it work is just absurd, given what we’re already paying for it. What’s worse has been Apple’s-and Steve Jobs’, if email postings are to be believed-response to the whole ordeal. If this was such a nonissue that was present in old phones, there wouldn’t be a such a sudden and huge outcry over it, so downplaying and dismissing the issue is just an insult to Apple’s customers.

Apple should at least acknowledge that the design of the iPhone 4 does, in fact, make it easier to significantly drop a signal just by holding it. They really should be handing out free bumpers to appease customers, as they’re certainly not worth $29, and even more so would be worth the hit to help curb the large amount of negative press they’re getting.

The Bad

In a time where Android is starting to come under fire, this should of been the perfect time to surge ahead in positive mindshare. Instead, they’ve made several wrong turns with a phone that iPhone 3G customers have been waiting for every since they saw how fast the 3GS was. Now these customers are stuck, sure they could return their phones, but after seeing the beautiful display and just how fast it is, it’s unlikely they’ll do anything of the sort. On top of this, they’ve dismissed and insulted customers without so much as an olive branch.

I’ve always had a hate-love relationship with Apple, but this whole ordeal has left me bitter and hateful of Apple. The iPhone 4 now has, at least among the tech-informed (you know, the guys who recommend devices to the non-tech informed), a negative mindshare. It’s full of problems, and the Android users are sitting back and laughing with their relatively minor issues in comparison.

I will likely end up with a case to protect the antenna and glass, and hopefully round out the back some for more comfort. The fact that I now actually feel that I have to buy a case is, in my opinion, a complete failure on Apple’s part. It’s fragile and uncomfortable, a terrible combination if you want to keep something intact and not piss off your customers.

Code Monkey vs. Asynchronous Lists

I guess the theory is that a list that starts displaying its results immediately will allow the user to get to what they’re looking for quicker. The problem is that most of the time this couldn’t be farther from the truth.

Steam's "Add a Game List"

Steam's "Add a Game list" dialog

When you open this, you already know what you’re looking for. The list is sorted alphabetically, so you start to scroll down to the letter the game starts with. However the list only serves to frustrate because it doesn’t actually load alphabetically, so when you find the letter you’re surprised to find that your game isn’t listed. You’re not given any indication that the list is still loading, so is the game just not going to be listed? Or has the dialog simply not gotten around to loading it yet?

The fun continues when the game finally shows up. Now that you see the game listed you go to select it so you can move on, no need for the list to finish loading, right? Just as you go to click on the item you were looking for, it moves clear out of view since something was just added many items up somewhere you don’t see or care about. Thus begins a game of cat and mouse trying to find and select your game before it moves out of view again. You could just give up in frustration and just wait for the list to load, but since the only indication you have is less reliable than listening for popcorn to finish popping, it’s equally frustrating as the cat and mouse.

Worse still, this design tricks users into trying to find what they’re looking immediately for because there’s items in the list to look through. Our interactions with computers are very action-reaction oriented, we issue a command and wait for the computer to respond. With this list, the computer starts to respond immediately, so we’re prompted to issue our next command prematurely and no one likes being premature.

This experience is the same for the .NET tab of the Add Reference dialog for Visual Studio 2010, as well as that of the “Programs and Features” list of Windows Vista and 7. Someone, please tell me how this is preferable to simply waiting a second or two and then finding your item in a nice alphabetically sorted list. It usually takes no more time, and is significantly less frustrating. At the very least, provide some form of loading indicator so the user knows for sure when the least is complete. Otherwise you’re only pissing off your users and earning your place in my Hall of Shame.