Thursday, September 05, 2002

I've relocated this blog to my own server. More control, RSS. Mmmm...

Tuesday, September 03, 2002

Sam responds;

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.

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.

Sam asks;

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?

Well, first of all, that part of 2116 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 "The important distinction here is that the user did not request the side-effects, so therefore cannot be held accountable for them.". Also, it's not a fundamental axiom, in the same way that a uniform interface is - it's derivate (though lots of other important principles are too).

But with that said, your example is an excellent 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.

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 use 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.

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).

Monday, September 02, 2002

Sometimes I see signs 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 like this, and I realize, nope, it's going to hell - specifically this part;

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.

Internet-scale distributed computing just ain't that easy, folks, sorry.

Thursday, August 29, 2002

According to Jon Udell, extremism is dead. 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.

Extremism will live on, so long as there is right and wrong.

In the words of Henry Hazlitt (though the snippet starts slightly out-of-context);

"We Haven't Been Good Enough"

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.

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.

(thanks to Roger Costello for the pointer)

Wednesday, August 14, 2002

Just reading through a relatively recent update to the Grid's Grid Service Specification. In there, they actually provide some (extended) WSDL that is used to access all Grid services; a generic interface, who would've thunk it? Some of the relevant text from that part of the spec includes;

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). -- from section 4.4

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 WWW 2002, and they had absolutely no interest in using URIs (though I see they're using them as Grid Service Handlers), and thought that protocol independance 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.
I just made an interesting observation regarding all these orchestration, workflow, choreography Web services specs recently released. Let's see who in the Web Services Architecture WG picks up on this ...

(if anybody knows why Blogger's messing up the alignment below, please let me know)