Network prediction in Outlook Web Access

I am fascinated by how software failures can expose what would normally be internal implementation details.

For instance, my building has a conference room booking system with a screen outside each room showing the meeting schedule. Sometimes this crashes, in which case the screen displays a Windows desktop and error message, upside down. Why upside down? Was that written in a spec somewhere? If so, why? Or did the construction workers make a mistake, accidentally installing the screens the wrong way up, and then someone decided it would be cheaper to work around this in software, changing the app to rotate its output 180° rather than fixing the hardware installation?

But I digress.

So there I was after dinner last night, sitting on the couch, checking my email (yeah, I know, Tracy is right I'm a workaholic). Outlook Web Access was having server trouble: it could display and send emails, but not move or delete anything. Here's what I saw:

  • Delete an email
  • It disappears from my inbox view
  • ~1 second later, up pops "an unexpected error occurred"
  • The deleted email reappears

Seems to me that Outlook Web Access must be using some kind of network prediction algorithm, similar to a multiplayer game. Although this is obviously a client/server rather than peer-to-peer architecture, they don't bother waiting for a server round trip before updating the local display. To keep the interface feeling snappy, they must go ahead and apply predicted edits to the local state at the same time as change requests are sent to the server. Most of the time I would never notice, but if the server edit fails, that turns out to have been a misprediction, so they have to rollback and undo the local change. My deleted email suddenly reappears, just the same as when a dude I headshotted (headshat?) springs back to life because it turns out he wasn't quite where my local machine guessed he was.

Who knew that email and Halo have so much in common?

Comments (7)

  1. cuwaters says:

    wow, headshat.  One of my new favorite words

  2. Caleb says:

    Maybe the screens were upside down, because it is easier to hide the cabling that way, as a lot if not all monitors require the cables to plug in from the underside.

  3. Eric says:

    Didn't know you were a Halo player =)

    Did you find out why the desktop was upside down but not the software?

  4. drozzy says:

    Fun read!

  5. Starnick says:

    Headshat…sounds wrong. I can't stop thinking of "A Bear headshatting in the woods" >_<

  6. tommy says:

    Interesting, but not surprising.

    BTW: How is work on XNA 4.0 going on? Will it be released before end of year 2010? Can't wait.

  7. Erik Briggs says:

    Seems to me that the OWA issue is just javascript, and they way OWA's gui is coded.  The item disappears from view because the javascript told it to, after it sent the request.  That has nothing to do with network prediction.  The view is then set to throw an error and refresh the view if an error is thrown.  Fairly simple stuff there.  I don't think OWA is as smart as you think 😉

Skip to main content