"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.

Search This Blog

Saturday, October 16, 2004

Email and stardecisions.com is back

My domain as well as email to stardecisions.com has been down and in transition (really limbo) for quite a while. If you've sent email to patrickdlogan at stardecisions.com in the last month or so, I probably haven't seen it.

But now I have the domain running on a hosted user-mode Linux box at linode.com. Postfix is running and email is flowing again, for better or worse.

User-mode Linux is a great way to run at least a low-traffic server where you want full control over the systems you run. And webmin is a convenient way to administer all the typical services you'd want to run.

Going Upriver

The documentary "Going Upriver" is available on-line.

Friday, October 15, 2004

Playing with Fire

Dave Winer writes about the Valerie Plame case, in which one or two senior Bush officials very likely broke significant laws...

If it's true that Bush Administration is using dirty tricks to silence critics, playing with people's lives for crying out loud (something that as far as we know even Nixon didn't do), doesn't the electorate deserve to know?
There is significant evidence the Nixon campaign in 1968 played with lives by interfering with peace talks held by the Johnson administration that might have ended the war half a dozen years than what turned out to be the case. The Nixon campaign apparently was sending backchannel messages to the enemy that if they held out for a Nixon victory, the new administration would cut them a better deal. There is also evidence that Johnson and Humphrey were onto the covert operation, but perhaps did not have enough evidence to go public before the election.

Nixon probably played with about 20,000 American lives with this one since the adminstration found it more profitable to continue rather than end the war. Who knows how many Vietnamese, Cambodians, Laotians, and others would not have died had the peace talks ended the war in 1968.

Should anyone complain I am just an ardent Democrat (I'm not even a registered Democrat!) I will also state the obvious that Johnson also played with tens of thousands of lives (at a minimum), through events the least of which was not the Gulf of Tonkin.

Fascism

Fascism: [n] a political theory advocating an authoritarian hierarchical government (as opposed to democracy or liberalism)

From Bend, Oregon, via the Associated Press...

“We chose this phrase specifically because we didn't think it would be offensive or degrading or obscene," said Tania Tong, 34, a special education teacher.

Thursday’s event in Oregon sets a new bar for a Bush/Cheney campaign that has taken extraordinary measures to screen the opinions of those who attend Bush and Cheney speeches. For months, the Bush/Cheney campaign has limited event access to those willing to volunteer in Bush/Cheney campaign offices. In recent weeks, the Bush/Cheney campaign has gone so far as to have those who voice dissenting viewpoints at their events arrested and charged as criminals.

Thursday’s actions in Oregon set a new standard even for Bush/Cheney – removing and threatening with arrest citizens who in no way disrupt an event and wear clothing that expresses non-disruptive party-neutral viewpoints such as “Protect Our Civil Liberties.”

It's time to choose, Americans. Do we move closer to fascism or not?

Lisp T-shirts

Get your Lisp t-shirts now. John McCarthy on the front, and a cons cell on the back.

Here.

(Via Lemonodor.)

Thursday, October 14, 2004

Angels in America

Chris Sell's started Angels in America and did not go for it. Early this morning as a matter of fact I just completed the second of two DVD's.

I thought it was an amazing script presented by several powerful actors (playing multiple roles), produced and directed beyond belief.

Chris did go for Emma Thompson. She plays more than a classic angel, actually something like a hierodule.

Angles in America is a play simultaneously ancient and modern, set in the 1980's, and created with production values from the 21st century.

Daily Zen

Deep among ten thousand peaks
I sit alone cross-legged
A solitary thought fills
My empty mind
My body is the moon
That lights the winter sky
In rivers and in lakes
Are its only reflections.

- Han-shan Te-ch’ing (1546-1623)

Toward a Discipline of Coordination and Action

Don Box on verbs...

I completely agree with the first two paragraphs.

As for the last paragraph, I would argue that HTTP POST is a "coordination" verb and that WSDL is typically used for defining "action" verbs. It's not clear from Patrick's post whether we agree or disagree.

I don't have a large set of examples of SOAP systems, but I've not seen any except for Ruple (PDF) that distinguish between coordination verbs and action verbs. The uses of POST are typically many clients to one server, where the server coordinates the sessions to perform each request. So I don't see a clean distinction there either, in practice or intent.

A new set of verbs or a new discipline (like this one from Vanessa Williams) will be required to achieve the distinction. Again, Ruple is an example of a new set of verbs for coordination. (Was it just ahead of its time, or would it have been more successful if the implementation was more open?)

WS-Transfer (PDF) , like Ruple, appears to be a set of SOAP verbs for coordination. The intent is not as clear to me (it's new without much to go on save the spec itself), at least not as clear as with Ruple. Assuming the intent, I am then not sure about the relative value of WS-Transfer vs. Ruple. For example, Ruple (based on Linda) uses content-based addressing via XML patterns and queries, while WS-Transfer uses direct addressing, WS-Addressing (PDF).

Is this a problem, given a separate query mechanism that yields a direct address that becomes the target of a transfer method? I would argue that (but experience will tell whether) this complicates the coordination responsibilities of the participants. Consider a query-then-delete sequence. In Ruple this is one atomic method. In WS-Transfer a mechanism or convention outside of the specification itself is necessary to coordinate this sequence.

As referenced above, Vanessa William's Restful Tuple Spaces is such a convention using HTTP methods. As she writes...

Clearly, this isn't as simple as sending a few SOAP messages back and forth over some reliable message service.
Maybe there is a need for one more WS-xxx. (Did I say that out loud?)
BTW, Patrick, I hope you'll be at the SellsCon next week.
I can't make it this time, and the location is perfect. I've stayed there, it's great, so maybe this will become its new home.

Tuesday, October 12, 2004

Micro-Workflow: Separating Coordination and Action

Dragos Manolescu's Micro-Workflow is another example of separating "coordination verbs" from "action verbs".

Paradigms of Coordination

What I would consider paradigms of coordination: CSP, Linda, Erlang/OTP, and OVAL, nee Object Lens, nee Information Lens. I'm sure there're some good ones I've omitted.

One thing each of these have in common: the separation of verbs for coordination from verbs for action.

Number 24

Three Days of the Condor is 24th on the Netflix Top 25 in Classics. I have to watch this movie several times a year, but I had no idea of its overall popularity.

His name is Joe Turner -- code name, Condor. In the next 24 hours, everyone he trusts will try to kill him. Robert Redford stars as the CIA researcher who returns from lunch to find all his co-workers murdered. Double-crossed and forced to go underground, he kidnaps a young woman (Faye Dunaway) and holds her hostage as he unravels the mystery. Conspiracy films don't come any better.

Monday, October 11, 2004

Verbs for Coordination, Verbs for Action

This is a restatement of the previous item...

I think the fundamental problem is we need to distinguish between verbs for coordination and verbs for action. Verbs for coordination should be a small fixed set that describe the putting of messages into (and taking of messages from) a shared space.

Verbs for action (e.g. to reboot some machine at some time) by their very nature will be larger and less stable. Certain domains have more stable sets of verbs than others, and many others would be expected to stabilize with increased use.

Requesting an action of another participant in the system consists of putting a verb for action in a message, and using a verb for coordination to get that message to the participant. Overloading POST or creating new WSDL definitions are examples of conflating these two kinds of verbs, those for coordination and those for action.

Verbs for Doing One Thing Well

One "take away" from this essay by Bill de Hora on the problems is there are significant problems with overloading POST in HTTP as well as falling back to defining new verbs beyond those in WS-Transfer.

Here's the root of the problem with these vocabularies.

I wrote last year...

Every web site that implements custom behavior using forms with GET or POST is an example of the open ended nature of HTTP per se. The architectural style of REST supports the HTTP transport protocol underlying these forms moving across the web, but the application protocol, that is, the behavior of the forms on the client and especially on the server is defined (at least in code) by each specific instance.

Distributed systems wishing to use HTTP, or more generally REST, to perform coordinated work will therefore require some more specifically defined application interface than that provided by REST, or that provided by HTTP.

(Of course I no longer refer to HTTP as a *transport* layer protocol!)

The problem I believe is that the verbs in HTTP as well as in WS-Transfer are attempting to accomodate not only message coordination, but also participant behavior. The problem is developers, if not the specification authors themselves, are thinking of these protocols as communication between a second-class participant (the "client", if you will) and a first-class participant (the "server", if you will).

Our habit is to attempt to overload the verbs of these protocols with our desired "server-side" behavior. This is what happens in the current Web (Web 1.0) where the client is the browser and the server is assumed in most cases to be a database-backed web site. The web site essentially provides the illusion of trees of static pages, but we allow for dynamic update, mostly through forms.

This does not translate cleanly to Web 2.0 with dynamic networks of peers coordinating nearly autonomous actions through semi-structured messages. Overloading verbs such as POST or extending "fixed" vocabularies such as WS-Transfer, as Bill and others have shown, is not "loosely coupled".

The more clean solution I think is to allow each verb in a small fixed set to do one thing well. And that one thing should not be overloaded. Ever.

A good way to do this is to separate message coordination from participant behavior. This requires at least the conceptual or logical separation of the message store (i.e. what was the tree of pages in Web 1.0) from *all* participants, including that participant we want so much to call "the server".

Again, a tuple space is a model for this separation of concerns. The tuple space is the message store. The verbs for coordinating messages into and out of that store never have anything to do with the behavior of any participant. Each verb does one thing well with no overloading and no extension. (There has been a good deal of research into what's the right set of verbs, but the core is pretty solid.)

In this world, the decision of what verb to use for rebooting a machine is moot. The message store is merely a location for storing messages participating in a conversation. If one of those participants choosing to reboot (or reboot something else) then that is the responsibility of the participants in the system.

This side effect is decidedly *not* the responsibility of the verbs used to coordinate messages!

Sunday, October 10, 2004

Ingredients for Post Modern Computing

Quoting Sean McGrath from another item...

JVM + dynamic languages + XML + servlets + asynchronous messaging, which, to my way of thinking, are most of what is needed for flexible, scalable Web Services at least for the next century or so.
Let's look at these ingredients:
Asynchronous Messaging
Yes, this is the foundational paradigm.
XML
Well, yes, because that's what's expected. OK.
Servlets
OK, if you take this generically to mean some kind of simple framework for plugging in responders to external requests (e.g. see the design of SmallWiki in this PDF).
Dynamic Languages
Of course. Goes without saying.
JVM
Huh? Nope. I draw the line here. Why is the JVM necessary or desirable, even for cross-platform languages?

Patterns of Rest in Action

Sean McGrath writes...

I'm very dubious about Don's assertion, mentioned by Mark, that once you get (no pun intended) uniform interfaces based on verbs, you see the benefit of creating domain-specific, verb-based interfaces.
Verb-oriented developers should read a couple of foundational books (i.e. this and this) to see "rest-like" counter patterns and examples.

Blog Archive

About Me

Portland, Oregon, United States
I'm usually writing from my favorite location on the planet, the pacific northwest of the u.s. I write for myself only and unless otherwise specified my posts here should not be taken as representing an official position of my employer. Contact me at my gee mail account, username patrickdlogan.