<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3602666</id><updated>2011-04-21T16:45:52.046-04:00</updated><title type='text'>Mark Baker, Tech Curmudgeon</title><subtitle type='html'>My curmudgeonly views on the latest and greatest in distributed systems</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://markbaker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3602666.post-81192258</id><published>2002-09-05T11:51:00.000-04:00</published><updated>2002-09-05T11:51:31.830-04:00</updated><title type='text'></title><content type='html'>I've &lt;a href="http://www.markbaker.ca/2002/09/Blog/"&gt;relocated&lt;/a&gt; this blog to my own server.  More control, RSS.  Mmmm...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-81192258?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81192258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81192258'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_09_01_archive.html#81192258' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-81103300</id><published>2002-09-03T15:41:00.000-04:00</published><updated>2002-09-03T15:41:02.076-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;a href="http://radio.weblogs.com/0101679/2002/09/03.html"&gt;Sam responds&lt;/a&gt;;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;For those who want to understand the issue Mark has with SOAP, he objects to the string "doGoogleSearch" in this example.  FWIW, I don't see how this is any different, architecturally, than hidden controls in HTML.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;It isn't any different than hidden controls, but I wouldn't use hidden controls either.  I'd just POST the data "q=foo" to whatever URI the POST form told me too.  No need to understand what "doGoogleSearch" means, because the context in which the POST operation is to be interpreted by the server, is provided entirely by the URI to which I'm POSTing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-81103300?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81103300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81103300'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_09_01_archive.html#81103300' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-81091743</id><published>2002-09-03T11:05:00.000-04:00</published><updated>2002-09-03T11:10:57.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;a href="http://www.intertwingly.net/blog/?entry=784"&gt;Sam asks&lt;/a&gt;;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;Now it turns out that the Google API has a limit of a 1,000 queries per day.  This means that the 1,001st query will not have the same result as the 1,000th query.  The query itself has a (GASP!) side effect.  It is most decidedly not idempotent.  So what do you do?  Call back the Hobbits and recode to use POST, or do you make the pragmatic decision to slightly bend the rules a bit?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Well, first of all, &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1"&gt;that part of 2116&lt;/a&gt; that you referred to earlier in your blog (presumably you meant 9.1.1 not 9.1.2) says "SHOULD NOT", not "MUST NOT".  The reason this is so, is because unsafe GETs won't break the Web; web page counters demonstrated that.  What will break the Web is if people who click on a URI get blamed for causing the side-effect, as 9.1.1 points out when it says &lt;em&gt;"The important distinction here is that the user did not request the side-effects, so therefore cannot be held accountable for them."&lt;/em&gt;.  Also, it's not a fundamental axiom, in the same way that a &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5"&gt;uniform interface&lt;/a&gt; is - it's derivate (though lots of other important principles are too).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;But with that said, your example is an &lt;em&gt;excellent&lt;/em&gt; one, because clearly a counter such as the one you describe would be "blaming" the user for bumping it up by one.  So IMO, no, this service should not use GET, at least for those queries.  It should be bootstrapped with GET though, so that you GET the HTML form, but the form results should be POSTed back.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Also, in case you were going to suggest that this somehow makes the Google API "ok" because it uses POST, it should be noted that it doesn't &lt;em&gt;use&lt;/em&gt; POST, it tunnels through it.  A client needs to know more than just the URI, the form structure, and the POST method.  It needs to know what the string "doGoogleSearch" means.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And as for RSS, I welcome any suggestions for a blogging tool/service that provides free RSS feeds and lets me edit from a browser (something that Dave Winer seems dead set against providing - or at least he was in the past).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-81091743?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81091743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81091743'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_09_01_archive.html#81091743' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-81070534</id><published>2002-09-02T22:48:00.000-04:00</published><updated>2002-09-02T22:52:39.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Sometimes I &lt;a href="http://radio.weblogs.com/0101679/stories/2002/07/20/restSoap.html"&gt;see signs&lt;/a&gt; of smart folks figuring out how to do Web services properly, and I feel a glimmer of hope that the industry may not be wasting hundreds of millions of dollars with SOAP and WSDL.  Then I see stuff &lt;a href="http://www.infoworld.com/articles/hn/xml/02/08/30/020830hnactional.xml"&gt;like this&lt;/a&gt;, and I realize, nope, it's going to hell - specifically this part;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Bergandi: With a wizard-based environment within the SOAPswitch. The SOAPswitch itself has self-discovery capabilities. It has the ability to, in the example I gave you, inquire into the metadata of what the Siebel system looks like; discover what business objects are available and what methods are available against those business objects; and then, based upon that, in a very, very simple way, generate all the SOAP that's required for communication.&lt;br /&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Internet-scale distributed computing just ain't that easy, folks, sorry.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-81070534?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81070534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/81070534'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_09_01_archive.html#81070534' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-80873385</id><published>2002-08-29T11:43:00.000-04:00</published><updated>2002-09-03T11:12:36.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;According to &lt;a href="http://weblog.infoworld.com/udell/"&gt;Jon Udell&lt;/a&gt;, &lt;a href="http://weblog.infoworld.com/udell/2002/08/28.html"&gt;extremism is dead&lt;/a&gt;.  How silly!  Sometimes, whether you know it or not, the truth is not shades of grey that requires finding a middle ground, it's boolean.  Take REST vs. Web services, for example.  REST is a simply a superior architecture by all important measures, than what people know to be Web services (the definition's so fuzzy, it's hard to pin down a specific one to argue against).  End of story.  And not just in the "oh yah, I guess I'd prefer REST" sense, but in the "Web services will fail to achieve their goal, and ultimately be discarded" sense.  Just because someone hasn't done the homework necessary to properly evaluate REST, does not change this.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Extremism will live on, so long as there is right and wrong.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the &lt;a href="http://www.hazlitt.org/e-texts/wisdom/ch04.html"&gt;words of Henry Hazlitt&lt;/a&gt; (though the snippet starts slightly out-of-context);&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;"We Haven't Been Good Enough"&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I am going to give what is no doubt a terribly oversimplified answer to that question. In the first place, we are almost hopelessly outnumbered. Our voices are simply drowned out in the general tumult and clamor. But there is another reason. And this is hard to say, above all to an audience of this sort, which contains some of the most brilliant writers and minds in the fields of economics, of jurisprudence, of politics, not only of this age but of any age. But the hard thing must be said that, collectively, we just haven't been good enough. We haven't convinced the majority. Is this because the majority just won't listen to reason? I am enough of an optimist, and I have enough faith in human nature, to believe that people will listen to reason if they are convinced that it is reason. Somewhere, there must be some missing argument, something that we haven't seen clearly enough, or said clearly enough, or, perhaps, just not said often enough.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A minority is in a very awkward position. The individuals in it can't afford to be just as good as the individuals in the majority. If they hope to convert the majority they have to be much better; and the smaller the minority, the better they have to be. They have to think better. They have to know more. They have to write better. They have to have better controversial manners. Above all, they have to have far more courage. And they have to be infinitely patient.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;(thanks to &lt;a href="http://www.xfront.com/"&gt;Roger Costello&lt;/a&gt; for the pointer)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-80873385?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80873385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80873385'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_08_01_archive.html#80873385' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-80245348</id><published>2002-08-14T16:41:00.000-04:00</published><updated>2002-08-14T16:43:18.000-04:00</updated><title type='text'></title><content type='html'>Just reading through a relatively recent update to the &lt;a href="http://www.globus.org/ogsa/"&gt;Grid's&lt;/a&gt; &lt;a href="http://www.gridforum.org/ogsi-wg/drafts/GS_Spec_draft03_2002-07-17.pdf"&gt;Grid Service Specification&lt;/a&gt;.  In there, they actually provide some (extended) WSDL that is used to access all Grid services; a generic interface, &lt;a href="http://www.w3.org/2002/ws/arch/2/06/wd-wsa-reqs-20020605.html#AR003.6"&gt;who would've thunk it&lt;/a&gt;?  Some of the relevant text from that part of the spec includes;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;In order to support discovery, introspection, and monitoring of Grid service instances, we introduce the concept of service data, which refers to descriptive information about a Grid service instance, including both meta-data (information about the service instance) and state data (runtime properties of the service instance).&lt;/em&gt; -- from section 4.4&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So it's good to see them getting this important aspect right (at least to an extent - it's still much less useful than GET/PUT/POST/etc..), but it would be nice to see them embrace the Web rather than getting distracted with what people know to be Web services, since the Web already does most of the things they're trying to do, and many beneficial things they haven't even thought about.  I attended a BOF of theirs at &lt;a href="http://www2002.org"&gt;WWW 2002&lt;/a&gt;, and they had absolutely no interest in using URIs (though I see they're using them as Grid Service Handlers), and thought that &lt;a href="http://www.prescod.net/rest/mistakes/"&gt;protocol independance&lt;/a&gt; was a feature, not a bug.  They really need a protocol guru on the team; without one, and some major changes, the Grid isn't going anywhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-80245348?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80245348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80245348'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_08_01_archive.html#80245348' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-80233909</id><published>2002-08-14T11:30:00.000-04:00</published><updated>2002-08-14T11:34:27.000-04:00</updated><title type='text'></title><content type='html'>I just made an &lt;a href="http://lists.w3.org/Archives/Public/www-ws-arch/2002Aug/0200"&gt;interesting observation&lt;/a&gt; regarding all these &lt;a href="http://www.infoworld.com/cgi-bin/fixup.pl?story=http://www.infoworld.com/articles/hn/xml/02/08/09/020809hnwstrio.xml"&gt;orchestration, workflow, choreography&lt;/a&gt; Web services specs recently released.  Let's see who in the &lt;a href="http://www.w3.org/2002/ws/arch/"&gt;Web Services Architecture WG&lt;/a&gt; picks up on this ...&lt;br /&gt;&lt;br /&gt;(if anybody knows why Blogger's messing up the alignment below, please let me know)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-80233909?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80233909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/80233909'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_08_01_archive.html#80233909' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79990624</id><published>2002-08-08T14:02:00.000-04:00</published><updated>2002-08-14T14:51:24.000-04:00</updated><title type='text'></title><content type='html'>Clemens writes &lt;a href="http://radio.weblogs.com/0108971/2002/08/04.html#a62"&gt;some&lt;/a&gt; &lt;a href="http://radio.weblogs.com/0108971/2002/08/08.html#a69"&gt;more&lt;/a&gt; about HTTP, transactions, reliability, despite his publication deadline.  Go, Clemens!&lt;br /&gt;&lt;br /&gt;FWIW, I don't disagree that this is a commonly held view, but in my view, it's entirely incorrect.  HTTP is not a panacea, but it's also not just a web page retrieval protocol.  Some point-by-point responses;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;I said that HTTP, without resorting to things like tunneling or callbacks, doesn't support any flavor of transactional behavior[...]&lt;/em&gt;.  This is incorrect.  HTTP supports what is sometimes referred to as a "state alignment transaction".  That is, any party in the transaction can synchronize with the state of the other party using HTTP GET.  State alignment is a form of transactional style that fits very well with the Internet/Web.  Obviously, just using GET isn't sufficient for all transactional needs, even with a state alignment approach, so more work remains to be done.  But to suggest that HTTP &lt;em&gt;doesn't&lt;/em&gt; and &lt;em&gt;can't&lt;/em&gt; do transactions is false.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;For additional cases where HTTP doesn't really work (P2P in general and even non-transactional, long running operations)[...]&lt;/em&gt;.  I use HTTP for P2P on a daily basis.  My company's HTTP routing platform is premised on the fact that HTTP &lt;em&gt;is&lt;/em&gt; suitable for P2P, and we've built some really cool, useful, and scalable stuff with it.  Ask &lt;a href="http://www.knownow.com"&gt;KnowNow&lt;/a&gt; about this too.  WRT long running operations, see above re state alignment; you just have to look at the problem differently.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I can't say that I understand what you mean by the TIP/BEEP/HTTP pictures, but the prose preceding it suggests that you didn't understand my point that you quoted.  I see reliability as an application layer issue, not a transport one.  See what &lt;a href="http://research.sun.com/techrep/1994/abstract-29.html"&gt;Jim Waldo has to say&lt;/a&gt; about the topic (chapter 5, if you don't have time to read the whole thing).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79990624?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79990624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79990624'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_08_01_archive.html#79990624' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79897966</id><published>2002-08-06T13:17:00.000-04:00</published><updated>2002-08-08T14:21:31.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Clemens &lt;a href="http://radio.weblogs.com/0108971/2002/08/03.html#a61"&gt;responds&lt;/a&gt;.  It's a bit long to respond to in detail, but I will point out another big misconception about HTTP; that it is unreliable.  It is as reliable as any other workable protocol can be without being brittle, because it attempts to expose what needs exposing, and hides what can reasonably be hidden.  Going back to those &lt;a href="http://java.sun.com/people/jag/Fallacies.html"&gt;fallacies&lt;/a&gt;, number one is "the network is reliable".  This should hopefully not come as a surprise to anybody, but what might is a corrolary of that fallacy (that I just devised 8-); &lt;em&gt;Not only is the network not reliable, no layer that attempts to abstract that network can be reliable&lt;/em&gt;.  "Reliability", in the context of Internet-scale systems, is an aspect of the coordination semantics of the over-the-wire agreement, not of the quality of service of the transport of the message.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79897966?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79897966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79897966'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_08_01_archive.html#79897966' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79639528</id><published>2002-07-31T09:21:00.000-04:00</published><updated>2002-07-31T09:21:52.560-04:00</updated><title type='text'></title><content type='html'>My most recent O'Reilly blog, &lt;a href="http://www.oreillynet.com/cs/weblog/view/wlg/1681"&gt;"Web Services and the Eight Fallacies"&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79639528?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79639528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79639528'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79639528' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79636788</id><published>2002-07-31T07:37:00.000-04:00</published><updated>2002-08-06T13:03:46.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;The "theory monster" rears its ugly head again.  Clemens Vasters writes &lt;em&gt;&lt;a href="http://radio.weblogs.com/0108971/2002/07/30.html#a50"&gt;"Hence, the "I love HTTP" discussion (aka REST) is solely academic and of very little relevance for complex real-world designs now and even less moving forward -- methinks."&lt;/a&gt;&lt;/em&gt;.  REST is the furthest thing from theory in existence; it is 100% practice.  It is what you get when you closely study how the Web works &lt;em&gt;today&lt;/em&gt;.  In contrast, &lt;a href="http://www.w3.org/2002/ws/arch/"&gt;"Web services architecture"&lt;/a&gt; is almost entirely theory in the context in which it's being used (the Internet).  It, and its implicit resemblance to the OMA, has never been deployed at a scale even approaching the Web.  Perhaps it's worth repeating; The Web is a giant leap forward in distributed computing architectures.  Ignore it at your peril.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For many years, people have talked about how normal ACID/2PC transaction semantics are &lt;a href="http://jeffsutherland.org/oopsla97/dan.html"&gt;unsuitable for use on the Internet&lt;/a&gt;.  That is still the case.  We need to rethink what a transaction is on the Web, and I can guarantee you that when we do, it will be implementable as an HTTP extension.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79636788?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79636788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79636788'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79636788' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79595241</id><published>2002-07-30T10:29:00.000-04:00</published><updated>2002-07-31T08:21:37.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;a href="http://radio.weblogs.com/0101679/"&gt;Sam Ruby&lt;/a&gt; responds, &lt;a href="http://radio.weblogs.com/0101679/2002/07/29.html#a692"&gt;"Note: I've said nothing about behavior... only about syntax.  Where is the disconnect?".&lt;/a&gt;  As long as no behaviour is requested, then there is absolutely no disconnect.  Excellent!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I think we still have some terminology issues though.  For example you said that &lt;a href="http://radio.weblogs.com/0101679/2002/07/27.html#a681"&gt;WSDL is for specifying protocols&lt;a&gt;.  I don't consider specifying the structure of expected content as a protocol.  Protocols define contracts, and in this case, the contract is that if I POST something that you consider invalid - whether or not I've seen your WSDL (heh, that sounds rude 8-) - then you'll tell me so with a 4xx response (e.g. 400 or 415).  Does that make sense?  So this boils WSDL down to how I always saw it being used in the long run; as HTML forms are used ... that is, until RDF absorbs it. 8-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79595241?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79595241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79595241'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79595241' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79558952</id><published>2002-07-29T14:50:00.000-04:00</published><updated>2002-07-31T08:20:51.000-04:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Sam and I are &lt;a href="http://radio.weblogs.com/0101679/2002/07/29.html#a690"&gt;still disconnected&lt;/a&gt;, but we appear to have narrowed it done to this one key point.  Must .. find .. way .... to explain.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Time for an example.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;POST /some-uri/ HTTP/1.1&lt;br /&gt;Host: example.org&lt;br /&gt;Content-Type: text/plain&lt;br /&gt;[blank line]&lt;br /&gt;795&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is a client POSTing the data "795" to http://example.org/some-uri/.  I consider this more hormone-like, because what the code bound to that URI does with the number "795", is completely up to it.  And without additional information, the sender of that HTTP message has &lt;em&gt;no idea&lt;/em&gt; what to expect will happen when he does.  How this works in HTTP, is that the client (in HTML's case, a user) forms an expectation by believing the assertions in the HTML that they previously got, that if you submit some text, we'll send it to an LED flasher in our office (or will dial a phone number, or hunt down and kill the person with that SIN, or whatever).  So different behaviours are &lt;em&gt;negotiated&lt;/em&gt; out of band, not &lt;em&gt;requested&lt;/em&gt; in band.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;That should hopefully highlight the difference.  Does it?  It wasn't intended to compare the approaches.  I'll leave that as an exercise to the reader.  8-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79558952?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79558952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79558952'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79558952' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79528650</id><published>2002-07-28T21:47:00.000-04:00</published><updated>2002-07-28T21:54:52.000-04:00</updated><title type='text'></title><content type='html'>&lt;a href="http://radio.weblogs.com/0101679/"&gt;Sam Ruby&lt;/a&gt;, &lt;a href="http://radio.weblogs.com/0101679/2002/07/27.html#a681"&gt;"I still do, however, see value in perfectly clear protocol specifications, a role that WSDL fulfills"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's how I see it.  HTTP is the protocol, and no other protocols are required in order to get stuff done.  I agree that WSDL &lt;em&gt;does&lt;/em&gt; define protocols - application protocols in fact - but why is it required?  I'm not sure how best to describe the difference, but Sam's own &lt;a href="http://radio.weblogs.com/0101679/stories/2002/04/05/neurotransmitters.html"&gt;neurotransmitters&lt;/a&gt; essay might be a start; &lt;em&gt;"In the second mechanism, the receiver determines the action to be taken.  The request matches a receptacle on the membrane and the cell uses this information to trigger biological processes."&lt;/em&gt;.  That is, the the "server" determines what is done, not the client.  Using WSDL as a protocol definition mechanism (as practically all Web services use it), the client is asking that some action be taken by invoking some operation on the server.  This is not the hormone/membrane, it's the virus.  For the hormone approach, the protocol data unit is simply "handed off" to the recipient without any specific request for action other than "hand off".  This is what POST means.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79528650?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79528650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79528650'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79528650' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-79350401</id><published>2002-07-24T11:42:00.000-04:00</published><updated>2002-07-24T11:46:38.000-04:00</updated><title type='text'></title><content type='html'>I'm a few days late, but &lt;a href="http://radio.weblogs.com/0101679/"&gt;Sam Ruby&lt;/a&gt; posted his excellent &lt;a href="http://radio.weblogs.com/0101679/stories/2002/07/20/restSoap.html"&gt;REST+SOAP essay&lt;/a&gt; last week.  I was surprised to see it not get more fanfare.  I commented to Sam that I was concerned about this bit;&lt;br /&gt;&lt;pre&gt;Now add high level methods which take care of all composite&lt;br /&gt;create, update, and delete operations.&lt;/pre&gt;&lt;br /&gt;Sam suggested to me off-line that he was thinking about it in terms of just passing data over a wall/membrane, to which I responded that this is exactly &lt;a href="http://www.markbaker.ca/2002/05/GettingStuffDoneOnTheWeb/"&gt;how POST works&lt;/a&gt;; that the operation that occurs is determined solely by the server.  So we &lt;em&gt;may&lt;/em&gt; be in synch, but given previous things I've heard him say, and his work on SOAP and WSDL, I wonder if we really are.  But here's hoping!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-79350401?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79350401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/79350401'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#79350401' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78988282</id><published>2002-07-15T16:51:00.000-04:00</published><updated>2002-07-15T17:26:46.000-04:00</updated><title type='text'></title><content type='html'>Thanks for the heads up Sam, it &lt;a href="http://radio.weblogs.com/0101679/2002/07/15.html#a645"&gt;looks like a 404&lt;/a&gt;.  Had to republish the Blogger archives.  Bizarre, but you get what you pay for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78988282?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78988282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78988282'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#78988282' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78985150</id><published>2002-07-15T15:30:00.000-04:00</published><updated>2002-07-15T16:53:14.000-04:00</updated><title type='text'></title><content type='html'>An &lt;a href="http://lists.w3.org/Archives/Public/xml-dist-app/2002Jul/0000.html"&gt;interesting discussion&lt;/a&gt; on &lt;a href="http://lists.w3.org/Archives/Public/xml-dist-app/"&gt;xml-dist-app&lt;/a&gt; about implicit versus explicit use of the &lt;a href="http://www.w3.org/TR/soap12-part2/#WebMethodFeature"&gt;Web Method Specification Feature&lt;/a&gt; of &lt;a href="http://www.w3.org/TR/soap12-part1/"&gt;SOAP 1.2&lt;/a&gt;.  I guess I just have a hard time understanding why you'd want to hide the method, either by defining a default, or deriving it from the MEP in use.  I mean, how else do you accomplish something without knowing what method you're invoking?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78985150?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78985150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78985150'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#78985150' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78872701</id><published>2002-07-12T14:25:00.000-04:00</published><updated>2002-07-12T23:27:55.000-04:00</updated><title type='text'></title><content type='html'>I'm glad Sam Ruby is &lt;a href="http://radio.weblogs.com/0101679/2002/07/12.html#a638"&gt;contributing&lt;/a&gt; to the SOAP/REST discussion.  As a leader in the Web services space, his word goes a long way.  I'm looking forward to reading his article.&lt;br /&gt;&lt;br /&gt;As for "bad advocacy", I don't believe that I'm an advocate for REST, at least in the REST/SOAP discussions.  I see myself as more of a soothsayer, trying to warn people that the current approach to Web services &lt;em&gt;cannot&lt;/em&gt; do what people hope it can do; namely, work on the Internet.  But my hope is that the industry understands this soon, because I'd prefer to see it put resources into more &lt;a href="http://www.w3.org/2001/sw/"&gt;fruitful endeavours&lt;/a&gt; rather than spending them repeating &lt;a href="http://www.omg.org"&gt;past mistakes&lt;/a&gt;.  But if they don't, then they'll just have to learn the hard way.&lt;br /&gt;&lt;br /&gt;Curmudgeonly yours.  8-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78872701?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78872701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78872701'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#78872701' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78710817</id><published>2002-07-08T22:02:00.000-04:00</published><updated>2002-07-12T13:49:28.000-04:00</updated><title type='text'></title><content type='html'>O'Reilly invited me to join their list of weblogs, so I've &lt;a href="http://www.oreillynet.com/weblogs/author/942"&gt;done that&lt;/a&gt;.  I'll use this Blogger one for day-to-day snippets, and the O'Reilly one for more article-style blogging.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78710817?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78710817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78710817'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_07_01_archive.html#78710817' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78400236</id><published>2002-06-30T22:31:00.000-04:00</published><updated>2002-07-08T16:03:26.000-04:00</updated><title type='text'></title><content type='html'>Spent some time thinking about how the &lt;a href="http://xml.apache.org/axis/"&gt;Apache Axis&lt;/a&gt; project could support the &lt;a href="http://www.w3.org/TR/soap12-part2/#WebMethodFeature"&gt;SOAP 1.2 "Web Method Feature"&lt;/a&gt;, the major architectural difference between SOAP 0.9/1.0/1.1, and SOAP 1.2.  I'm not sure that many Web services folks understand the implications of this yet, but it's clear to me that it dispells the notion of SOAP as a layer, which is bound to mess with &lt;a href="http://cvs.apache.org/viewcvs.cgi/~checkout~/xml-axis/java/docs/user-guide.html#WSDL2Java: Building stubs, skeletons, and data"&gt;some software&lt;/a&gt;.  Layers hide other layers beneath them, but what the Web Method Feature says is that a developer must be aware of which HTTP method they're using if they're using SOAP bound to HTTP.  Let's hope they all see it that way too. 8-)&lt;br /&gt;&lt;br /&gt;The topic is &lt;a href="http://marc.theaimsgroup.com/?l=axis-dev&amp;m=102527473205862&amp;w=2"&gt;being discussed&lt;/a&gt; on &lt;a href="http://marc.theaimsgroup.com/?l=axis-dev&amp;r=1&amp;w=2"&gt;axis-dev&lt;/a&gt; now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78400236?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78400236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78400236'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_06_01_archive.html#78400236' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78328881</id><published>2002-06-28T17:40:00.000-04:00</published><updated>2002-07-01T00:26:36.000-04:00</updated><title type='text'></title><content type='html'>The big news from yesterday, &lt;a href="http://www.infoworld.com/articles/hn/xml/02/06/27/020627hnwssecure.xml"&gt;WS-Security is submitted to OASIS&lt;/a&gt;.  For those who don't think Web services have much of a future, this is really good news for the Web and the W3C, as it removes influence from the &lt;a href="http://www.w3.org/2002/ws/"&gt;Web Services Activity&lt;/a&gt;, specifically the &lt;a href="http://www.w3.org/2002/ws/arch/"&gt;Web Services Architecture Working Group&lt;/a&gt; (of which I'm a member, but that I'd be happy to see go away).  Of course, many Web Services proponents are quite concerned, as it puts more control in the hands of MS and IBM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78328881?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78328881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78328881'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_06_01_archive.html#78328881' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-3602666.post-78292918</id><published>2002-06-27T21:33:00.000-04:00</published><updated>2002-06-30T23:20:02.000-04:00</updated><title type='text'></title><content type='html'>Welcome to my first blog!  Here's why I'm calling it "Mark Baker, Tech Curmudgeon".&lt;br /&gt;&lt;br /&gt;I believe that distributed systems that work at Internet scale are extraordinarily difficult to build; much more difficult than is commonly believed, even amoungst those who know that it's difficult.  I believe that there are &lt;a href="http://www.ics.uci.edu/~fielding"&gt;very&lt;/a&gt; &lt;a href="http://www.w3.org/People/Berners-Lee/"&gt;few&lt;/a&gt; &lt;a href="http://www.w3.org/People/Connolly/"&gt;people&lt;/a&gt; on this planet who have the expertise necessary to architect such a &lt;a href="http://www.w3.org/History/1989/proposal-msw.html"&gt;system&lt;/a&gt;.  Of course, the Web isn't the only example, but it's a great one because of what it can do (as compared to, say, email or FTP, which are limited in their capabilities).&lt;br /&gt;&lt;br /&gt;So when the "next &lt;a href="http://www.gridforum.org"&gt;big&lt;/a&gt; &lt;a href="http://www.w3.org/2002/ws/"&gt;thing&lt;/a&gt;" comes along, and it's not developed by people who I know get how difficult it is, I'm naturally skeptical.&lt;br /&gt;&lt;br /&gt;I'll try not to offend anybody with my posts, but since my job is to be critical of others' work, and people invariably put a lot of themselves into their work, this is going to be hard to achieve.  But please know that it is not my intent to criticize any person or group of people, only to critique technology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3602666-78292918?l=markbaker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78292918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3602666/posts/default/78292918'/><link rel='alternate' type='text/html' href='http://markbaker.blogspot.com/2002_06_01_archive.html#78292918' title=''/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://www.markbaker.ca/bodo/mark2.jpg'/></author></entry></feed>
