The iPhone’s Moving Target Problem

I’ve said this before, and probably will a dozen times again in the next month, but I love my iPhone. Still, I wouldn’t be a good geek if I didn’t think about problems and how they could be resolved, and how things could work better. The latest problem that I’ve been thinking about is what I call the ‘moving target’ problem.

I first noticed this issue with Safari, and I’ve found it’s fairly easy to reproduce - since it happens to me up to a dozen times in a ten-minute interval. First, a brief example of when you might see the moving target problem.

  1. Visit a page on the web somewhere that takes a few moments to load. It doesn’t have to be a long time, but it can’t be instantaneous. I’ll use Digg’s mobile site as my example.
  2. Tap on a link to visit the target page (in Digg’s case, the article detail page). Once the page has finished loading, tap the ‘back’ button.
  3. As soon as the previous page (the main index) is visible, you will be able to scroll it. Do so, moving either up to the top or down to the bottom, and then pick any random article, and notice where on the screen it is.
  4. Once the page has finished loading (indicated by the blue progress bar behind the address bar), you will see the ‘moving target’ effect. Safari will jump to the position it was in when you tapped on the FIRST link and left this page originally.
  5. There is a brief moment where tapping on the screen on the second article will not be registered until AFTER Safari ‘jumps’ back to where it was. In conjunction with the delay between choosing a target (in your head) and tapping the target (the moment your finger hits the screen), you may see the ‘moving target’ issue manifest - you will tap one article, but Safari will register the tap on another, and take you to the page accordingly.

The part that I find most annoying is that it’s so reproducible, but also that in this example, it’s almost self-causing, if you will. Think about it - the user has just inadvertently tapped on the wrong article, and the wrong page is loading. Their first reaction (if they notice right away that it’s highlighted the wrong link) is going to be… to hit the back button and tap the right link. The problem, of course, is that that’s where the moving target problem happens. They’ll know what they want to see, so they won’t have to think about it. The page won’t finish loading right away, they’ll scroll, tap, and end up with another (or the same) wrong article.

The problem happens less frequently, but more frustratingly, with Mail as well. When the user opens mail, they immediately get a list of all the mail my iPhone knows about (or rather, the first 25). The phone, however, immediately checks the server for new mail and fetches it if it exists. The most recent message is now the eighth most recent message, and is shoved down off the bottom of the screen to make way for the new messages, and here, again, the user is given a prime opportunity to trigger the moving target problem. Interface lag plus human lag means that you have a chance to end up tapping on the wrong e-mail, and then furiously tapping on the ‘back’ button to try to return to where you were.

In terms of solutions, there are a few things that could be done to solve the problem in various ways.

Safari already stores the location it was scrolled to, and the instant it begins rendering the page, sets the scroll to that position, but it also does this when it’s done loading. Presumably this behaviour is to work around the problem that the page as the browser knows it can change - a small ad at the top of the page could turn into a larger ad, and suddenly the content of the page has moved downward by a paragraph. On a desktop machine, this is less of an issue, but on a small screen, it’s easy for the user to lose their place. The best solution here would be for Safari to avoid the second ‘jump’ if the user has changed the scroll position. The assumption here is that if they’ve moved the view, they’re either looking at what they want to see, or they’re interacting with the device and will likely not appreciate it changing the view out from under them.

Mail has a slightly more complicated problem, in that the application isn’t doing anything wrong necessarily. It’s displaying a list of messages, and if the list changes so should the display. Again, this could be mitigated by being aware of when the user is interacting with the screen and changing the display accordingly. If the user is scrolling, or has scrolled recently, then add the messages onto the top of the list, but keep the view in the same position, displaying the same messages. This should be relatively easy to do, since all entries in the message list are of the same height. A simple action to prepend the messages and simultaneously ‘move’ the view to point at the same messages as before should be relatively seamless to the user.

There is another problem here, and that’s the pervasive issue of interface lag. This happens in every OS on every platform, and isn’t an easy one to solve. The issue generally arises when the system is unable to process user input, so it queues the input up to be handled. When the problem is resolved, all the input is processed in the order it was received. Thus, if I had typed this entire paragraph while the system was frozen or lagging, then when the problem was solved all of my keystrokes would be played forward.

The problem comes when we realize that we’re in a world of windows, menus, and pointers. If a system freezes up, the user may become frustrated and click randomly around the screen, or attempt to perform the same action repeatedly. When the system becomes responsive again, their actions are played forward, which results in them clicking on (for example) a menu, a menu item, an icon on the dock, a close button, a minimize button, the ‘bold’ button on the toolbar, several other applications, links on a webpage, and so on. Suddenly their desktop devolves into chaos, and they’re forced to clean it up. Hopefully nothing irreversible has happened, but it’s impossible to tell.

This is a more difficult problem, because it makes the queueing much more complicated, and it’s a problem that has not been solved appropriately by any platform I’ve used. The simplest method, which tends to cause the least frustration, is to simply drop whatever the user had attempted to input, with the logic that the aforementioned chaos is going to occur, and is almost definitely not what the user wants. This generally solves the problem in a reasonable manner, and while it’s frustrating to be forced to re-input your commands, this is basically what the users are trying to do anyway, and we can judge from their behaviour that it is the response they are expecting. In the case of typing, it becomes an issue when the system momentarily pops out of its funk and then back into it, and you end up with disjointed fragments of whatever the user was attempting to type.

Another method of dealing with the issue, and one which I think would be most effective but which would be most beneficial to the user, would involve tracking not just the user’s input, but what the user was trying to do, and this will probably require explanation.

Let’s say my system has just frozen up, and I haven’t realized it yet. I click on a title bar and drag it up and to the left, and then release, before I realize that nothing’s happening. I try again, clicking in roughly the same spot and dragging to the same spot again. Maybe I do this three or four times. When the system ‘wakes up’, it will register the first click-drag-release event, and move the window. It will then register the second click-drag-release event, perhaps selecting some text inside of the window, and then it will register the third, possibly dragging and dropping that text elsewhere in the document, or into another application entirely.

A better way to do it would be for the system to notice when the queue is unusually large (even one or two pending events) and to begin tracking what the user is actually trying to do with those events, one by one. In this example, it sees that the first click-drag-release was on the title bar of the active window, and so it moves the window. It then looks at the second event and sees that the click was in roughly the same spot. Here, it sees that when I clicked, what I was actually trying to click on was the title bar, which has moved. Because this is an invalid action (because the state that my action relied on has changed), it throws the action away.

Not all actions would need to be thrown away. For example, if a user clicks a certain location on the screen which, at the time of their click, was a window’s close button, the system could close the window, even if the window has since been obscured by another window, a pop-up, or so on, because nothing about the target has changed.

I’m no UI developer or programmer, and I should stress that there are a lot of complex issues around UI design. Fixing more problems introduces more complexity, and there’s a fine balance between frustrating professional users and confusing novice ones. Apple isn’t perfect, but they’re striking a decent balance so far. Still, there’s a lot of work to do. 

Sunday, November 16th, 2008 Geekery, Macintosh, Musings No Comments

Amylie - Mes Oreilles

The latest Single of the Week from iTunes Canada. It’s French (in case you care about that), but it’s catchy, she’s got a beautiful voice (for my tastes). Great song, and it’s free so download it and give a listen. The snippet doesn’t do it justice.

Wednesday, November 12th, 2008 Canada, Whatever No Comments

iPhone Adventures

So I’ve been having problems with my iPhone recently - well, more like ever since I got it. Most of them were fixed by the not-so-recent 2.1 update, but other weirdness has been happening. Things like flickering keyboards, flickering title bars, the phone not ‘waking up’ when I press buttons on it, or waking up just before it gives up on waiting for you to ’slide’, and so on.

All of these, taken individually, are minor problems, and I’ve been into the Genius Bar at the Apple store in Pacific Centre twice so far about them. In the end, I had to grudgingly agree that a few weirdness moments happening occasionally were hardly worth a fuss. The latest issue, however, put me in a spot more than a few times, and I decided to go in and get my phone replaced. On Sunday I booked a Genius appointment so I could go in and have a chat with them. Now, to give you an idea of how busy they are, the only timeslot I could book early Sunday afternoon was Wednesday at 1 PM. Not only are they booking three days in advance, they barely have any spots open when they do.

Today was my appointment, and I went in and talked to the Genius (whose name I forgot - sorry!). I explained the problem to him, and he gave me a look I recognize from having worked in retail before - the ‘I get this problem all the time, I know all about it, and no I can’t help you’ look. After I described the problem in detail (see below), he explained the situation, then swapped me a new phone. So far it’s working great, but we’ll see.

I want to devote a little more time to the issue and to what he told me about it, since apparently it’s pretty common. The symptoms are that your phone, inexplicably, will no longer take calls, and anyone that tries to call you will go straight to voicemail. You can still use data, send SMS messages, and make phone calls yourself, but incoming calls don’t show up. This is apparently a common enough problem that at one point he had a customer and a group of coworkers come in about the problem.

The real issue, he says, is that no one knows what’s causing it. He’s called Fido and Rogers, and even Apple HQ in Cupertino, and no one has any idea what’s going on. The fact that he’s seen it in such numbers is complicated by the fact that no one else - anywhere else - has seen it at all. This problem does not happen, apparently, anywhere else in the world (or at least, not in these numbers). It does not happen in the US. It does not even happen outside of BC. Moreover, it does not appear to happen on other phones either.

With iPhones selling more than any other handset in the US, Apple could be forgiven for not jumping on this issue right away. After all, this is not an iPhone problem - this is a ‘3G iPhones on Fido or Rogers in BC’s Lower Mainland’ problem. Pretty specific, but no one knows why. The only clue is that it seemed to start happening to everyone all at once, and not within a reasonable timeframe of the last update. This is likely a result of a change that Fido/Rogers made to their network, but no one’s talking.

There are a few ways, he suggested, to work around the problem, and it’s worth sharing them in case someone else has the same problem:

  1. Swap SIM cards. A lot of people are using old SIM cards instead of the ones that came with their handset. Very old SIM cards do not support 3G. Some of Fido’s newer-but-still-older SIM cards support 3G but may still be flaky, while Fido’s newest SIM cards should work great with 3G. If you aren’t using the SIM card that came with your iPhone, dig that one out, call your provider, and get them to switch you over to the new SIM. This may possibly work.
  2. Swap handsets. This is a far more drastic solution, but it may work for some people. Given that it’s not likely a hardware problem, this is almost a last resort, but it might help. Book an appointment at the Apple Store. Some people don’t come back, and some swap two or three handsets with no resolution. Your mileage may vary.
  3. This is the most drastic solution in my opinion - disable 3G. As I mentioned above, this is a 3G problem, but not a 3G iPhone problem. Switching your phone back to EDGE will fix the problem. Still, for the amount of time I’m out-and-about, 3G isn’t a tempting option. If you do go this route, though, be prepared for a potentially dramatic increase in battery life. 3G is a battery-drainer, whether you’re using it or not, so if you can’t get through a day without a charge, you should probably do this anyway.

In the end, none of this is guaranteed to fix the problem. The first two might work, but don’t get your hopes up. The third is a workaround, but not an ideal solution. We’ll have to see if the 2.2 update fixes the issues people are having, or if Fido/Rogers end up fixing whatever on their network is causing this.

For more Fido fun, check out my recent Fido Adventures, wherein I try and fail to update my plan, and still save $15 per month.

Wednesday, November 12th, 2008 Geekery, Hardware, Vancouver, Whatever 5 Comments

Fido Adventures

Today was a big week for me as far as the iPhone goes. I’ve had issues with both Fido and Apple that necessitated a call (for the former) and a Genius appointment (for the latter).

If you haven’t been to the Fido website lately, you won’t have seen the changes - and they’re dramatic. The entire look and feel has changed. After updating their website when the iPhone was launched, they’ve thrown all of that away - and taken the plans with them.

In an effort to compete with Koodo (warning: ugly) and Solo, the no-frills carriers run by Telus and Bell respectively, Fido’s plans have been completely redone. How redone? Well, you can now get no-frills cellular service for $16.95 after tax.

Having signed up for their plans quite a while ago, and having two iPhones on my plan, my bill runs around $170 every month, and so I figured there was some room for improvement there. I was right, of course, but the difference was not as much as I had hoped. I can technically save money on my phone, but because I have a group plan, the cost on the other line would go up, and my total cost would remain the same (and I would lose 5.5 GB of data per month).

What they did offer me, however, is to trim the System Access Fee from my plans, saving me $15 every month - a reasonable change that I’m willing to accept.

The interesting thing here - they are not doing this for all of their customers. They will continue to charge you the SAF unless you call in and ask them about it. They can remove it, but there are conditions - if you are getting a discount already through some negotiating you’ve done before, you have to choose between that and losing the SAF, so if you’re already saving $7.50 or more then it’s not worth it.

If, unlike me, you aren’t on a group plan, you can probably save a fair chunk of change by switching. You also have the option, if you do less than 500M of data, of going with the $60 iPhone plan and adding unlimited incoming calls and caller ID if you want them (if not, you save even more!). There are various benefits and drawbacks you’d have to weigh.

So, if you’re a Fido customer, go to their website, check out their voice plans, check out their iPhone plans (just add any iPhone to your cart to see plan options), and see if there’s anything that will benefit you. At the very least, stop paying the system access fee!

Here’s a little table of what my options (for my first line) came out to. 

  Old Plan Change Plan iPhone Plan
Voice $35 $25 $60
Data $30 $30
Extras $15 $10 $16
SAF $7.50
Total $87.50 $65 $76

 

Honestly, the only change that would really benefit me at this point would be if Fido introduced a 500 megabyte data plan for $10 (which compares favourably with their 6GB promotion for $30). They won’t do this, of course, because even people with the 6 GB plan are probably only using between 50-150 MB of data per month at most, so they’re making three times the money and providing the same amount of service. Perhaps once their network is built out and the instabilities are ironed out, they’ll consider more competitive rates.

For more iPhone fun, check out my same-day iPhone Adventures, where I exchange my iPhone for a new one, which probably won’t help me.

Wednesday, November 12th, 2008 Canada, Geekery 2 Comments

Head Hunting

I’m not sure how I became someone who people actually ask questions of, but Sophie Beaudoin of Riverstyx is shopping around for a systems administrator. Being new to Vancouver, I don’t have a huge network to draw from, but I told her I’d show it around and see if I can drum up any interest. Here’s what she has to say about her company:

Our company, Riverstyx, is a small, privately held firm composed mostly of highly skilled web programmers who create customized software solutions for some of the Internet’s largest traffic sites. 

Sophie’s trying to dig up an admin with the following credentials:

  • 5+ years experience administering Linux/BSD
  • 5+ years experience administering networks
  • Experience with Snort (IDS) and pf (packet filter)
  • Willing to work on rotating on call basis
  • Strong understanding of mySQL and Linux
  • Experience administering servers, e.g. for DNS, Email (postfix/courier for IMAP)

If you or someone you know has these kinds of credentials and is looking for job or change of pace, send her an e-mail and see what turns up.

Thursday, November 6th, 2008 Whatever No Comments

Vision Vancouver’s @PeterLadner Twatting

So, here’s the story as I understand it:

Someone at Vision Vancouver decided that, in an attempt to be ‘hip’ and ‘edgy’ or whatever, they should register a Twitter account. The account they registered (now deleted) was @PeterLadner - the name of a Vancouver mayoral candidate. I’m a fan of light-hearted political parody in the style of @FakeSarahPalin, but what VV did was different - they essentially posted ‘parody’ using his name on Twitter.

How is this different? Well, for one, there was no clear indication that this was, in fact, parody. It was posted with his name, as though written by him, and there were no overt indications that this was, in fact, a fake - like, say, calling the account @FakePeterLadner. Anyone googling Peter Ladner’s name, perhaps to find information on the candidates in this election, would find Vision Vancouver’s words coming out of Peter Ladner’s mouth, out of context, with no indication that this is just a cheap political stunt.

Vision Vancouver, apparently in response to negative publicity from the Twitter and blogger communities (including posts by Gillian Shaw and Jenn Lowther), and an article on the Vancouver Sun website, has deleted the account, and recreated one at @PeterLadnerFake (which apparently was then deleted as well). Lesson learned?

Well, I wasn’t going to vote in the election because I’m new to the area and don’t understand the issues. Now I’ve learned more about Vision Vancouver, and I’ve decided that I don’t really want them around. Not just because of this issue, mind you, but others - like refusing to pay transit fares, even if he did eventually pay up. Seriously, if you don’t like the rules, then fight to change them, but don’t refuse to play ball because you can’t make your own rules up as you go. I’ll admit that I’ve run two zones on a one-zone pass (sometimes accidentally, sometimes not) but if I were caught, I’d pay the fine.

So, maybe I will vote after all. I haven’t decided for sure, and I’m not necessarily going to vote for Peter Ladner, but it looks like Robertson and his campaign are going about things the wrong way, and I couldn’t really vote for them after this kind of thing.

Oh well.

Thursday, November 6th, 2008 Canada, Geekery, Musings, Whatever 1 Comment

Social Network Network

So while talking with Gus on Twitter today, it occurred to me how frustrating social networks are. I have an account on LinkedIn, Facebook, Twitter, Hi5 (unless I deleted it), MySpace (which I’ve never used), Tumblr, Identi.ca, and so on. I’ve also got accounts on the MSN, Yahoo, GTalk, AIM, and ICQ IM networks, and even our company’s Google Apps account comes with GTalk accounts as well.

LinkedIn recently launched a new ‘application platform’, which lets people write apps and/or integrate their websites with LinkedIn. Sound familiar? Facebook did the same thing. Is this the new Web 3.0? Application platforms and firing 30% of your staff seem to be the hip things these days among hip startups.

One of the interesting ideas behind the Jabber instant messaging protocol (which GTalk uses) is the concept of a federated network. You can connect to a Jabber network like GTalk and talk to your friends on GTalk, but if you want, your company can run its own IM server internally and give everyone accounts and talk to each other - but once you have that set up, your server can talk to Google’s servers, and suddenly jake@company.com can IM bill@gmail.com without any work beyond adding one another to their contact lists.

The concept here is that you can sign up with any service and communicate with anyone on any other service (which supports external communication) transparently. The system also supports end-to-end encryption, so that no one in between can snoop your traffic, meaning that you can have a giant relay of networks forwarding IMs to each other with relative security and privacy.

Wouldn’t it be nice to have the same thing for social networks? A standard protocol, extensible for those social networks that support things others don’t. Imagine being able to create an account on Facebook and then add as a friend someone on LinkedIn or Twitter or any other site where someone has an account. Neat idea?

Well, you can take it one step further. With the OpenID protocol, any site can turn itself into an identification badge for its users, to be used at any other site that uses OpenID. For example, I can go to StackOverflow (a techie programming site) and sign in with, of all things, my Yahoo! ID (which ironically, I only ever use for Flickr and StackOverflow). As of yesterday, you can do the same thing with Windows Live IDs - so you can use your MSN Messenger username and password to sign into any OpenID site.

Yes, that’s right - Microsoft, embracing open standards without breaking them. Even more irony? Google added OpenID, but made it incompatible with everyone else. 

So what does this utopian vision of the future look like? To be honest, it kind of reminds me of an old, defunct technology that was released before its time - Cyberdog. Cyberdog was an old Apple technology that essentially modularized your application. Instead of writing a word processor, you wrote a word processing plugin. Instead of a web browser, you wrote a web browsing plugin. The basic concept was that any application that wanted to be a real app could have within itself any other app, so instead of copying an image and pasting it into your document, you could actually put your image editor INTO the document and now when you want to change the way the image looks (say, adjusting contrast) you can do that right in the application.

Sounds complicated, right? Except when you want a video in a Powerpoint presentation, you can do that. Then when you want your powerpoint presentation embedded into a brochure, you can do that too, and it’s not just some cheesy half-based implementation but you get all of powerpoint in there.

If you’re confused, then you now understand why it never caught on, but rest assured it was pretty neat at the time.

So you have an OpenID from anywhere - maybe you have a Yahoo! account. You go to Facebook and give it your OpenID and it authenticates you, and now you have a Facebook account. No new username or password, just the same as you’ve always had. Now you’re logged in and you fill out your basic profile, and then you think ‘Hey, I want a blog’, so you go into ‘Applications’ and you add the ‘Wordpress’ application and now you have a blog ‘application’ which you’ve acquired and can manage through Facebook, but which isn’t necessarily tied to Facebook. You can keep going, adding the ‘YouTube’ application to share videos with your friends, and so on. You can of course add the regular apps where you throw octopi or Sarah Palin at people who couldn’t care less and are increasingly likely to block you out of frustration, but those you can find anywhere.

Now let’s say I have a Windows Live account and so I create a profile on LinkedIn and add the presentation sharing application, and upload a presentation for people to see. I add you as a friend, and then once you’re there, I offer to share the presentation with you. Facebook tells you you need to have the presentation sharing app installed, so you install it and view my slideshow.

This is the same as it is now, except for two major points:

  1. You don’t need to create an ID somewhere  by creating a new account - you use your existing ID and just say ‘I want to use your service now’ and it works.
  2. You don’t need to use the same service as someone else to talk to them.

Suddenly all the people with LinkedIn accounts who keep saying over and over ‘I don’t want to get a Facebook account just so you can throw New Zealand at me’ can still friend their Facebook friends and just ignore or block the ‘Be Annoying To Your Friends’ application. Now you still get their updates, you can still see the photos of them getting completely drunk and dancing naked on the bar, and you still have the ability to send messages and share slideshows, you just don’t have to maintain 82 different profiles everywhere.

Just a thought.

Thursday, October 30th, 2008 Musings No Comments

Help test our site, and get something for your troubles

Who we are

So the company that I work for has, as one of its revenue-generating projects, Perfume.com. Our big project at the moment is working on a complete, from-scratch rewrite for the site. Visually, it looks the same, but underneath it works better and can do more.

What we need

To test it out. We need to run some traffic to the site and see how it handles things. We can do this on our own, of course, but most people when they encounter a problem will just give up and go somewhere else, or try again later, and we’ll never know. What we need is feedback.

What we want

To get a little traffic going to the website so that we can see what actual people see and how the site behaves for them. We want you to help us test the site, but more importantly, we want to hear your feedback about the site. If it’s too slow, if it breaks at any point, if you see any errors that shouldn’t be there, and so on.

What do you get?

Ten percent off. It’s not astronomical, but maybe it’s worth your time. If the site works the way we think it should, then we get reassured, and you save ten percent off fragrance purchases. If you see any problems, then you just send a quick e-mail and we fix it, and you get your ten percent off anyway.

What do we sell?

Well take a look around the site. We sell mostly fragrances, perfumes and colognes. We have a huge selection, and we ship a fair selection of fragrances internationally (i.e. to Canada, the UK, etc.). If you ever wear perfume or cologne you’ll most likely find something you want.

How do I sign up?

Just send an e-mail tome at dan@livecurrent.com and let me know your state and country. If you have a technical background (web developer, graphic designer, etc) feel free to mention that, but it probably won’t affect who we choose (we may even choose everyone).

Thursday, October 23rd, 2008 Whatever Comments Off

Irony…

So here’s irony for you.

Apple’s been making inroads in homes, huge inroads in schools, and some inroads in business - but not in the ‘enterprise’. Why? It’s almost as though Apple is ignoring enterprise customers entirely. They have features that make it easier to manage larger amounts of Macs, but it’s still not a done deal. It’s as though they’ve only been making a token effort, ignoring the realities that businesses face. For example, OS X works well with ActiveDirectory, but not with Exchange support - unless you buy Entourage, which isn’t a very good program at all, to be honest. Now, however, with Microsoft’s help, Apple is poised to replace Windows on the desktop in large corporations as well, cutting Microsoft’s revenue stream off at the knees.

› Continue reading

Friday, October 17th, 2008 Geekery, Macintosh, Windows No Comments

As a matter of fact…

No, I can’t settle on a theme. It’s hard to find a theme that’s uniquely ‘you’ (me) and yet at the same time reflects well the attitude and the atmosphere that you (I) want to convey. I (you? no, wait…) might keep this one, just because it should be easy enough to modify.

Monday, October 13th, 2008 Geekery, Whatever No Comments

photos

Unicode TerminalStraightforward SimplicityNice save LogMeInDigg's not all about Obama anymore!Data Detector Fail ReduxData Detector FailIRC on iPhone 3GGoDaddy: UI FailBC Hydro - Power Outages

RSS Tweets