<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for The Amiable API</title>
	<atom:link href="http://theamiableapi.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://theamiableapi.com</link>
	<description>On developer-friendly API design</description>
	<lastBuildDate>Wed, 02 Jan 2013 19:41:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on 2.1.8. Favor abstract classes over interfaces for decoupling API from implementation by Ferenc Mihaly</title>
		<link>http://theamiableapi.com/2012/02/12/example2/#comment-622</link>
		<dc:creator><![CDATA[Ferenc Mihaly]]></dc:creator>
		<pubDate>Wed, 02 Jan 2013 19:41:53 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=717#comment-622</guid>
		<description><![CDATA[You are right. As long as you are using interfaces in method signatures, you either &quot;check or trust&quot;. If the clients are not expected to implement the interface, then you can point this out in the documentation, include the appropriate warnings and trust instead of check.]]></description>
		<content:encoded><![CDATA[<p>You are right. As long as you are using interfaces in method signatures, you either &#8220;check or trust&#8221;. If the clients are not expected to implement the interface, then you can point this out in the documentation, include the appropriate warnings and trust instead of check.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on 2.1.8. Favor abstract classes over interfaces for decoupling API from implementation by Stefan</title>
		<link>http://theamiableapi.com/2012/02/12/example2/#comment-620</link>
		<dc:creator><![CDATA[Stefan]]></dc:creator>
		<pubDate>Wed, 02 Jan 2013 10:43:46 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=717#comment-620</guid>
		<description><![CDATA[I also thought about using abstract classes for API, whenever I want the client to access but not create an object conforming to some interface. You wrote that &quot;either you perform extensive runtime checks or blindly trust the implementation&quot; when using interfaces. Now, having a package private constructor does not prevent implementations but enforces the package for implementations. Won&#039;t one still need to &quot;check or trust&quot;? It&#039;s a real pity there is no such thing as &quot;access only&quot; interfaces.]]></description>
		<content:encoded><![CDATA[<p>I also thought about using abstract classes for API, whenever I want the client to access but not create an object conforming to some interface. You wrote that &#8220;either you perform extensive runtime checks or blindly trust the implementation&#8221; when using interfaces. Now, having a package private constructor does not prevent implementations but enforces the package for implementations. Won&#8217;t one still need to &#8220;check or trust&#8221;? It&#8217;s a real pity there is no such thing as &#8220;access only&#8221; interfaces.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Demystifying REST Constraints by Distributed Weekly 154 &#8212; Scott Banwart&#039;s Blog</title>
		<link>http://theamiableapi.com/2012/05/06/demystifying-rest-constraints/#comment-473</link>
		<dc:creator><![CDATA[Distributed Weekly 154 &#8212; Scott Banwart&#039;s Blog]]></dc:creator>
		<pubDate>Fri, 11 May 2012 13:24:28 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=990#comment-473</guid>
		<description><![CDATA[[...] Demystifying REST Constraints [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Demystifying REST Constraints [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Demystifying REST Constraints by Ryan Riley (@panesofglass)</title>
		<link>http://theamiableapi.com/2012/05/06/demystifying-rest-constraints/#comment-472</link>
		<dc:creator><![CDATA[Ryan Riley (@panesofglass)]]></dc:creator>
		<pubDate>Wed, 09 May 2012 21:33:39 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=990#comment-472</guid>
		<description><![CDATA[This didn&#039;t demystify anything for me. Instead, it just confuses the issue further. I agree with your later comments that you don&#039;t always have to apply all constraints. Also, it would help to point out whether you are arguing that everything is REST or that you don&#039;t actually need REST. I will assume the latter, though this statement confused me:

&quot;In my protocol all client state transitions are valid and the client does not need to discover URIs because it controls the URI space. Hence there is no hypermedia.&quot;

In your presented scenario, your server provides no transitions, so I think the above statement should read, &quot;the client has no state transitions; once it makes a request it&#039;s done.&quot; That would certainly satisfy the hypermedia constraint. I don&#039;t mean to say that other approaches aren&#039;t possible, only that you are correct in saying that this isn&#039;t REST.]]></description>
		<content:encoded><![CDATA[<p>This didn&#8217;t demystify anything for me. Instead, it just confuses the issue further. I agree with your later comments that you don&#8217;t always have to apply all constraints. Also, it would help to point out whether you are arguing that everything is REST or that you don&#8217;t actually need REST. I will assume the latter, though this statement confused me:</p>
<p>&#8220;In my protocol all client state transitions are valid and the client does not need to discover URIs because it controls the URI space. Hence there is no hypermedia.&#8221;</p>
<p>In your presented scenario, your server provides no transitions, so I think the above statement should read, &#8220;the client has no state transitions; once it makes a request it&#8217;s done.&#8221; That would certainly satisfy the hypermedia constraint. I don&#8217;t mean to say that other approaches aren&#8217;t possible, only that you are correct in saying that this isn&#8217;t REST.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Java API Design Checklist by API Design for C++</title>
		<link>http://theamiableapi.com/2012/01/16/java-api-design-checklist/#comment-470</link>
		<dc:creator><![CDATA[API Design for C++]]></dc:creator>
		<pubDate>Mon, 07 May 2012 04:20:58 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=537#comment-470</guid>
		<description><![CDATA[[...] http://theamiableapi.com/2012/01/16/java-api-design-checklist/ [...]]]></description>
		<content:encoded><![CDATA[<p>[...] <a href="http://theamiableapi.com/2012/01/16/java-api-design-checklist/" rel="nofollow">http://theamiableapi.com/2012/01/16/java-api-design-checklist/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Message Encoding in REST by Distributed Weekly 151 &#8212; Scott Banwart&#039;s Blog</title>
		<link>http://theamiableapi.com/2012/04/16/message-encoding-in-rest/#comment-452</link>
		<dc:creator><![CDATA[Distributed Weekly 151 &#8212; Scott Banwart&#039;s Blog]]></dc:creator>
		<pubDate>Fri, 20 Apr 2012 13:01:44 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=940#comment-452</guid>
		<description><![CDATA[[...] Message Encoding in REST [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Message Encoding in REST [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on REST and the Art of Protocol Design by This Week in #REST – Volume 43 (Mar 7 2012 – Apr 3 2012) &#171; This week in REST</title>
		<link>http://theamiableapi.com/2012/03/04/rest-and-the-art-of-protocol-design/#comment-417</link>
		<dc:creator><![CDATA[This Week in #REST – Volume 43 (Mar 7 2012 – Apr 3 2012) &#171; This week in REST]]></dc:creator>
		<pubDate>Mon, 02 Apr 2012 11:02:12 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=790#comment-417</guid>
		<description><![CDATA[[...] REST and the Art of Protocol Design &#8211; &#8220;RESTful protocol design is a topic more appropriate for a book than a blog post. Despite the catchy title my goal is very modest. I would like to show you that even limited protocol design knowledge can help you understand the essence of REST and the reasoning behind many of its best practices.&#8221; (by Ferenc Mihaly) [...]]]></description>
		<content:encoded><![CDATA[<p>[...] REST and the Art of Protocol Design &#8211; &#8220;RESTful protocol design is a topic more appropriate for a book than a blog post. Despite the catchy title my goal is very modest. I would like to show you that even limited protocol design knowledge can help you understand the essence of REST and the reasoning behind many of its best practices.&#8221; (by Ferenc Mihaly) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on REST Design Philosophies by This Week in #REST – Volume 43 (Mar 7 2012 – Apr 3 2012) &#171; This week in REST</title>
		<link>http://theamiableapi.com/2012/03/18/rest-design-philosophies/#comment-416</link>
		<dc:creator><![CDATA[This Week in #REST – Volume 43 (Mar 7 2012 – Apr 3 2012) &#171; This week in REST]]></dc:creator>
		<pubDate>Mon, 02 Apr 2012 11:02:07 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=845#comment-416</guid>
		<description><![CDATA[[...] REST Design Philosophies &#8211; &#8220;instead of best practices everybody agrees on REST has a number of distinct schools of thought or design philosophies; neither inherently good nor bad, neither obviously right nor wrong; each with its champions and detractors.I’ll attempt to describe four of these design philosophies without claiming any authority in the matter. Others would likely name and describe them differently. I decided to draw quick sketches instead of painting full portraits, capturing the distinctive features and worrying less about getting every detail right.&#8221; (by Ferenc Mihaly) [...]]]></description>
		<content:encoded><![CDATA[<p>[...] REST Design Philosophies &#8211; &#8220;instead of best practices everybody agrees on REST has a number of distinct schools of thought or design philosophies; neither inherently good nor bad, neither obviously right nor wrong; each with its champions and detractors.I’ll attempt to describe four of these design philosophies without claiming any authority in the matter. Others would likely name and describe them differently. I decided to draw quick sketches instead of painting full portraits, capturing the distinctive features and worrying less about getting every detail right.&#8221; (by Ferenc Mihaly) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing memorable names by Aaron Meurer</title>
		<link>http://theamiableapi.com/2011/09/21/api-design-best-practice-naming/#comment-414</link>
		<dc:creator><![CDATA[Aaron Meurer]]></dc:creator>
		<pubDate>Sat, 31 Mar 2012 22:41:25 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=315#comment-414</guid>
		<description><![CDATA[I think it&#039;s a shame that many languages choose to use CamelCase as the standard instead of underscores.  In Regular English, We Don&#039;t Write All Words With The First Letter In Upper Case, AndWeCertaintlyDon&#039;tWriteThemWithoutSpaces. Rather, we write all characters in lower case (except the first in the sentence, which doesn&#039;t have a parallel in variable names because they aren&#039;t complete sentences), and we put a space between each word.  Underscores more closely emulate this, and hence make things *much* more readable.  CamelCase IMHO should be used only for those things that (roughly) correspond to proper nouns in English (I&#039;m thinking in particular of the Python PEP 8 standard, where function and method names use underscores, and class names use CamelCase).  

Second, I completely disagree about your comment about adding -er or -or to the end of words.  Such words are called agent nouns, and a quick Google search will reveal that these are considered grammatically correct, even if the word isn&#039;t in the dictionary per se.  In computing, we often use words that aren&#039;t in the common English dictionary, as they are highly technical terms.  Adding -er (or -or if it fits better) to the end of a verb is a good way create a noun describing something that performs the action of that verb. Without this, we&#039;d have to use awkward constructs like DeletingObject (or replace &quot;Object&quot; with any one of your so-called generic words).

I also disagree with your argument that this should be avoided because non-English speakers won&#039;t understand them.  If we take this argument further, we should use as simple of English as possible, sacrificing any complex words, even if they are much better descriptors of what we want.  This is a grammatical part of the English language, and if we really want to avoid poor names, we should take advantage of all that the language has to offer us.]]></description>
		<content:encoded><![CDATA[<p>I think it&#8217;s a shame that many languages choose to use CamelCase as the standard instead of underscores.  In Regular English, We Don&#8217;t Write All Words With The First Letter In Upper Case, AndWeCertaintlyDon&#8217;tWriteThemWithoutSpaces. Rather, we write all characters in lower case (except the first in the sentence, which doesn&#8217;t have a parallel in variable names because they aren&#8217;t complete sentences), and we put a space between each word.  Underscores more closely emulate this, and hence make things *much* more readable.  CamelCase IMHO should be used only for those things that (roughly) correspond to proper nouns in English (I&#8217;m thinking in particular of the Python PEP 8 standard, where function and method names use underscores, and class names use CamelCase).  </p>
<p>Second, I completely disagree about your comment about adding -er or -or to the end of words.  Such words are called agent nouns, and a quick Google search will reveal that these are considered grammatically correct, even if the word isn&#8217;t in the dictionary per se.  In computing, we often use words that aren&#8217;t in the common English dictionary, as they are highly technical terms.  Adding -er (or -or if it fits better) to the end of a verb is a good way create a noun describing something that performs the action of that verb. Without this, we&#8217;d have to use awkward constructs like DeletingObject (or replace &#8220;Object&#8221; with any one of your so-called generic words).</p>
<p>I also disagree with your argument that this should be avoided because non-English speakers won&#8217;t understand them.  If we take this argument further, we should use as simple of English as possible, sacrificing any complex words, even if they are much better descriptors of what we want.  This is a grammatical part of the English language, and if we really want to avoid poor names, we should take advantage of all that the language has to offer us.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on REST Design Philosophies by Ferenc Mihaly</title>
		<link>http://theamiableapi.com/2012/03/18/rest-design-philosophies/#comment-410</link>
		<dc:creator><![CDATA[Ferenc Mihaly]]></dc:creator>
		<pubDate>Fri, 23 Mar 2012 17:01:15 +0000</pubDate>
		<guid isPermaLink="false">http://theamiableapi.com/?p=845#comment-410</guid>
		<description><![CDATA[The term REST is indeed problematic for the reasons you mentioned. I myself mulled a long time over what would be the best umbrella term to use in this post. I only decided on REST after realizing  that the staunches defenders of &quot;REST as an architectural style&quot; school of thought essentially gave up &quot;REST&quot; in favor of &quot;Hypermedia&quot;. This is important because one can make a strong argument that this school includes Roy Fielding himself. By adopting the term &quot;hypermedia&quot; they acknowledged  that &quot;REST&quot; evolved into an ambiguous and poorly defined concept. 

That REST is now a somewhat vague concept Is not entirely a bad thing. Most of our natural language is ambiguous and poorly defined. You can see this in legal documents and technical specifications which sometimes struggle to define the precise meaning of such common words as &quot;must&quot;. We can still have reasonable conversations as long as we don&#039;t insists that our words have precise meanings that they don&#039;t actually have. 

I&#039;ll continue using REST as a generic umbrella term in casual conversations, mostly because I cannot not think of any other alternatives that serve this role better. After all, the phrase &quot;HTTP-based protocols that are not SOAP and show at  least certain aspects of what used to be known as REST&quot; doesn&#039;t seem to be catching on.]]></description>
		<content:encoded><![CDATA[<p>The term REST is indeed problematic for the reasons you mentioned. I myself mulled a long time over what would be the best umbrella term to use in this post. I only decided on REST after realizing  that the staunches defenders of &#8220;REST as an architectural style&#8221; school of thought essentially gave up &#8220;REST&#8221; in favor of &#8220;Hypermedia&#8221;. This is important because one can make a strong argument that this school includes Roy Fielding himself. By adopting the term &#8220;hypermedia&#8221; they acknowledged  that &#8220;REST&#8221; evolved into an ambiguous and poorly defined concept. </p>
<p>That REST is now a somewhat vague concept Is not entirely a bad thing. Most of our natural language is ambiguous and poorly defined. You can see this in legal documents and technical specifications which sometimes struggle to define the precise meaning of such common words as &#8220;must&#8221;. We can still have reasonable conversations as long as we don&#8217;t insists that our words have precise meanings that they don&#8217;t actually have. </p>
<p>I&#8217;ll continue using REST as a generic umbrella term in casual conversations, mostly because I cannot not think of any other alternatives that serve this role better. After all, the phrase &#8220;HTTP-based protocols that are not SOAP and show at  least certain aspects of what used to be known as REST&#8221; doesn&#8217;t seem to be catching on.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
