Skip to main contentdfsdf

Gary Edwards's List: Age of Collaborative Computing

  • May 15, 10

    The new Google documents

    To get around these problems, the new Google document editor doesn’t use the browser to handle editable text. We wrote a brand new editing surface and layout engine, entirely in JavaScript.

    A new editing surface

    Let’s start by talking about the editing surface, which processes all user input and makes the application feel like a regular editor. To you, the new editor looks like a fairly normal text box. But from the browser’s perspective, it’s a webpage with JavaScript that responds to any user action by dynamically changing what to display on each line. For example, the cursor you see is actually a thin, 2 pixel-wide div element that we manually place on the screen. When you click somewhere, we find the x and y coordinates of your click and draw the cursor at that position. This lets us do basic things like slanting the cursor for italicized text, and it also allows more powerful capabilities like showing multiple collaborators’ cursors simultaneously, in the same document.

  • Apr 29, 10

    Google Wave Federation Protocol Specs;  list of documents published by Google

  • Sep 03, 09

    Summary: Collaborative document editing means multiple editors being able to edit a shared document at the same time.. Live and concurrent means being able to see the changes another person is making, keystroke by keystroke.

    Currently, there are already a number of products on the market that offer collaborative document editing. Some offer live concurrent editing, such as EtherPad and SubEthaEdit, but do not offer rich text. There are others that offer rich text, such as Google Docs, but do not offer a seamless live concurrent editing experience, as merge failures can occur.

    Wave stands as a solution that offers both live concurrent editing and rich text document support. 

    The result is that Wave allows for a very engaging conversation where you can see what the other person is typing, character by character much like how you would converse in a cafe. This is very much like instant messaging except you can see what the other person is typing, live. Wave also allows for a more productive collaborative document editing experience, where people don't have to worry about stepping on each others toes and still use common word processor functionalities such as bold, italics, bullet points, and headings.

    Wave is more than just rich text documents. In fact, Wave's core technology allows live concurrent modifications of XML documents which can be used to represent any structured content including system data that is shared between clients and backend systems.

    To achieve these goals, Wave uses a concurrency control system based on Operational Transformation.

    • Wave Operations


      Wave operations consists of a document operation, for modifying XML documents and other non document operations. Non document operations are for tasks such as adding or removing a participant to a Wavelet. We'll focus on document operations here as they are the most central to Wave.


      It's worth noting that an XML document in Wave can be regarded as a single document operation that can be applied to the empty document.


      This section will also cover how Wave operations are particularly efficient even in the face of a large number of transforms.


      XML Document Support


      Wave uses a streaming interface for document operations. This is similar to an XMLStreamWriter or a SAX handler. The document operation consists of a sequence of ordered document mutations. The mutations are applied in sequence as you traverse the document linearly. 


      Designing document operations in this manner makes it easier to write transformation function and composition function described later.


      In Wave, every 16-bit Unicode code unit (as used in javascript, JSON, and Java strings), start tag or end tag in an XML document is called an item. Gaps between items are called positions. Position 0 is before the first item. A document operation can contain mutations that reference positions. For example, a "Skip" mutation specifies how many positions to skip ahead in the XML document before applying the next mutation.


      Wave document operations also support annotations. An annotation is some meta-data associated with an item range, i.e. a start position and an end position. This is particularly useful for describing text formatting and spelling suggestions, as it does not unecessarily complicate the underlying XML document format.

    • Wave document operations consist of the following mutation components:

      skip

      insert characters

      insert element start

      insert element end

      insert anti-element start

      insert anti-element end

      delete characters

      delete element start

      delete element end

      delete anti-element start

      delete anti-element end

      set attributes

      update attributes

      commence annotation

      conclude annotation


      The following is a more complex example document operation.


      skip 3

      insert element start with tag "p" and no attributes

      insert characters "Hi there!"

      insert element end

      skip 5

      delete characters 4


      From this, one could see how an entire XML document can be represented as a single document operation. 

  • May 18, 10

    PDF document describing High-latency, low-bandwidth windowing in the Jupiter collaboration. This is the original Operational Transform concept later implemented by Google Wave, and now Google Docs. Google implements a "flat" OTXML document model. Florian ahs designed a very dynamic tree version of OTXML that is fully capable of handling complex compound documents common to workgroup productivity business systems.
    .....................................................................................................................
    Original Operational Transform and Jupiter Collaboration System concept and research by DA Nichols - 1995 - Cited by 77 - Related articlesPavel Curtis, Xerox PARC, 3333 Coyote Hill Rd., Palo Alto, CA .... Chengzheng Sun , Clarence Ellis, Operational transformation in real-time group editors: ...portal.acm.org/citation.cfm?id=215706 - Similar
    ......................................................................................................................

    There is a PowerPoint Presentation available. [PPT] cityu slides
    File Format: Microsoft Powerpoint - View as HTML
    Operational Transformation in Real-Time Group Editors: Issues, Algorithms, and Achievements ... Nichols et al (Xerox PARC, UIST95) ...
    www.cit.griffith.edu.au/~scz/conferences/cscw98.ppt

  • May 18, 10

    Welcome to the homepage for the Google Wave Federation Protocol. If you're just learning about Google Wave, you may wish to also check out http://wave.google.com/. You may also want to read about the  federation effort in the introductory blog post.
    Please browse the site to learn more about the community principles, review the draft protocol specifications, read the architecture white papers, and most importantly: get involved.

    As part of Google Wave Federation Day, we have open sourced the Operational Transformation (OT) implementation, which is the primary algorithm that manages the collaborative experience inside Google Wave, as well as the underlying wave model. To encourage early experimentation with the federation protocol, we also built a basic open source client/server. Check out the source code and get started with the introductory documentation.

  • May 18, 10

    The authors of this presentation are Chengzheng Sun and Clarence (Skip) Ellis. Original Operational Transformation concept was presented in a 1995 white paper titled: ’Original Operational Transform and Jupiter Collaboration System’, concept and research by DA Nichols and Pavel Curtis, of Xerox PARC, 1995. White papers concerning the Google Wave Federation Protocol can be found here: http://www.waveprotocol.org/whitepapers.

  • May 20, 10

    Welcome to Defensive Publications
    Defensive publications, which are endorsed by the USPTO as an IP rights management tool, are documents that provide descriptions and artwork of a product, device or method so that it enters the public domain and becomes prior art. This powerful preemptive disclosure prevents other parties from obtaining a patent on the product, device or method. It enables the original inventor to ensure that they have access to their invention by preventing others from later making patent claims on it. It also means that they do not have to shoulder the cost of patent applications.

    The Defensive Publications program, a component of Linux Defenders, enables non-attorneys to use a set of Web-based forms to generate defensive publications. It relies on substantial participation from the open source community as it relates to disclosures. Defensive publication drafts will be reviewed and edited as needed and at no charge by OIN’s attorneys. The completed defensive publication will be added by OIN to the IP.com database, which is in turn used by IP attorneys and the patent and trademark office to search for prior art when examining patent applications.

  • May 21, 10

    Google I/O Google's back-end infrastructure is now running applications built with its new-age Go programming language.

    "We're already using Go internally at Google for some production stuff," Robert Pike, one of Go's developers and a former member of the Unix team at Bell Labs, said today during a question and answer session at the company's annual developer conference in San Francisco. "The language is pretty stable."


    Speaking with The Reg, Pike declined to describe these systems. "But I'm not lying," he told us. "This is real stuff, and we're using it."

    Google open sourced Go in November, describing it as an effort to crossbreed a dynamic web-centric language like Python with a compiled language like C++. "There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript, [but] some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages," the company said in a blog post announcing Go.

    .... The idea, Pike told us, was to build a programming language from the ground up that does all the things the project's developers wished other languages did. It borrows a bit from C and from Newsqueak, a language Pike developed back in the 80s, he said, but for the most part, it's a new animal.

    .....Cox and Pike also said that they have completed a Go compiler for Native Client, the Google plug-in that lets you run native code inside Google's Chrome browser. But it would seem that very little application work has been done here. Native Client is now bundled with Chrome, and the company reiterated yesterday that it would be an "important" part of its upcoming Chrome OS, the netbook operating system based on the browser.

  • May 21, 10

    GO is a systems programming language that is expressive, concurrent, and garbage-collected.

    OSS home for the GO programming language.  Native Client compiler for GO was released at the 2010 Google I/O.  Said to be very fast.

  • May 27, 10

    Good article describing Google Native Client design and plans:

    Native Client is a means of running native code inside the browser, letting you beef up a web app with existing libraries written in languages such as C and C++. As Google Native Client project manager Henry Bridge explains in a video that accompanies Springer's blog post, web apps written for Native Client include HTML, CSS, and JavaScript as well as native code. The HTML, CSS, and JavaScript bits are deployed as text files, and the native code bit require a compiler that produces Native Client binaries.


    NaCl
    The SDK includes a compiler based on GCC (GNU Compiler Collection) for creating x86-32 or x86-64 binaries from C or C++ source code, and you'll find ports of popular open source projects like zlib, Lua, and libjpeg.

    Google is obsessed with moving all applications into what it insists on calling the cloud, and Native Client is part of the company's ongoing efforts to put online apps on a par with desktop applications from the likes of Microsoft, its bête noire.

    In addition, Google is developing a means of distributing portable versions of Native Code executables across all processors. The Portable Native Client project - aka PNaCl, pronounced 'pinnacle' - uses the Low Level Virtual Machine (LLVM) bitcode format. The idea is to compile C, C++, and other languages into LLVM bitcode that allows for client-side translation into the client's native instruction set.

  • Oct 06, 11

    50 GB FREE!  Forever.  Sync-Share-Store.  Not quite dropBox sync, but how can you beat the price?  

  • Dec 18, 13

    Copyblogger originally shared:

    These 4 Exercises Are Guaranteed to Make You a Better Writer

    Your writing is good. You know how to position words to make clear sentences. You can string together sentences into meaningful paragraphs. You can take those sentences and arrange them into a persuasive post.

    But you've plateaued. Your writing is getting predictable, stale, and forgettable. And you're not sure how to break out of that mold.

    If that's you, then you need to check out these exercise from MIT designed to help you evaluate your copy.

    You'll learn things like:

    - Your sentence length pattern
    - If you correctly emphasize the important parts in your sentences and paragraphs.
    - Whether you lean on simple, complex, or compound sentences.

    Analyzing your writing style will highlight your weaknesses, and give you a plan to make your writing better.

    So, when you've got a few minutes, perform these exercises:
    http://writing.mit.edu/wcc/resources/writers/analyzingyourownstyle

    +Demian Farnworth 

1 - 14 of 14
20 items/page
List Comments (0)