<?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/"
		>
<channel>
	<title>Comments on: London Geek Night</title>
	<atom:link href="http://iansrobinson.com/2010/02/12/london-geek-night/feed/" rel="self" type="application/rss+xml" />
	<link>http://iansrobinson.com/2010/02/12/london-geek-night/</link>
	<description>Ian Robinson&#039;s Blog</description>
	<lastBuildDate>Thu, 24 Nov 2011 12:04:13 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Mohan Radhakrishnan</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-245</link>
		<dc:creator>Mohan Radhakrishnan</dc:creator>
		<pubDate>Sun, 29 Aug 2010 03:39:04 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-245</guid>
		<description>Is there a practical example of this ephemeral url ? We have a forgot password link that is sent in an email. This has a state attached to it which can go stale but that is the intention. So in this case there is no application authentication. The url hits the application without authentication and the state is checked to see if the request is coming after the limited number of days.

Is this a valid use case ?</description>
		<content:encoded><![CDATA[<p>Is there a practical example of this ephemeral url ? We have a forgot password link that is sent in an email. This has a state attached to it which can go stale but that is the intention. So in this case there is no application authentication. The url hits the application without authentication and the state is checked to see if the request is coming after the limited number of days.</p>
<p>Is this a valid use case ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Algermissen</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-198</link>
		<dc:creator>Jan Algermissen</dc:creator>
		<pubDate>Mon, 15 Feb 2010 19:26:13 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-198</guid>
		<description>Ian,

thanks, that clears things up to a large extend.

I like your ideas in the first half (resource lifecycle) and will see if I find the common ground with my thinking - seems very similar (to me now) and maybe we just use the terms differently.

In the second half you are loosing me; I have a hunch why but can&#039;t express that yet.

Thanks,
Jan</description>
		<content:encoded><![CDATA[<p>Ian,</p>
<p>thanks, that clears things up to a large extend.</p>
<p>I like your ideas in the first half (resource lifecycle) and will see if I find the common ground with my thinking &#8211; seems very similar (to me now) and maybe we just use the terms differently.</p>
<p>In the second half you are loosing me; I have a hunch why but can&#8217;t express that yet.</p>
<p>Thanks,<br />
Jan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: iansrobinson</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-197</link>
		<dc:creator>iansrobinson</dc:creator>
		<pubDate>Mon, 15 Feb 2010 11:14:50 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-197</guid>
		<description>Hi Jan

(Replies to other comments coming when I have a spare moment).

I don&#039;t expect servers to expose application state: application state isn&#039;t really a concern of the server. Rather, the server manages resource state. The application protocol, and the corresponding application states that can be achieved when executing an instance of that protocol are decomposed at design time into a series of resources, with resource lifecycles and resource states. This allows the server to be stateless with regard to application state.

In other words, a process model can be transformed into one or more resource lifecycle models. Orchestration servers, like BizTalk, manage the process model, and persist application state. This is not what I&#039;m seeking to achieve. Rather, I&#039;m seeking to remodel a process so that it can be described purely in terms of information resource lifecycles, and the rules (known only to the server) that govern the relationships between information resources.

So I&#039;m not trying to expose states that become invalid. Clients can and should include expectations in their requests, which the server asserts against the current state of an information resource, thereby determining whether the intention declared in the received representation is valid in the context of the current state of the resource (determining the current state of a resource may involve the server asserting any rules that relate this resource to others).

The very specific issue on the night was: what can we do to prevent a (bad, naughty) client from going off track, and starting over again - that is, stepping outside the application protocol. Given that we&#039;ve decomposed the application protocol wholly into information resources and resource lifecycles (the server doesn&#039;t maintain a view of the protocol &quot;as such&quot;; it only knows about resources, resource lifecycles and the rules that govern the relationships between resources), the issue then becomes one of ensuring clients interact legitimately with the resources through which the protocol &quot;effect&quot; is realized.

Kind regards

ian</description>
		<content:encoded><![CDATA[<p>Hi Jan</p>
<p>(Replies to other comments coming when I have a spare moment).</p>
<p>I don&#8217;t expect servers to expose application state: application state isn&#8217;t really a concern of the server. Rather, the server manages resource state. The application protocol, and the corresponding application states that can be achieved when executing an instance of that protocol are decomposed at design time into a series of resources, with resource lifecycles and resource states. This allows the server to be stateless with regard to application state.</p>
<p>In other words, a process model can be transformed into one or more resource lifecycle models. Orchestration servers, like BizTalk, manage the process model, and persist application state. This is not what I&#8217;m seeking to achieve. Rather, I&#8217;m seeking to remodel a process so that it can be described purely in terms of information resource lifecycles, and the rules (known only to the server) that govern the relationships between information resources.</p>
<p>So I&#8217;m not trying to expose states that become invalid. Clients can and should include expectations in their requests, which the server asserts against the current state of an information resource, thereby determining whether the intention declared in the received representation is valid in the context of the current state of the resource (determining the current state of a resource may involve the server asserting any rules that relate this resource to others).</p>
<p>The very specific issue on the night was: what can we do to prevent a (bad, naughty) client from going off track, and starting over again &#8211; that is, stepping outside the application protocol. Given that we&#8217;ve decomposed the application protocol wholly into information resources and resource lifecycles (the server doesn&#8217;t maintain a view of the protocol &#8220;as such&#8221;; it only knows about resources, resource lifecycles and the rules that govern the relationships between resources), the issue then becomes one of ensuring clients interact legitimately with the resources through which the protocol &#8220;effect&#8221; is realized.</p>
<p>Kind regards</p>
<p>ian</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Algermissen</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-196</link>
		<dc:creator>Jan Algermissen</dc:creator>
		<pubDate>Mon, 15 Feb 2010 10:26:16 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-196</guid>
		<description>Ian,

regarding the notion of &#039;ephemeral URIs&#039;: We discussed a similar issue over on #rest IRC (see log starting at http://rest.hackyhack.net/2010-02-12.html#254/h254 and next day). 

I am having trouble to understand why a server should expose an application state that is only valid for a certain time in the first place? Especially since the state of the application state itself usually evolves over time ( http://www.nordsc.com/blog/?p=358 )

If the client needs to have an expectation about the current state of a resource, I&#039;d rather have the client include that expectation in its request so the server can check it and take appropriate action.

Roy describes this in http://tech.groups.yahoo.com/group/rest-discuss/message/9805 

&quot;Think of it instead as a series of individual POST requests that are
building up a combined resource that will eventually be a savings
account when finished. Each of those requests can include parameters
that perform the same role as an ETag -- basically, identifying the
client&#039;s view of the current state of the resource. Then, when a
request is repeated or a state-change lost, the server would see
that in the next request and tell the client to refresh its view
of the form before continuing to the next step.&quot;

Could you help me understand what your hypermedia modeling approach is that leads you to exposing states that become invalid?

Thanks,
Jan</description>
		<content:encoded><![CDATA[<p>Ian,</p>
<p>regarding the notion of &#8216;ephemeral URIs&#8217;: We discussed a similar issue over on #rest IRC (see log starting at <a href="http://rest.hackyhack.net/2010-02-12.html#254/h254" rel="nofollow">http://rest.hackyhack.net/2010-02-12.html#254/h254</a> and next day). </p>
<p>I am having trouble to understand why a server should expose an application state that is only valid for a certain time in the first place? Especially since the state of the application state itself usually evolves over time ( <a href="http://www.nordsc.com/blog/?p=358" rel="nofollow">http://www.nordsc.com/blog/?p=358</a> )</p>
<p>If the client needs to have an expectation about the current state of a resource, I&#8217;d rather have the client include that expectation in its request so the server can check it and take appropriate action.</p>
<p>Roy describes this in <a href="http://tech.groups.yahoo.com/group/rest-discuss/message/9805" rel="nofollow">http://tech.groups.yahoo.com/group/rest-discuss/message/9805</a> </p>
<p>&#8220;Think of it instead as a series of individual POST requests that are<br />
building up a combined resource that will eventually be a savings<br />
account when finished. Each of those requests can include parameters<br />
that perform the same role as an ETag &#8212; basically, identifying the<br />
client&#8217;s view of the current state of the resource. Then, when a<br />
request is repeated or a state-change lost, the server would see<br />
that in the next request and tell the client to refresh its view<br />
of the form before continuing to the next step.&#8221;</p>
<p>Could you help me understand what your hypermedia modeling approach is that leads you to exposing states that become invalid?</p>
<p>Thanks,<br />
Jan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: This Week in REST – Volume 3 (Feb 8 2010 – Feb 14 2010) &#171; This week in REST</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-195</link>
		<dc:creator>This Week in REST – Volume 3 (Feb 8 2010 – Feb 14 2010) &#171; This week in REST</dc:creator>
		<pubDate>Mon, 15 Feb 2010 09:25:09 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-195</guid>
		<description>[...] should reflect resource state at a specified point in time. (By Herbert Van de Sompel) London Geek Night &#8211; Report on the London Geek Night held on Feb 11 (with video!) Common REST Mistakes &#8211; [...]</description>
		<content:encoded><![CDATA[<p>[...] should reflect resource state at a specified point in time. (By Herbert Van de Sompel) London Geek Night &#8211; Report on the London Geek Night held on Feb 11 (with video!) Common REST Mistakes &#8211; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #539</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-194</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #539</dc:creator>
		<pubDate>Mon, 15 Feb 2010 08:37:03 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-194</guid>
		<description>[...] London Geek Night - Ian Robinson shares the video from his ThoughtWorks London Geeknight talk last week, and follows on the discussion from a number of points raised during the session. [...]</description>
		<content:encoded><![CDATA[<p>[...] London Geek Night &#8211; Ian Robinson shares the video from his ThoughtWorks London Geeknight talk last week, and follows on the discussion from a number of points raised during the session. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Butler-Cole</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-193</link>
		<dc:creator>Ben Butler-Cole</dc:creator>
		<pubDate>Sun, 14 Feb 2010 22:24:09 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-193</guid>
		<description>The distinction between designing services to expose notional business resources and designing them around a state machine reminds me of Greg Young&#039;s view that IT (generally) has failed our customers because we&#039;ve forced them into a data-centric rather than behaviour-centric viewpoint (because CRUD is easy, so that&#039;s what we implement).

I can&#039;t find an exposition of his argument in text, but there is an interview with him at http://herdingcode.com/?p=189 which makes the point.

Ben</description>
		<content:encoded><![CDATA[<p>The distinction between designing services to expose notional business resources and designing them around a state machine reminds me of Greg Young&#8217;s view that IT (generally) has failed our customers because we&#8217;ve forced them into a data-centric rather than behaviour-centric viewpoint (because CRUD is easy, so that&#8217;s what we implement).</p>
<p>I can&#8217;t find an exposition of his argument in text, but there is an interview with him at <a href="http://herdingcode.com/?p=189" rel="nofollow">http://herdingcode.com/?p=189</a> which makes the point.</p>
<p>Ben</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stacy</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-192</link>
		<dc:creator>Stacy</dc:creator>
		<pubDate>Sun, 14 Feb 2010 00:09:24 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-192</guid>
		<description>For the example of a basket I think the user should be able to use their back button (or their history) to move the transaction to an earlier state.  I agree that it would be good usability to present the user with the option to jump to where they left off; but not to force them there. If a user navigated to an earlier state of their basket I think I&#039;d display how the basket looked at that time, the past state of a resource could be a very handy thing to have around and the past is immutable.

For the game it makes sense to me that the server have a user resource and use that to constrain the user to allowed actions, or more flexibly to provide a historical view when the user tries to teleport to an earlier state; instead of re-providing the user with the options available from the earlier state instead disable all but the option they took; you could even hand out the starting url of a completed game so that others could watch your performance (*)

I think minimal constraints should be placed on how resources can be accessed: only those constraints needed to retain the semantics of the application, the more constraints the fewer unintended uses.

Here are some interesting uses: As an employee I put some software items into a basket and hand it over to my boss to approve it, they do so by handing it over to accounts to pay for it. As a lecturer I create a basket of books that I recommended my students read and hand it out to them, each of my students amends their copy of the basket before paying, as a lecturer I also send the basket to the library, they examine their stock, amend the basket and order 10 copies of everything they don&#039;t already have. As a returning lecturer I amend my course and my recommend reading basket and give out the new basket.

(*) Is this effectively creating a set of log resources, i.e. a replacement for log files ?</description>
		<content:encoded><![CDATA[<p>For the example of a basket I think the user should be able to use their back button (or their history) to move the transaction to an earlier state.  I agree that it would be good usability to present the user with the option to jump to where they left off; but not to force them there. If a user navigated to an earlier state of their basket I think I&#8217;d display how the basket looked at that time, the past state of a resource could be a very handy thing to have around and the past is immutable.</p>
<p>For the game it makes sense to me that the server have a user resource and use that to constrain the user to allowed actions, or more flexibly to provide a historical view when the user tries to teleport to an earlier state; instead of re-providing the user with the options available from the earlier state instead disable all but the option they took; you could even hand out the starting url of a completed game so that others could watch your performance (*)</p>
<p>I think minimal constraints should be placed on how resources can be accessed: only those constraints needed to retain the semantics of the application, the more constraints the fewer unintended uses.</p>
<p>Here are some interesting uses: As an employee I put some software items into a basket and hand it over to my boss to approve it, they do so by handing it over to accounts to pay for it. As a lecturer I create a basket of books that I recommended my students read and hand it out to them, each of my students amends their copy of the basket before paying, as a lecturer I also send the basket to the library, they examine their stock, amend the basket and order 10 copies of everything they don&#8217;t already have. As a returning lecturer I amend my course and my recommend reading basket and give out the new basket.</p>
<p>(*) Is this effectively creating a set of log resources, i.e. a replacement for log files ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Rees</title>
		<link>http://iansrobinson.com/2010/02/12/london-geek-night/comment-page-1/#comment-191</link>
		<dc:creator>Robert Rees</dc:creator>
		<pubDate>Sat, 13 Feb 2010 15:14:56 +0000</pubDate>
		<guid isPermaLink="false">http://iansrobinson.com/?p=192#comment-191</guid>
		<description>I think the teleporting issue came up during the Away Day talk questions and at that time people seemed to agree that the server was responsible for the validity of client-accessed resource.

So if Wyatt Erp requests the URL of the entrance having gone down the steps the server should handle the situation appropriately, perhaps redirecting to the url of the &quot;current&quot; location.

In the example of the basket ordering if someone accessed a URL for an earlier state you would want them to actually be directed to the last phase of ordering they were interacting with because the goal is normally to close the transaction and make the sale.

Time locking the url seems more effort that its worth, particularly as the server already knows what locations are valid as &quot;next&quot; moves when it calculates the &quot;north-south-east-west&quot; directions for the response.</description>
		<content:encoded><![CDATA[<p>I think the teleporting issue came up during the Away Day talk questions and at that time people seemed to agree that the server was responsible for the validity of client-accessed resource.</p>
<p>So if Wyatt Erp requests the URL of the entrance having gone down the steps the server should handle the situation appropriately, perhaps redirecting to the url of the &#8220;current&#8221; location.</p>
<p>In the example of the basket ordering if someone accessed a URL for an earlier state you would want them to actually be directed to the last phase of ordering they were interacting with because the goal is normally to close the transaction and make the sale.</p>
<p>Time locking the url seems more effort that its worth, particularly as the server already knows what locations are valid as &#8220;next&#8221; moves when it calculates the &#8220;north-south-east-west&#8221; directions for the response.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

