<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"	>
<channel>
	<title>Comments on: Creating a reorderable task list &#8211; Managing gadget states with concurrency in mind</title>
	<atom:link href="http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/feed/" rel="self" type="application/rss+xml" />
	<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/</link>
	<description>Developing powerful foundations for adaptable information-centric applications with Google Wave</description>
	<lastBuildDate>Fri, 12 Feb 2010 21:19:17 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: A Wave Gadget + Robot using GWT 2.0 and Google App Engine, Part 1 &#171; The Zukunft</title>
		<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/comment-page-1/#comment-858</link>
		<dc:creator>A Wave Gadget + Robot using GWT 2.0 and Google App Engine, Part 1 &#171; The Zukunft</dc:creator>
		<pubDate>Tue, 09 Feb 2010 02:14:55 +0000</pubDate>
		<guid isPermaLink="false">http://wave.thewe.net/?p=56#comment-858</guid>
		<description>[...] that the only atomic state operations wave supports are the change of a single key. Inspired by Avital Oliver&#8217;s  great blog post, I came up with the following scheme for saving gadget [...]</description>
		<content:encoded><![CDATA[<p>[...] that the only atomic state operations wave supports are the change of a single key. Inspired by Avital Oliver&#8217;s  great blog post, I came up with the following scheme for saving gadget [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Google Wave Gadgets using MooTools</title>
		<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/comment-page-1/#comment-82</link>
		<dc:creator>Google Wave Gadgets using MooTools</dc:creator>
		<pubDate>Mon, 07 Sep 2009 16:44:18 +0000</pubDate>
		<guid isPermaLink="false">http://wave.thewe.net/?p=56#comment-82</guid>
		<description>[...] the source code for task list gadget and the original blog post about [...]</description>
		<content:encoded><![CDATA[<p>[...] the source code for task list gadget and the original blog post about [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: KonstantinMiller</title>
		<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/comment-page-1/#comment-25</link>
		<dc:creator>KonstantinMiller</dc:creator>
		<pubDate>Mon, 06 Jul 2009 22:20:20 +0000</pubDate>
		<guid isPermaLink="false">http://wave.thewe.net/?p=56#comment-25</guid>
		<description>I have been looking looking around for this kind of information. Will you post some more in future? I&#039;ll be grateful if you will.</description>
		<content:encoded><![CDATA[<p>I have been looking looking around for this kind of information. Will you post some more in future? I&#8217;ll be grateful if you will.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Avital Oliver</title>
		<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/comment-page-1/#comment-9</link>
		<dc:creator>Avital Oliver</dc:creator>
		<pubDate>Mon, 22 Jun 2009 21:17:47 +0000</pubDate>
		<guid isPermaLink="false">http://wave.thewe.net/?p=56#comment-9</guid>
		<description>Very interesting comments, Omri. Thanks for the references to the &quot;official&quot; names of things.

The reorderable task list gadget has sequential consistency and I hope that the framework will allow for all gadgets to have that property. But there may be other operations (e.g. switching the position of two items) and perhaps some of these operations can&#039;t be implemented using this scheme with sequential consistency.

If that is the case we will have to figure out a different model for the framework. But I don&#039;t believe in thinking too much before doing. Once we start building the framework and the gadgets we will discover these issues and figure them out.</description>
		<content:encoded><![CDATA[<p>Very interesting comments, Omri. Thanks for the references to the &#8220;official&#8221; names of things.</p>
<p>The reorderable task list gadget has sequential consistency and I hope that the framework will allow for all gadgets to have that property. But there may be other operations (e.g. switching the position of two items) and perhaps some of these operations can&#8217;t be implemented using this scheme with sequential consistency.</p>
<p>If that is the case we will have to figure out a different model for the framework. But I don&#8217;t believe in thinking too much before doing. Once we start building the framework and the gadgets we will discover these issues and figure them out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Omri</title>
		<link>http://wave.thewe.net/2009/06/15/concurrency-in-gadget-state/comment-page-1/#comment-8</link>
		<dc:creator>Omri</dc:creator>
		<pubDate>Mon, 22 Jun 2009 20:23:48 +0000</pubDate>
		<guid isPermaLink="false">http://wave.thewe.net/?p=56#comment-8</guid>
		<description>I am not deeply familiar with Google Wave but from reading your post i take it they allow for a shared state between gadgets. This shared state can basically be looked at as shared memory in a multi processor architecture, for example. What you are basically trying to solve, is the same issue that happens in these kind of shared memory architectures.

Values can be used indefinitely as long as no one decides to change them, but as soon as one participant changes something, the other participants need to either be aware their local value is no longer relevant, or know what to expect when they attempt to concurrently modify the same value. This is usually referred to as &quot;Memory coherence&quot;.

There are various methodologies developed over the years to support different consistency models.
A consistency model means which type of consistency will always be kept in the shared memory.
For example, if I have two transactions occurring in parallel:

t1 = [key1 = v1, key2 = v2]
t2 = [key1 = v3, key2 = v4]

A sequential consistency model would guarantee that the state of the shared memory would be as if we picked an order between t1 and t2 and performed them in a sequential (uni-processor) order, t1 and then t2, or vice versa. From Wikipedia (&lt;a href=&quot;http://en.wikipedia.org/wiki/Sequential_consistency&quot; rel=&quot;nofollow&quot;&gt;http://en.wikipedia.org/wiki/Sequential_consistency&lt;/a&gt;):
&quot;...It was first defined as the property that requires that &quot;... the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program...&quot;

In any case, these transactions will never intertwine which would result in an inconsistent state of [key1 = v1, key2=V4], which would never happen

In your post you talk about specific state manipulation to solve this problem in your specific realm of internal state (like new position being an average of old positions). If I were to look at this as a framework for developers, the question I would draft and try to solve:

Given a shared memory representation of key value pairs, an atomic modification scheme which changes a set of key values in a synchronized fashion, which types of memory coherence protocols/algorithms can I implement and which consistency model can I support?</description>
		<content:encoded><![CDATA[<p>I am not deeply familiar with Google Wave but from reading your post i take it they allow for a shared state between gadgets. This shared state can basically be looked at as shared memory in a multi processor architecture, for example. What you are basically trying to solve, is the same issue that happens in these kind of shared memory architectures.</p>
<p>Values can be used indefinitely as long as no one decides to change them, but as soon as one participant changes something, the other participants need to either be aware their local value is no longer relevant, or know what to expect when they attempt to concurrently modify the same value. This is usually referred to as &#8220;Memory coherence&#8221;.</p>
<p>There are various methodologies developed over the years to support different consistency models.<br />
A consistency model means which type of consistency will always be kept in the shared memory.<br />
For example, if I have two transactions occurring in parallel:</p>
<p>t1 = [key1 = v1, key2 = v2]<br />
t2 = [key1 = v3, key2 = v4]</p>
<p>A sequential consistency model would guarantee that the state of the shared memory would be as if we picked an order between t1 and t2 and performed them in a sequential (uni-processor) order, t1 and then t2, or vice versa. From Wikipedia (<a href="http://en.wikipedia.org/wiki/Sequential_consistency" rel="nofollow">http://en.wikipedia.org/wiki/Sequential_consistency</a>):<br />
&#8220;&#8230;It was first defined as the property that requires that &#8220;&#8230; the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program&#8230;&#8221;</p>
<p>In any case, these transactions will never intertwine which would result in an inconsistent state of [key1 = v1, key2=V4], which would never happen</p>
<p>In your post you talk about specific state manipulation to solve this problem in your specific realm of internal state (like new position being an average of old positions). If I were to look at this as a framework for developers, the question I would draft and try to solve:</p>
<p>Given a shared memory representation of key value pairs, an atomic modification scheme which changes a set of key values in a synchronized fashion, which types of memory coherence protocols/algorithms can I implement and which consistency model can I support?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
