<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iansrobinson.com &#187; REST</title>
	<atom:link href="http://iansrobinson.com/category/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://iansrobinson.com</link>
	<description>Ian Robinson&#039;s Blog</description>
	<lastBuildDate>Tue, 24 Apr 2012 07:02:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Progressive .NET Tutorial</title>
		<link>http://iansrobinson.com/2011/08/02/progressive-net-tutorial/</link>
		<comments>http://iansrobinson.com/2011/08/02/progressive-net-tutorial/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 16:47:21 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=511</guid>
		<description><![CDATA[On September 7th I&#8217;ll be running a half-day tutorial on building RESTful Web services as part of the Skills Matter and London .NET User Group&#8217;s Progressive .NET Tutorials. This will be a very hands-on tutorial. Over the course of three and a half hours we&#8217;ll build a hypermedia-driven service and client in .NET using the [...]]]></description>
			<content:encoded><![CDATA[<p>On September 7th I&#8217;ll be running a half-day tutorial on building RESTful Web services as part of the Skills Matter and London .NET User Group&#8217;s <a href="http://skillsmatter.com/event/open-source-dot-net/progressive-dot-net-tutorials-2011/cs-2275" title="Progressive .NET Tutorials">Progressive .NET Tutorials</a>.</p>

<p>This will be a very hands-on tutorial. Over the course of three and a half hours we&#8217;ll build a hypermedia-driven service and client in .NET using the new <a href="http://wcf.codeplex.com" title="WCF Web APIs">WCF Web APIs</a>. The subject matter hearkens back to a favourite subject of mine, <a href="http://jaoo.dk/aarhus-2009/presentation/Hydras+and+Hypermedia" title="Hydras and Hypermedia">Hydras and Hypermedia</a>, for the application we&#8217;ll build will be a simple text-based pick-your-path-to-adventure game.</p>

<p>This isn&#8217;t a tutorial on games design, however. Despite the non-enterprisey subject matter, the tutorial serves to illustrate how machine clients and services can cooperate to achieve a useful application goal. Business application analogies lurk around every corner and surprise you with every encounter.</p>

<p>The tutorial comprises three exercises. With each exercise you&#8217;ll have to fix a number of broken unit and functional tests. Bit by bit, you&#8217;ll build a working application:</p>

<ul>
<li><strong>Exercise 1:</strong> Here we implement the server resources that make up the dungeon &#8211; the chambers, tunnels and caves in which our daring client will venture.</li>
<li><strong>Exercise 2:</strong> Next we build a crafty client that can discover a path through the dungeon. By the end of the exercise, the client ought to be able to navigate the dungeon from entrance to exit.</li>
<li><strong>Exercise 3:</strong> Last, we add an element of danger, populating the dungeon with encounters (more resources) that the client must overcome before it achieves its application goal.</li>
</ul>

<p>Along the way you&#8217;ll learn about:</p>

<ul>
<li>The Atom Syndication Format</li>
<li>&#8220;What if&#8221; client-side intelligence</li>
<li>The client as arbiter of application state</li>
<li>Hypermedia controls: links, link relations and forms</li>
<li>DRY URIs</li>
</ul>

<p>So come and join me for what promises to be an entertaining hack-n-slash workshop. Attendees should be familiar with C# and unit testing, and have some knowledge of HTTP.</p>

<p>Full details and registration for the entire event can be found <a href="http://skillsmatter.com/event/open-source-dot-net/progressive-dot-net-tutorials-2011/cs-2275" title="Progressive .NET Tutorials">here</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2011/08/02/progressive-net-tutorial/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WS-REST 2011 Submission Deadline Extended to 10 February 2011</title>
		<link>http://iansrobinson.com/2011/01/28/ws-rest-2011-submission-deadline-extended-to-10-february-2011/</link>
		<comments>http://iansrobinson.com/2011/01/28/ws-rest-2011-submission-deadline-extended-to-10-february-2011/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 15:28:42 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=318</guid>
		<description><![CDATA[The deadline for submitting papers for WS-REST 2011 has been extended to 10 February 2011. If you haven&#8217;t already submitted a paper, now&#8217;s your chance. Topics Applications of the REST architectural style to novel domains Design Patterns and Anti-Patterns for RESTful services RESTful service composition Inverted REST (REST for push events) Integration of Pub/Sub with [...]]]></description>
			<content:encoded><![CDATA[<p>The deadline for submitting papers for <a href="http://ws-rest.org/2011/">WS-REST 2011</a> has been extended to <strong>10 February 2011</strong>. If you haven&#8217;t already submitted a paper, now&#8217;s your chance.</p> 
<h2>Topics</h2>
<ul>
<li>Applications of the REST architectural style to novel domains</li>
<li>Design Patterns and Anti-Patterns for RESTful services</li>
<li>RESTful service composition</li>
<li>Inverted REST (REST for push events)</li>
<li>Integration of Pub/Sub with REST</li>

<li>Performance and QoS Evaluations of RESTful services</li>
<li>REST compliant transaction models</li>
<li>Mashups</li>
<li>Frameworks and toolkits for RESTful service implementations</li>
<li>Frameworks and toolkits for RESTful service consumption</li>
<li>Modeling RESTful services</li>
<li>Resource Design and Granularity</li>
<li>Evolution of RESTful services</li>
<li>Versioning and Extension of REST APIs</li>

<li>HTTP extensions and replacements</li>
<li>REST compliant protocols beyond HTTP</li>
<li>Multi-Protocol REST (REST architectures across protocols)</li>
</ul>

<p>Papers must be submitted electronically in PDF format. Templates are available <a href="submission">here</a></p>
<p>Easychair page: <a href="http://www.easychair.org/conferences/?conf=wsrest2011">http://www.easychair.org/conferences/?conf=wsrest2011</a></p>

<h2>Contact</h2>
<p>WS-REST Web site: <a href="http://ws-rest.org/2011/">http://ws-rest.org/2011/</a><br />

WS-REST Twitter: <a href="http://twitter.com/wsrest2011" title="http://twitter.com/wsrest2011">http://twitter.com/wsrest2011</a><br />
WS-REST Email: <a href="mailto:chairs@ws-rest.org">chairs@ws-rest.org</a>
</p>

]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2011/01/28/ws-rest-2011-submission-deadline-extended-to-10-february-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Forthcoming Events</title>
		<link>http://iansrobinson.com/2011/01/23/forthcoming-events/</link>
		<comments>http://iansrobinson.com/2011/01/23/forthcoming-events/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 13:40:57 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=309</guid>
		<description><![CDATA[I&#8217;m going to be giving variations on my RESTful domain applications talk at JFokus in Stockholm, Feb 14-16, and JAX London, April 11-13. Come along to find out all about domain application protocols: what they are, why they&#8217;re important (and implicit in almost every application, irrespective of whether we&#8217;ve given them any thought or not), [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to be giving variations on my RESTful domain applications talk at <a href="http://www.jfokus.se/jfokus/?lang=en&#038;" title="JFokus" target="_blank">JFokus</a>  in Stockholm, Feb 14-16, and <a href="http://jaxlondon.com/" title="JAX London" target="_blank">JAX London</a>, April 11-13. Come along to find out all about domain application protocols: what they are, why they&#8217;re important (and implicit in almost every application, irrespective of whether we&#8217;ve given them any thought or not), and how we can implement them in a RESTful application without having to import a specific process description into the client part of the app.</p>

<p>I&#8217;ll be building on some of this material at <a href="http://qconlondon.com/london-2011/" title="QCon London" target="_blank">QCon London</a> (March 9-11), but there I&#8217;ll go deeper into some implementation specifics, with examples drawn from some recent work with Microsoft&#8217;s new <a href="http://wcf.codeplex.com/" title="WCF on Codeplex" target="_blank">WCF HTTP</a> libraries. (The <a href="http://qconlondon.com/london-2011/tracks/show_track.jsp?trackOID=420" title="Building Systems With REST " target="_blank">QCon REST track</a> has a particularly stunning lineup.) Also as part of QCon London, Jim Webber and I will be running our day-long <a href="http://qconlondon.com/london-2011/presentation/REST+in+Practice+-+A+Tutorial+on+Web-based+Distributed+Systems" title="REST in Practice - A Tutorial on Web-based Distributed Systems" target="_blank">REST in Practice</a> tutorial.</p> 

<p>You can register for QCon <a href="https://secure.trifork.com/london-2011/registration/" title="QCon registration" target="_blank">here</a>. When doing so, use the <strong>ROBI100</strong> promotional code. This gives you a <strong>£100</strong> discount; at the same time, QCon will <strong>donate £100</strong> to the <a href="http://www.crisis.org.uk/index.php" title="Crisis Charity" target="_blank">Crisis Charity</a> in London (the national charity for single homeless people).</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2011/01/23/forthcoming-events/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WS-REST 2011 Call for Papers</title>
		<link>http://iansrobinson.com/2011/01/07/ws-rest-2011-call-for-papers/</link>
		<comments>http://iansrobinson.com/2011/01/07/ws-rest-2011-call-for-papers/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 09:49:30 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=303</guid>
		<description><![CDATA[The Second International Workshop on RESTful Design (WS-REST 2011) aims to provide a forum for discussion and dissemination of research on the emerging resource-oriented style of Web service design. Background Over the past few years, several discussions between advocates of the two major architectural styles for designing and implementing Web services (the RPC/ESB-oriented approach and [...]]]></description>
			<content:encoded><![CDATA[<p>The Second International Workshop on RESTful Design (WS-REST 2011) aims to provide a forum for discussion and dissemination of research on the emerging resource-oriented style of Web service design.</p>
<h2>Background</h2>
<p>Over the past few years, several discussions between advocates of the two major architectural styles for designing and implementing Web services (the RPC/ESB-oriented approach and the resource-oriented approach) have been mainly held outside of the research and academic community, within dedicated mailing lists, forums and practitioner communities. The RESTful approach to Web services has also received a significant amount of attention from industry as indicated by the numerous technical books being published on the topic.</p>

<p>This second edition of WS-REST, co-located with the <a href="http://wwwconference.org/www2011/">WWW2011 conference</a>, aims at providing an academic forum for discussing current emerging research topics centered around the application of REST, as well as advanced application scenarios for building large scale distributed systems.</p>
<p>In addition to presentations on novel applications of RESTful Web services technologies, the workshop program will also include discussions on the limits of the applicability of the REST architectural style, as well as recent advances in research that aim at tackling new problems that may require to extend the basic REST architectural style. The organizers are seeking novel and original, high quality paper submissions on research contributions focusing on the following topics:</p>
<ul>
<li>Applications of the REST architectural style to novel domains</li>
<li>Design Patterns and Anti-Patterns for RESTful services</li>
<li>RESTful service composition</li>
<li>Inverted REST (REST for push events)</li>
<li>Integration of Pub/Sub with REST</li>

<li>Performance and QoS Evaluations of RESTful services</li>
<li>REST compliant transaction models</li>
<li>Mashups</li>
<li>Frameworks and toolkits for RESTful service implementations</li>
<li>Frameworks and toolkits for RESTful service consumption</li>
<li>Modeling RESTful services</li>
<li>Resource Design and Granularity</li>
<li>Evolution of RESTful services</li>
<li>Versioning and Extension of REST APIs</li>

<li>HTTP extensions and replacements</li>
<li>REST compliant protocols beyond HTTP</li>
<li>Multi-Protocol REST (REST architectures across protocols)</li>
</ul>
<p>All workshop papers are peer-reviewed and accepted papers will be published as part of the ACM Digital Library. Two kinds of contributions are sought: short position papers (not to exceed 4 pages in ACM style format) describing particular challenges or experiences relevant to the scope of the workshop, and full research papers (not to exceed 8 pages in the ACM style format) describing novel solutions to relevant problems. Technology demonstrations are particularly welcome, and we encourage authors to focus on <q>lessons learned</q> rather than describing an implementation.</p>
<p>Papers must be submitted electronically in PDF format. Templates are available <a href="submission">here</a></p>
<p>Easychair page: <a href="http://www.easychair.org/conferences/?conf=wsrest2011">http://www.easychair.org/conferences/?conf=wsrest2011</a>

		</p>
<h2>Important Dates</h2>
<ul>
<li>Submission deadline: January <b>31</b>, 2011, 23.59 local time in San Francisco, CA</li>
<li>Notification of acceptance: February 15, 2011</li>
<li>Camera-ready versions of accepted papers: February 28, 2011</li>
<li>WS-REST 2011 Workshop: March 28, 2011</li>
</ul>
<h2>Program Committee Chairs</h2>

<ul>
<li>
				<a href="http://www.pautasso.info/">Cesare Pautasso</a>, Faculty of Informatics, USI Lugano, Switzerland</li>
<li>
				<a href="http://dret.net/netdret/">Erik Wilde</a>, School of Information, UC Berkeley, USA</li>
<li>
				<a href="http://dcc.puc.cl/gente/usuarios/ralarcon">Rosa Alarcon</a>, Computer Science Department, Pontificia Universidad de Chile, Chile</li>
</ul>

<h2>Program Committee</h2>
<ul>
<li>Jan Algermissen, Nord Software Consulting, Germany</li>
<li>Subbu Allamaraju, Yahoo Inc., USA</li>
<li>Mike Amudsen, USA</li>
<li>
				<a href="http://soundadvice.id.au/blog/">Benjamin Carlyle</a>, Australia</li>
<li>
				<a href="http://stucharlton.com/blog">Stuart Charlton</a>, Canada</li>

<li><a href="http://duncan-cragg.org/blog/">Duncan Cragg</a>, UK</li>
<li>
				<a href="http://bitworking.org">Joe Gregorio</a>, Google, USA</li>
<li>
				<a href="http://sw-app.org/about.html">Michael Hausenblas</a>, DERI, Ireland</li>
<li>Ralph Johnson, University of Illinois, USA</li>
<li>Rohit Khare, 4K Associates, USA</li>

<li>Yves Lafon, W3C, USA</li>
<li>
				<a href="http://www.iaas.uni-stuttgart.de/institut/mitarbeiter/leymann/indexE.php">Frank Leymann</a>, University of Stuttgart, Germany</li>
<li>
				<a href="http://iansrobinson.com/">Ian Robinson</a>, Thoughtworks, UK</li>
<li>
				<a href="http://www.innoq.com/blog/st/">Stefan Tilkov</a>, innoQ, Germany</li>

<li>
				<a href="http://steve.vinoski.net/">Steve Vinoski</a>, Verivue, USA</li>
<li><a href="http://jim.webber.name/">Jim Webber</a>, NEO4J </li>
<li>
				<a href="http://www.zurich.ibm.com/~olz/">Olaf Zimmermann</a>, IBM Zurich Research Lab, Switzerland</li>
</ul>
<h2>Contact</h2>
<p>WS-REST Web site: <a href="http://ws-rest.org/2011/">http://ws-rest.org/2011/</a><br />

WS-REST Twitter: <a href="http://twitter.com/wsrest2011" title="http://twitter.com/wsrest2011">http://twitter.com/wsrest2011</a><br />
WS-REST Email: <a href="mailto:chairs@ws-rest.org">chairs@ws-rest.org</a>
		</p>

]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2011/01/07/ws-rest-2011-call-for-papers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTful Domain Application Protocols</title>
		<link>http://iansrobinson.com/2010/10/15/restful-domain-application-protocols/</link>
		<comments>http://iansrobinson.com/2010/10/15/restful-domain-application-protocols/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 15:46:42 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[REST in Practice]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=281</guid>
		<description><![CDATA[Last week I gave a TechTalk on RESTful domain application protocols at the Microsoft Development Center in Copenhagen. The video for the talk is now online at Channel 9. My thanks to Microsoft for their invite and hospitality, and to the audience members for their attention and questions. If you want to learn more about [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave a TechTalk on RESTful domain application protocols at the Microsoft Development Center in Copenhagen. The video for the talk is now online at <a href="http://channel9.msdn.com/posts/TechTalk-RESTful-Application-Protocols-From-Design-to-Implementation" title="RESTful Application Protocols, From Design to Implementation" target="_blank">Channel 9</a>.</p>

<p>My thanks to Microsoft for their invite and hospitality, and to the audience members for their attention and questions.</p>

<p>If you want to learn more about domain application protocols, hypermedia, event-driven systems with Atom, and security on the wild web &#8211; and you&#8217;re in London next week &#8211; why not sign up for a day-long REST tutorial being run by me and <a href="http://jim.webber.name" title="Jim Webber's blog" target="_blank">Jim Webber</a>? We&#8217;re at <a href="http://www.software-architect.co.uk/sessions/postworkshops.asp">Software Architect 2010</a> on Friday, 22nd October: you can register for the conference and tutorial <a title="Register for Software Architect 2010" target="_blank" href="http://www.software-architect.co.uk/registration/">here</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/10/15/restful-domain-application-protocols/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>REST in Practice has arrived</title>
		<link>http://iansrobinson.com/2010/09/22/rest-in-practice-has-arrived/</link>
		<comments>http://iansrobinson.com/2010/09/22/rest-in-practice-has-arrived/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 14:54:45 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[REST]]></category>
		<category><![CDATA[REST in Practice]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=257</guid>
		<description><![CDATA[Today I received a lovely present from O&#8217;Reilly: a copy of REST in Practice, new off the press. A big, big thanks to Jim and Savas, who asked me to write with them shortly after they&#8217;d started out on the book; I&#8217;m enormously proud of what we&#8217;ve achieved together. Thanks too to all our reviewers, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I received a lovely present from O&#8217;Reilly: a copy of <a href="http://restinpractice.com" title="REST in Practice" target="_blank"><em>REST in Practice</em></a>, new off the press.</p>
<p>A big, big thanks to <a href="http://jim.webber.name/" title="Jim Webber's blog" target="_blank">Jim</a> and <a href="http://savas.me/" title="Savas Parastatidis' blog" target="_blank">Savas</a>, who asked me to write with them shortly after they&#8217;d started out on the book; I&#8217;m enormously proud of what we&#8217;ve achieved together. Thanks too to all our reviewers, and to the wonderful people at O&#8217;Reilly who&#8217;ve guided us through the production process and made of our words a fine book &#8211; names on the book&#8217;s <a href="http://restinpractice.com/acknowledgements.html" title="REST in Practice acknowledgements" target="_blank">site</a>. And finally, a heartfelt thanks to Lottie, Tiger and Elliot, who didn&#8217;t need a book to tell them how to use links, but who let me write one anyway.</p>

<p>The book is available for pre-order on Amazon (<a href="http://www.amazon.co.uk/REST-Practice-Hypermedia-Systems-Architecture/dp/0596805829/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1271772697&#038;sr=1-1" title="REST in Practice on Amazon UK" target="_blank">UK</a> and <a href="http://www.amazon.com/gp/product/0596805829/ref=s9_simh_gw_p14_i1?pf_rd_m=ATVPDKIKX0DER&#038;pf_rd_s=center-2&#038;pf_rd_r=1FJEX5ASH5KQ29FTW4J1&#038;pf_rd_t=101&#038;pf_rd_p=470938631&#038;pf_rd_i=507846" title="REST in Practice on Amazon US" target="_blank">US</a>), but if you want the chance to win a free copy, <a href="http://savas.me/blog/1087" title="How to get a free copy of 'REST in Practice'" target="_blank">Savas</a> has all the details.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/09/22/rest-in-practice-has-arrived/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>REST in Practice Tutorial, London, Oct 22nd</title>
		<link>http://iansrobinson.com/2010/09/21/rest-in-practice-tutorial-london-oct-22nd/</link>
		<comments>http://iansrobinson.com/2010/09/21/rest-in-practice-tutorial-london-oct-22nd/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 09:58:48 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[REST in Practice]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=269</guid>
		<description><![CDATA[Jim Webber and I will be running a day-long REST tutorial at Software Architect 2010, in London on Friday, 22nd October. You can register for the conference and tutorial here. Early bird discounts apply throughout the remainder of this week. The tutorial agenda closely follows the structure of REST in Practice, which hits the shelves [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jim.webber.name" title="Jim Webber's blog" target="_blank">Jim Webber</a> and I will be running a day-long REST tutorial at <a href="http://www.software-architect.co.uk/sessions/postworkshops.asp">Software Architect 2010</a>, in London on Friday, 22nd October. You can register for the conference and tutorial <a title="Register for Software Architect 2010" target="_blank" href="http://www.software-architect.co.uk/registration/">here</a>.</p>
<p>Early bird discounts apply throughout the remainder of this week.</p>

<p>The tutorial agenda closely follows the structure of <a title="REST in Practice" target="_blank" href="http://restinpractice.com"><em>REST in Practice</em></a>, which hits the shelves later this week:</p>
<ul>
<li>Introduction and Motivation</li>
<li>The Web Architecture</li>
<li>Simple Web Integration including POX and URI tunnelling</li>
<li>CRUD Services using URI templates and HTTP</li>
<li>Semantics using Microformats and RDF</li>
<li>Hypermedia and the REST architectural style</li>
<li>Scalability and how a text-based client-server polling protocol outperforms everything else!</li>
<li>ATOM and ATOMPub for event-driven and pub/sub applications</li>
<li>Security</li>
<li>Conclusions and further thoughts</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/09/21/rest-in-practice-tutorial-london-oct-22nd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Counterintuitive Web</title>
		<link>http://iansrobinson.com/2010/09/18/counterintuitive-web/</link>
		<comments>http://iansrobinson.com/2010/09/18/counterintuitive-web/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 09:48:57 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[REST]]></category>
		<category><![CDATA[REST in Practice]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=261</guid>
		<description><![CDATA[There are plenty of practical examples of applying REST to &#8220;enterprise&#8221; scenarios throughout REST in Practice, and lots of code samples. But above all the detail, three big ideas emerged. These form the basis of what I call the counterintuitive web: On the Web, clients guarantee the integrity of a sequence of actions. Mainstream SOA [...]]]></description>
			<content:encoded><![CDATA[<p>There are plenty of practical examples of applying REST to &#8220;enterprise&#8221; scenarios throughout <a href="http://restinpractice.com" title="REST in Practice" target="_blank"><em>REST in Practice</em></a>, and lots of code samples. But above all the detail, three big ideas emerged. These form the basis of what I call <em>the counterintuitive web</em>:

<ul>
<li>On the Web, clients guarantee the integrity of a sequence of actions. Mainstream SOA and its enterprise integration forebears make services and middleware responsible for the integrity of a sequence of actions. The Web succeeds at scale because it farms these responsibilities out to its client base.</li>
<li>Resources are best thought of in terms of what they do, rather than what they are. That way, we don&#8217;t simply CRUD on entities. In a hypermedia system, resources adapt server-based capabilities so that hypermedia clients (i.e., clients that use HTTP&#8217;s uniform interface to drive an application forwards) can consume them.</li>
<li>There are domain application protocols everywhere &#8211; it&#8217;s just that many of them are so trivial we don&#8217;t notice them or care to inspect them in any detail. CRUD is a protocol, but a relatively uninteresting one. Sometimes it&#8217;s worth understanding the underlying domain application protocol; sometimes you just need the uniform interface.</li>
</ul>

<p>All pretty abstract points, perhaps &#8211; but you&#8217;ll see what I mean if you read the book.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/09/18/counterintuitive-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using Typed Links to Forms</title>
		<link>http://iansrobinson.com/2010/09/02/using-typed-links-to-forms/</link>
		<comments>http://iansrobinson.com/2010/09/02/using-typed-links-to-forms/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 14:22:39 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[REST]]></category>
		<category><![CDATA[REST in Practice]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=247</guid>
		<description><![CDATA[Nowadays, I tend to use a typed link leading to a form, rather than a heavily typed link alone (I&#8217;ll explain what I mean by heavily typed link shortly), to advertise unsafe operations and/or requests that require an entity body. Here&#8217;s an example of a typed link: //Request GET /shop HTTP/1.1 Host: restbucks.com Accept: application/vnd.restbucks+xml [...]]]></description>
			<content:encoded><![CDATA[<p>Nowadays, I tend to use a typed link leading to a form, rather than a heavily typed link alone (I&#8217;ll explain what I mean by heavily typed link shortly), to advertise unsafe operations and/or requests that require an entity body. Here&#8217;s an example of a typed link:</p>

<pre><code>//Request
GET /shop HTTP/1.1
Host: restbucks.com
Accept: application/vnd.restbucks+xml

//Response
HTTP/1.1 200 OK
Date: Mon, 26 Jul 2010 10:00:00 GMT
Cache-Control: public, max-age=86400
Content-Type: application/vnd.restbucks+xml
Content-Length: ...

&lt;shop xmlns=&quot;http://schemas.restbucks.com/shop&quot;&gt;
&nbsp;&nbsp;&lt;link rel=&quot;http://relations.restbucks.com/rfq&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/request-for-quote&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/shop&gt;
</code></pre>

<p>The link here is typed with the link relation value <em>http://relations.restbucks.com/rfq</em>, which indicates that the link points to a resource where a request for a quote can be submitted. Following the link, the client retrieves a form:</p>

<pre><code>//Request
GET /request-for-quote HTTP/1.1
Host: restbucks.com
Accept: application/vnd.restbucks+xml

//Response
HTTP/1.1 200 OK
Date: Mon, 26 Jul 2010 10:00:05 GMT
Cache-Control: public, max-age=86400
Content-Type: application/vnd.restbucks+xml
Content-Length: ...

&lt;model xmlns=&quot;http://www.w3.org/2002/xforms&quot;
&nbsp;&nbsp;schema=&quot;http://schemas.restbucks.com/rfq.xsd&quot;&gt;
&nbsp;&nbsp;&lt;submission
&nbsp;&nbsp;&nbsp;&nbsp;resource=&quot;http://restbucks.com/quotes&quot; 
&nbsp;&nbsp;&nbsp;&nbsp;method=&quot;post&quot; 
&nbsp;&nbsp;&nbsp;&nbsp;mediatype=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/model&gt;
</code></pre>

<p>The response entity body comprises an <a href="http://www.w3.org/TR/xforms11/" title="XForms 1.1" target="_blank">XForms</a> form model. (Our custom media type definition for <code>application/vnd.restbucks+xml</code> says that one of the things a client can expect to receive in a response is an XForms form model.) The form&#8217;s <code>&lt;submission&gt;</code> element includes several pieces of control data: it indicates which verb to use when submitting the form (<code>POST</code>), where to submit the form (<em>http://restbucks.com/quotes</em>), and which content or media type to use when submitting the form (<em>application/vnd.restbucks+xml</em>). Because the definition of our custom media type includes more than one XML schema (much as the Atom specification defines two schemas, one for feeds and one for entries), the form&#8217;s control data needs to further clarify what <em>/quotes</em> expects to receive in a <code>POST</code> request. To clarify which schema the <code>POST</code> request body should adhere to, the <code>&lt;model&gt;</code> element&#8217;s <code>schema</code> attribute references the <em>rfq.xsd</em> schema.</p>

<p>Here, then, we have all the information a client needs to construct and submit a valid request to the <em>/quotes</em> resource. And all without any fields for the client to fill out.</p>

<h2>Heavily typed links</h2>

<p>A heavily typed link is one where the link relation describes not only the relationship to the linked resource, but also the HTTP idioms &#8211; the control data &#8211; necessary to manipulate that resource.</p>

<p>Using a heavily typed link our shop could link directly to the <em>/quotes</em> resource, instead of to a form:</p>

<pre><code>&lt;shop xmlns=&quot;http://schemas.restbucks.com/shop&quot;&gt;
&nbsp;&nbsp;&lt;link rel=&quot;http://relations.restbucks.com/quotes&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/quotes&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/shop&gt;
</code></pre>

<p>Here, the definition of the link relation <em>http://relations.restbucks.com/quotes</em> might be something like: &#8220;Indicates a collection of quotes. To request a quote, <code>POST</code> a <code>&lt;request-for-quote&gt;</code> with a <code>Content-Type</code> header of <code>application/vnd.restbucks+xml</code> to the linked resource.&#8221;</p>

<p>That&#8217;s a perfectly respectable way of using links and link relations; in fact, it&#8217;s the strategy we employ in <a href="http://restinpractice.com" title="REST in Practice" target="_blank"><em>REST in Practice</em></a>. But it can have its downsides. Most importantly, it can increase the coupling between the client and any resources that employ link relations.</p> 

<p>Make no mistake: link relation semantics comprise out-of-band knowledge. There&#8217;s no magic here: link relations introduce a degree of coupling between a client and any server-governed resources that adopt them. The trick is to keep this coupling as low as possible. By putting control data in the link relation definition, we perhaps introduce more coupling than is strictly necessary.</p>

<p>Out-of-band data is less visible, and more difficult and more costly to change, than data that is inlined in the message. Whilst the control data may not change all that often, changes can and do sometimes happen; inlining the data allows these changes to be propagated to clients sooner rather than later. Control data produced at the time the response is generated is generally more recent than control data defined through some out-of-band mechanism.</p>

<p>Using lightly typed links helps separate semantics from control data. A &#8220;light&#8221; link relation indicates <em>what</em> the linked resource means in the context of the current representation &#8211; that&#8217;s all. This helps mitigate against a second, somewhat more subtle, downside of adding control data to link relations: the tendency to introduce <em>action</em> semantics. It&#8217;s no great step to shorten the link relation value above to <em>http://relations.restbucks.com/quote</em>, and to rewrite its semantic to read &#8220;Indicates an opportunity to request a quote by <code>POST</code>ing a <code>&lt;request-for-quote&gt;</code> with a <code>Content-Type</code> header of <code>application/vnd.restbucks+xml</code> to the linked resource.&#8221; At this point, our link has effectively become an operation. The typed-link-to-form strategy helps us concentrate on describing what a linked resource <em>is</em>, rather than what a link <em>does</em>. Link relations do not necessarily imply action semantics, but they can very easily be made to do so.</p>

<p>(Note: when adding links to representations, I still prefer to use a <code>&lt;link rel=&quot;...&quot; href=&quot;...&quot;&gt;</code> construct, or something similar, rather than <code>&lt;order-form href=&quot;...&quot;&gt;</code>. The reason for this is that elements such as <code>&lt;link&gt;</code> separate link syntax from semantic context, as explained <a href="http://iansrobinson.com/2009/07/16/how-do-you-link/" title="How Do You Link?" target="_blank">here</a>; and this is a good thing, because what a link ought look like &#8211; its syntax &#8211; changes far less than what a link might mean in a particular context. By separating these concerns, we make it easier to evolve a distributed application.)</p>

<p>Interestingly, on the wire, the result of submitting an XForm form looks exactly the same as if we&#8217;d simply <code>POST</code>ed a <code>&lt;request-for-quote&gt;</code> directly to <em>/quotes</em>:</p>

<pre><code>//Request
POST /quotes HTTP/1.1
Host: restbucks.com
Content-Type: application/vnd.restbucks+xml
Content-Length: ...

&lt;request-for-quote xmlns=&quot;http://schemas.restbucks.com/rfq&quot;&gt;
&nbsp;&nbsp;&lt;items&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Costa Rica Tarrazu&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Guatemala Elephant Beans&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&lt;/items&gt;
&lt;/request-for-quote&gt;
</code></pre>

<p>Knowing this, we could always add both a lightly typed link to a form <em>and</em> a heavily typed link to our shop representation:</p>

<pre><code>&lt;shop xmlns=&quot;http://schemas.restbucks.com/shop&quot;&gt;
&nbsp;&nbsp;&lt;link rel=&quot;http://relations.restbucks.com/rfq&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/request-for-quote&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&nbsp;&nbsp;&lt;link rel=&quot;http://relations.restbucks.com/quotes&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/quotes&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/shop&gt;
</code></pre>

<p>Two paths to the same result. I don&#8217;t recommend doing this: I include simply to highlight how a linked form achieves the exact same result, but with the added beenfit of having inlined control data.</p>

<h2>Pre-filled forms/self-describing requests</h2>

<p>Here&#8217;s another example of using a typed link to a form:<p>
  
<pre><code>//Request
GET /quotes/1234
Host: restbucks.com
Accept: application/vnd.restbucks+xml

//Response
HTTP/1.1 200 OK
Cache-Control: public
Date: Mon, 26 Jul 2010 10:01:00 GMT
Expires: Mon, 02 Aug 2010 10:01:00 GMT
Content-Type: application/vnd.restbucks+xml
Content-Length: ...

&lt;quote xmlns=&quot;http://schemas.restbucks.com/quote&quot;&gt;
&nbsp;&nbsp;&lt;items&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Costa Rica Tarrazu&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;GBP&quot;&gt;4.40&lt;/price&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Guatemala Elephant Beans&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;GBP&quot;&gt;5.30&lt;/price&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&lt;/items&gt;
&nbsp;&nbsp;&lt;link rel=&quot;http://relations.restbucks.com/order-form&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/order-forms/1234&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/quote&gt;
</code></pre>
  
<p>The link relation <em>http://relations.restbucks.com/order-form</em> indicates that the linked resource is something that allows an order to be submitted. Following this link, the client retrieves an order form:<p>

<pre><code>//Request
GET /order-forms/1234
Host: restbucks.com
Accept: application/vnd.restbucks+xml

//Response
HTTP/1.1 200 OK
Cache-Control: public
Date: Mon, 26 Jul 2010 10:01:05 GMT
Expires: Mon, 02 Aug 2010 10:01:00 GMT
Content-Type: application/vnd.restbucks+xml
Content-Length: ...
Content-Location: http://restbucks.com/quotes/1234

&lt;model xmlns=&quot;http://www.w3.org/2002/xforms&quot;&gt;
&nbsp;&nbsp;&lt;instance&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;quote xmlns=&quot;http://schemas.restbucks.com/quote&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;items&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Costa Rica Tarrazu&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;GBP&quot;&gt;4.40&lt;/price&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Guatemala Elephant Beans&lt;/description&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;250g&lt;/amount&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;GBP&quot;&gt;5.30&lt;/price&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/items&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rel=&quot;self&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;href=&quot;http://restbucks.com/quotes/1234&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;application/vnd.restbucks+xml&quot;/&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/quote&gt;
&nbsp;&nbsp;&lt;/instance&gt;
&nbsp;&nbsp;&lt;submission
&nbsp;&nbsp;&nbsp;&nbsp;resource=&quot;http://restbucks.com/orders&quot; 
&nbsp;&nbsp;&nbsp;&nbsp;method=&quot;post&quot; 
&nbsp;&nbsp;&nbsp;&nbsp;mediatype=&quot;application/vnd.restbucks+xml&quot;/&gt;
&lt;/model&gt;
</code></pre>

<p>Once again, I&#8217;ve used an XForms form model, but this time I&#8217;ve pre-filled it with an <code>&lt;instance&gt;</code> element. Even so, there are no form fields to fill in; all the client needs to do is operate the form according to the inlined control data.</p>

<p>The interesting thing here is that <em>/order-forms/1234</em> simply returns a different representation of the quote resource identified by <em>/quotes/1234</em> (the response indicates as much in its <code>Content-Location</code> header). By supplying a forms-based representation of the quote, we inline all the information necessary to submit an order to an order processing engine. The client doesn&#8217;t need to compose an entity body; it simply needs to operate the form according to its control data. This results in a self-describing message being sent to <em>/orders</em>.<p>

<p>(In a real-world application I&#8217;d likely include a signature in the form body. This signature would guarantee that the client hasn&#8217;t tampered with the form contents prior to submitting the form to the order processing engine. The effectiveness of the signature depends on an out-of-band trust relationship having been established between the quoting engine and the order processing engine.)</p>

<p>The result of first following the link to the form, and then submitting the form, is to transition the overall state of the distributed application from <em>Quote Requested</em> to <em>Order Placed</em>, as illustrated in the following diagram:</p>

<p><img src="http://iansrobinson.com/wp-content/uploads/2010/09/application-state-transition.png" alt="Application state transition" title="Application state transition" width="450" height="252" class="size-full wp-image-96" /></p>

<p>Every request-response pair transforms application state. Retrieving the form <em>enriches</em> the client&#8217;s understanding of the current application state; that is, it opens up new opportunities for interacting with other resources. <code>POST</code>ing the form causes the application state to <em>transition</em> from <em>Quote Requested</em> to <em>Order Placed</em>.</p>

<p>The fact that the overall state of the application has changed is of no consequence to the server resources involved; the application state model is nowhere baked into the server resources. As far as the quote resource is concerned, it has simply been asked to surface a forms-based representation of itself. As far as the orders resource is concerned, it has simply created a new, subordinate order resource. This change in application state is, however, important to the client.</p>

<h2>Summary</h2>

<p>Understand the tradeoffs between inlining and putting control data in an out-of-band mechanism. Use the right controls for the job; understand the many different hypermedia capabilities at your disposal. The best resource for this is Mike Amundsen&#8217;s <a href="http://www.amundsen.com/hypermedia/" title="Hypermedia Types" target="_blank">in-depth study</a> of the hypermedia capabilities of many different kinds of hypermedia control. Recently, Andrew Wahbe started examining the need for <a href="http://linkednotbound.net/2010/08/25/m2m-hypermedia/" title="" target="_blank">machine-to-machine hypermedia</a>, and the differences between controls for machines and controls for humans. Watch his blog for further discussion.</p>

<p>My understanding of hypermedia controls has been heavily influenced by my experience of the human web, where links and forms predominate. But when we talk about forms in a machine-to-machine context, it&#8217;s not the form field elements that are of interest, it&#8217;s the control data elements. These control data elements help program the client on the fly. The term &#8220;form&#8221; as it applies in a machine-to-machine context is likely an inappropriate metaphor; nonetheless, it does emphasize the fact that unsafe requests &#8211; and requests that have an entity body &#8211; require different hypermedia capabilities from simple <code>GET</code>s.</p>

<p>Because in the past I&#8217;ve tended to think form fields are redundant in machine-to-machine scenarios, I&#8217;ve avoided using forms at all, and have instead overloaded link relations with control data. But link relations are not a &#8220;get out of jail free&#8221; card. In overloading link relations, we add unnecessary coupling.</p>

<p>Coupling, of course, is not an all-or-nothing affair. There are degrees of coupling. We choose to accept some coupling because of the benefits it brings. But that doesn&#8217;t mean we should accept more coupling than is necessary; doing so can only inhibit our ability to evolve a distributed application.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/09/02/using-typed-links-to-forms/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>REST in Practice Tutorials, Sept-Oct</title>
		<link>http://iansrobinson.com/2010/08/27/rest-in-practice-tutorials-sept-oct/</link>
		<comments>http://iansrobinson.com/2010/08/27/rest-in-practice-tutorials-sept-oct/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 13:34:10 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=236</guid>
		<description><![CDATA[Over the next couple of months, Jim Webber and I will be running several day-long REST tutorials: Following JavaZone, we&#8217;ll be at Oslo&#8217;s Henning Solberg on Friday, 10th September. You can register for JavaZone here, and for the tutorial here. At the beginning of October, we&#8217;re at the wonderful JAOO Aarhus, with the tutorial running [...]]]></description>
			<content:encoded><![CDATA[<p>Over the next couple of months, <a href="http://jim.webber.name" title="Jim Webber's blog" target="_blank">Jim Webber</a> and I will be running several day-long REST tutorials:</p>

<ul>
<li>Following <a title="JavaZone" target="_blank" href="http://jz10.java.no/">JavaZone</a>, we&#8217;ll be at Oslo&#8217;s <a title="REST in Practice" target="_blank" href="http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&#038;mid=1535&#038;id=858735">Henning Solberg</a> on Friday, 10th September. You can register for JavaZone <a href="http://shop.java.no/" title="Register for JavaZone" target="_blank">here</a>, and for the tutorial <a title="Register for REST in Practice, Henning Solberg" target="_blank" href="http://www.programutvikling.no/kurs_bestill.aspx?mid_1=1354&#038;step=2&#038;mid=1549&#038;course=858750&#038;type=858735&#038;lang=no">here</a>.</li>
<li>At the beginning of October, we&#8217;re at the wonderful JAOO Aarhus, with the tutorial running throughout the day on Friday 8th October. Register <a title="Register for JAOO" target="_blank" href="https://secure.trifork.com/aarhus-2010/registration/">here</a>, with a 20% discount if you use the <em>JAOOspeakerfollower</em> promo code.</li>
<li>Closer to home, we&#8217;ll be at <a href="http://www.software-architect.co.uk/sessions/postworkshops.asp">Software Architect 2010</a> in London on Friday, 22nd October. You can register for the conference and tutorial <a title="Register for Software Architect 2010" target="_blank" href="http://www.software-architect.co.uk/registration/">here</a>.</li>
</ul>

<p>The tutorial agenda closely follows the structure of <a title="REST in Practice" target="_blank" href="http://restinpractice.com"><em>REST in Practice</em></a>, which hits the shelves on Sept 24th:</p>

<ul>
<li>The Web Architecture: HTTP and URIs</li>
<li>The Richardson Maturity Model</li>
<li>CRUD Services using URI templates and HTTP</li>
<li>Hypermedia and the REST architectural style</li>
<li>Implementing domain application protocols</li>
<li>Atom- and AtomPub-based event-driven systems</li>
<li>Scalability through caching</li>
<li>Semantics using Microformats and RDF</li>
<li>Security and the -ilities</li>
</ul>

<p>With ThoughtWorks recently having opened an office in Germany, I&#8217;ll also be presenting at <a href="http://www.herbstcampus.de/" target="_blank" title="Herbstcampus">Herbstcampus</a> in Nuremberg, 12-15th October.</p>

<p>And finally, if your want to enjoy some <em>REST in Practice</em> from the comfort of your own office (or home), there&#8217;s still time to sign up for the ThoughtWorks&#8217; Webinar, <a href="http://thoughtworker.com/events/master-class-online-designing-and-implementing-restful-application-protocols" target="_blank" title="Master Class Online - Designing and Implementing RESTful Application Protocols"><em>Designing and Implementing RESTful Application Protocols</em></a>, which takes place on Wednesday, 1st September, at 6.30pm IST (that&#8217;s, er, sometime in the afternoon GMT).</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/08/27/rest-in-practice-tutorials-sept-oct/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

