Neil's News

+ 2010
- 2009
 Google Multivac
 Lua Diff
 Moo Lobotomy
 Python JSON
 Stray Pixel
 Jupiter Photos
 Moon Photos
 Android Scope
 Impact Night
 Magnetic Noise
 DocEng 2009
 München
 Regensburg
 Java MobWrite
 Cursor Preservation
 Orbital Paper Airplane
 JSONP Memory Leak
 First Academic Paper
 Moore's Bet
 Moon Movie
 Hard Drive Crash
 Maker Faire 2009
 Self-collisions
 Mad Scientist
 Doorbell
 Rice DNA
 Somalia Affair
 Colorado River
 Great White North
 Lava Lamp
 Turbine
 Black and White
 CAT Triplet
 Dodecahedron
 MobWrite 3
 Differential Sync Talk
+ 2008
+ 2007
+ 2006
+ 2005
+ 2004
+ 2003
+ 2002

Self-collisions

1 May 2009

The intended use case for MobWrite is real-time multi-user collaboration. Alice and Bob need to work on the same content at the same time, so they use MobWrite to resolve the conflicts. This use case is fairly obvious and self-explanatory.

Somewhat to my surprise, MobWrite is catching on as a solution for a completely different use case: self-collisions. Consider the following workflow.

[Single user collision]

  1. Alice is composing a letter to John using an online application. She uses her desk computer to type the first word, "John". Then she saves her work.
  2. Alice gets called to a boring meeting. She uses her laptop to load up the saved draft and continue writing. She manages to add one word, arriving at "Dear John"
  3. Alice returns to her desk computer (which is as she left it) and adds the final word, arriving at "John Smith".

The result of this workflow is that Alice has forked her document. Neither her desktop nor her laptop has the latest version of the document. She has collided with herself and is now in the position of having to do a manual three-way merge. This is an inherent danger of any application which uses network storage -- even if there is only a single user.

Users of one such internal application here at Google encountered this self-collision scenario with such regularity that version numbers were added so that only the latest branch could save. This hacky fix just made things worse, one employee was forced to drive home to fetch his open laptop so that he could regain control of the session.

A better solution is to bolt a MobWrite conduit onto the side of the application. All open clients can then synchronize with each other through MobWrite. In the above example, the "Dear" which Alice typed on her laptop would have quietly appeared on her desktop computer shortly after she typed it. The final result would have been "Dear John Smith" on both computers.

The bad news is that as applications move onto the cloud, engineers need to pay more attention to self-collisions. The good news is that if one deals with self-collisions properly, one has laid the groundwork for real-time multi-user collaboration.


Check out Google's goats. They are pretty friendly animals and great to have around. I think they ate their Noogler hats though.

Update: Innovation aus Zapfendorf. Is it wrong for a Google employee to participate in a little Googlebombing?

< Previous | Next >

 
-------------------------------------