Chris's Rants

Sunday, November 28, 2004

Sneak preview

Cerulean Studios has posted a sneak preview of Trillian's new features. Looks like we've got a winner!

I've been using Trillian as my IM client for nearly two years now. I wouldn't think of using anything else. I have contacts on MSN, Yahoo!, AIM, Sametime and IRC. Normally, that would mean running four and sometimes five IM clients all the time, sucking up all my system's resources. Trillian unifies all IM into a single client.

The Activity History, Lookup and Serverless IM are all new. The Serverless IM looks promising for those times when a F2F must be held somewhere without access to the internet.

Can't wait to take it for a test drive!

1 Comments:

  • Just think if they added Skype integration..
    Mmmm - drool.

    Ian (a paid up Trillian 2.0 subscriber)

    By Anonymous Anonymous, at November 29, 2004 4:01 AM  

Post a Comment

<< Home

Saturday, November 27, 2004

TiddlyWiki

TiddlyWiki - a reusable non-linear personal web notebook is kewl:-)

0 Comments:

Post a Comment

<< Home

Thursday, November 25, 2004

Holy tryptophan, Batman!

How long does it take to cook a 25lb turkey? Not the advertised 5 1/2 hours... Apparently, the answer is 8 hours!

How long does it take to eat a 25lb turkey given 16 hungry people? Not much more than an hour:-) Everything came out great, even though it was two hours delayed.

Everyone's gone now, the dishes are cleaned, the food is mostly gone. But there's plenty of pie left. Even 16 people couldn't polish off the two apple, one mince meat, one pecan, and one coffee chiffon pies.

It's been a long day, I need a nap!

0 Comments:

Post a Comment

<< Home

In My Next Life

Tom Friedman: In My Next Life:
"If I can't be Tom DeLay, then I want to be one of the gutless Republican House members who voted to twist the rules for DeLay out of fear that 'the Hammer,' as they call him, might retaliate by taking away a coveted committee position or maybe a parking place."
...
If I can't be The Man, then I at least want to be the owner of a Hummer - with American flag decals all over the back bumper, because Hummer owners are, on average, a little more patriotic than you and me.

Yes, I want to drive the mother of all gas-guzzlers that gets so little mileage you have to drive from gas station to gas station. Yes, I want to drive my Hummer and never have to think that by consuming so much oil, I am making transfer payments to the worst Arab regimes that transfer money to Islamic charities that transfer money to madrassas that teach children intolerance, antipluralism and how to hate the infidels.

And when one day one of those madrassa graduates goes off and joins the jihad in Falluja and kills my neighbor's son, who is in the U.S. Army Rangers, I want to drive to his funeral in my Hummer. Yes, I want to curse his killers in front of his mother and wail aloud, "If there was only something I could do ..." And then I want to drive home in my Hummer, stopping at two gas stations along the way.
Read the rest... priceless Friedman.

0 Comments:

Post a Comment

<< Home

Why can't we have schema languages like this...

Bob Lobel, a local sportscaster in Boston, often says of ex-pat Red Sox players who do incredible things after they leave the Red Sox (like Roger Clemens, who is still kicking butt and taking names in the National Leagues years after he was let go by Red Sox manglement in the belief that he was done): "Why can't we get players like this?". The same could be said of RelaxNG in the context of Web services: "Why don't Web services use schema languages like this?".

It is sad, but true, that W3C XML Schema is the de facto schema language for Web services largely because of the significant investment in tools, etc. based on XML Schema. Yet, we struggle with versioning and extensibility because of XML Schema's UPA constraint and other limitations such as the fact that XML Schema does not have an open content model (which RelaxNG has), and we resort to writing post-schema-validation validation logic in our service's business logic to get around the limitations of pure XML Schema validation.

Elliotte Rusty Harold has written a great article on IBM's developerWorks site, RELAX NG with custom datatype libraries, which details how to extend RelaxNG with custom datatypes using Java. It is definitely worth a read.

0 Comments:

Post a Comment

<< Home

Which OS?

(Via Gudge) You are Palm OS. Punctual, straightforward and very useful.  Your mother wants you to do more with your life like your cousin Wince, but you're happy with who you are.
Which OS are You?

0 Comments:

Post a Comment

<< Home

Turkey's in the oven

... and it's a monster; +25lbs worth! It barely fits in the pan/oven. I had to get up before dawn to make the stuffing and get the bird in the oven before 6 am so that it will be done by the time everyone gets here just after noon.

I make a mean turkey, if I do say so myself. My secret is that I baste the bird with a pound of butter melted in 1.5 liters of a good chardonnay. I put a bunch of coarsely chopped carrots, onion and celery in the pan and continue basting with the pan drippings (which are mostly wine and butter in addition to the turkey juices:-).

The house smells really good, and I probably get a bit of a buzz from the aroma:-)

Happy Thanksgiving to all of you who celebrate the holiday.

I guess I have a lot to be thankful for, despite the outcome of the recent US elections. I have a family who love me, a nice house (in the middle of nowhere, or as Steve recently commented "a place so remote that only a single supply plane goes in and out of there every week"), a good job even though it does involve lots of travel... I can't complain about the frequent flier miles:-) Hey, I get to travel all over the world and hang out with really smart people... how cool is that!?

0 Comments:

Post a Comment

<< Home

Wednesday, November 24, 2004

A grown-up speaks out

John McLaughlin, former acting DCI has an op-ed piece in the WaPo this morning. A good read. In it, he dispells certain myths that pervade the "discussion" of intellegence reform; that the CIA is a "rogue" agency, that the agency is institutionally leaking information intended to do damage to el Presidente, etc.
Unlike the CIA's critics, I point no fingers. I only regret that we are in a period when intelligence is being used as a weapon -- but more against ourselves than our enemies. We should all agree that this must stop.

Many people have called for a return to civility in Washington. To me, civility means thoughtful and well-informed debate. Nowhere is this more needed than in the debate over intelligence. Like the U.S. military, our nation's intelligence officers face daunting challenges now and for years to come. Constructive criticism can help. Tirades and hyperbole will not.

0 Comments:

Post a Comment

<< Home

Tuesday, November 23, 2004

Loose coupling and WSDL versioning

I thought I would jot down some of my thoughts about loose coupling and WSDL versioning.

Some advocate that any change to a WSDL should result in a new WSDL namespace (hence, a new service) so that clients of the existing WSDL can continue to operate against the old service, while new clients can leverage the new service. Personally, I don't subscribe to that line of reasoning.

To me, a fundamental aspect of a loosely coupled system is that you can evolve the system without the need for a big bang-style simultaneous redeployment of all of its deployed components.

Now, while one might say that you could have two deployed services, and sunset the older version once all of its clients have migrated to the new service, that would require that you maintain two versions/instances of the service. This doubles the cost to host/manage the service and it means that you need to also track usage of the sunsetted service and pester its clients to upgrade.

Let's say that I wanted to extend my service's interface to add a new operation to enable a client to retrieve some new information. Sure, you could deploy a separate service for the new operation, but that would mean two services instead of one; again, more work, higher cost, etc. Additionally, access to that service would potentially require that a client that needed to access both operations would possibly be subject to a separate security session. Blech!

Instead, why not simply allow existing clients to ignore the new operation as if nothing had changed and allow newly deployed clients exploit it? Better yet, extend the original operation (assuming you left extensibility points in the right places).

Consider a stockQuote service that begins life with a simple query for the current price of a given stock. Then, by popular demand, some consumers of the service would also like to have the net change from the previous day and the 52 week high and low along with the current price.

If the schema were designed such that the additional information were returned in an extensibility point in the definition of the Quote, new clients could avail themselves of the new information, older clients could safely ignore it. No need to urgently redeploy all clients when the service is redeployed with the new functionality. Everyone is happy. (Of course, we would need the generated client code to ignore the extended content. See David Orchard's writings on XML versioning for explanation of the MustIgnore rule).

Here's the example WSDL for the original StockQuote service:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.org/StockQuote/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="StockQuote"
targetNamespace="http://example.org/StockQuote/">
<wsdl:types>
<xsd:schema
targetNamespace="http://example.org/StockQuote/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="StockQuoteResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
<xsd:element name="Value" type="xsd:float"/>
<xsd:any namespace="##any"
minOccurs="0" maxOccurs="unbounded"
processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="StockQuoteRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="StockQuoteResponse">
<wsdl:part
element="tns:StockQuoteResponse"
name="StockQuoteResponse"/>
</wsdl:message>
<wsdl:message name="StockQuoteRequest">
<wsdl:part
element="tns:StockQuoteRequest"
name="StockQuoteRequest"/>
</wsdl:message>
<wsdl:portType name="StockQuote">
<wsdl:operation name="GetQuote">
<wsdl:input message="tns:StockQuoteRequest"/>
<wsdl:output message="tns:StockQuoteResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="StockQuoteSOAP" type="tns:StockQuote">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="StockQuote">
<soap:operation
soapAction="http://example.org/StockQuote"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StockQuote">
<wsdl:port binding="tns:StockQuoteSOAP"
name="StockQuoteSOAP">
<soap:address location="http://example.org/StockQuote"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

We can add to the content of the StockQuoteResponse by exploiting the wildcard as follows:

<xsd:element name="StockQuoteResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
<xsd:element name="Value" type="xsd:float"/>
<xsd:element name="Hi" type="xsd:float"/>
<xsd:element name="Low" type="xsd:float"/>
<xsd:element name="NetChange" type="xsd:float"/>

<xsd:any namespace="##any"
minOccurs="0" maxOccurs="unbounded"
processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

This shouldn't effect the existing clients, as they should be ignoring the wildcard content.

Similarly, one should be able to add a new (optional from the perspective of existing deployed client code) operation(s) to a WSDL portType, reuse the same WSDL namespace and portType name, regenerate and redeploy the service. If you already have deployed client code that understands the old version, they will simply be oblivious of the new operation(s). No harm, no foul. New client code can be generated from the revised WSDL and exploit the new operation(s).

Here's what this might look like:
<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.org/StockQuote/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="StockQuote"
targetNamespace="http://example.org/StockQuote/">
<wsdl:types>
<xsd:schema
targetNamespace="http://example.org/StockQuote/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="StockQuoteResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
<xsd:element name="Value" type="xsd:float"/>
<xsd:any namespace="##any"
minOccurs="0" maxOccurs="unbounded"
processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AdvancedStockQuoteResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
<xsd:element name="Value" type="xsd:float"/>
<xsd:element name="Hi" type="xsd:float"/>
<xsd:element name="Low" type="xsd:float"/>
<xsd:element name="NetChange" type="xsd:float"/>
<xsd:any namespace="##any"
minOccurs="0" maxOccurs="unbounded"
processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="StockQuoteRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AdvancedStockQuoteRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Symbol" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>
</wsdl:types>
<wsdl:message name="StockQuoteResponse">
<wsdl:part
element="tns:StockQuoteResponse"
name="StockQuoteResponse"/>
</wsdl:message>
<wsdl:message name="StockQuoteRequest">
<wsdl:part
element="tns:StockQuoteRequest"
name="StockQuoteRequest"/>
</wsdl:message>
<wsdl:message
name="AdvancedStockQuoteResponse">
<wsdl:part
element="tns:AdvancedStockQuoteResponse"
name="AdvancedStockQuoteResponse"/>
</wsdl:message>
<wsdl:message name="AdvabcedStockQuoteRequest">
<wsdl:part
element="tns:AdvancedStockQuoteRequest"
name="AdvancedStockQuoteRequest"/>
</wsdl:message>

<wsdl:portType name="StockQuote">
<wsdl:operation name="GetQuote">
<wsdl:input message="tns:StockQuoteRequest"/>
<wsdl:output message="tns:StockQuoteResponse"/>
</wsdl:operation>
<wsdl:operation name="GetAdvancedQuote">
<wsdl:input message="tns:AdvancedStockQuoteRequest"/>
<wsdl:output message="tns:AdvancedStockQuoteResponse"/>
</wsdl:operation>

</wsdl:portType>
<wsdl:binding name="StockQuoteSOAP" type="tns:StockQuote">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="StockQuote">
<soap:operation
soapAction="http://example.org/StockQuote"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StockQuote">
<wsdl:port binding="tns:StockQuoteSOAP"
name="StockQuoteSOAP">
<soap:address location="http://example.org/StockQuote"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

My personal preference would lean towards the first approach outlined for this particular example, but either would be preferable to deploying a new service.

Most of the pain points with IT relate to the difficulty of evolving tightly-coupled systems because it requires such significant amounts of management and coordination, often requiring far more resources to effect than technical aspect of the change itself. Loose coupling helps reduce the need for coordinated versioning of client and service because it allows for a gradual evolution. That is the fundamental nature of being loosely coupled.

6 Comments:

  • I cannot agree more that compatible changes should not force big bang style upgrades across all components. But I've a few comments on your suggestions.

    a. The first solution is fine when third-parties want to extend the service. But this approach is not very convenient if the schema owners want to enhance/fix the service by making compatible changes to the schema.

    b. The second solution may not be the right option if the change being made does not alter the exposed behavior of the service. Not only that, if a client wants to talk to services with and without the change, it will have to write complicated code (like, if GetAdvancedQuote operation is offered, use it, or else use GetQuote operation). This gets ugly with most SOAP toolkits.

    - Subbu Allamaraju, posting anonymously as I don't use Blogger.

    By Anonymous Anonymous, at December 05, 2004 12:39 AM  

  • Chris,

    While I agree with you in principle about not wanting big bang changes and not wanting to maintain n versions of a service, I struggle with the details. For instance, in your first example, you extend a response message because you know the receiver (client) will ignore the pieces it doesn't recognize. But would it work on the request as well?

    Imagine that the request had a wildcard and that a new version included an element asking to filter the results somehow. If a new client sent a request to an old service, the service would ignore the filtering and the client would get an unexpected result. I think DaveO's solution to that is introducing a mustUnderstand header into the message data, but that seems like an awful step to take, given the complexity we see with mustUnderstand processing in SOAP.

    There is a similar issue with extending an existing WSDL portType definition with a new operation. It works fine as long as you have one instance of the service and it revs before its clients do. But if you have more than one instance of the service and/or clients may start trying to use the new operation before a service is updated, then requests that conform to the contract the service claims to support will fail.

    Tim Ewald

    By Anonymous Anonymous, at December 07, 2004 1:39 PM  

  • If I added an operation to an existing WSDL namespace, client services would be unable to use a service locator like UDDI to identify services supporting the new operation, right? The namespace might represent a service supporting the new operation, or it might not. Doesn't this mean if I want t support service discovery in this way I really should mint a new URI for a new interface?

    By Blogger hughw, at September 21, 2005 2:42 PM  

  • Doesn't the "any" wildcard defy the Unique Particle Attribution constraint? How do you go about that in inserting extension points in your message parts?

    By Blogger Eco-nemesis, at April 29, 2009 5:22 PM  

  • Who knows where to download XRumer 5.0 Palladium?
    Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!

    By Anonymous Anonymous, at November 21, 2009 11:09 AM  

  • Hello, I do not agree with the previous commentator - not so simple

    By Anonymous cialis, at November 24, 2010 4:47 AM  

Post a Comment

<< Home

DNS-EPD Internet Draft updated

My colleague, James Snell, has a post detailing some of the changes in the update to his IETF DNS-EPD Internet Draft. DNS-EPD (Endpoint Discovery using DNS) is a pretty neat concept that leverages the existing deployed DNS infrastructure for resolving Web services endpoints.

0 Comments:

Post a Comment

<< Home

NE Geek dinner

Glen has started a mailing list for us geeks in the NE (Ma/NH/Vt/Me/RI) area.
Our first gathering is slated for this Friday at 6PM at Joe's American Bar and Grill in Woburn - if you'd like to come to that one, please make sure to let me know so I can get the reservation right.
Come on down (or up, or left, or right as the case may be).

Update: if you plan on attending, please RSVP with Glen.

0 Comments:

Post a Comment

<< Home

Monday, November 22, 2004

Tom Schales blasts Powell

Not Colin, but is idiot son Michael, the FCC Chairman. Michael Powell Exposed! The FCC Chairman Has No Clothes (washingtonpost.com):
Powell belongs at the bottom of the barrel with the lowliest of the bunch. He is an agenda masquerading as a man, the proverbial pompous ass and, worse, a genuine threat to freedom of speech. But on CNBC, he was playing Santa Claus. "I am still having fun," he said merrily, as if that were part of the job. "There are still things that are really significantly important to me to complete. Right now, I just have no plans of going anywhere."

That's the problem. If he were looking for places to go, I could suggest one in a snap. But it's a four-letter word and, who knows, I might end up in jail.

0 Comments:

Post a Comment

<< Home

Slippery slope of media self-sensorship

Frank Rich, one of my favorite journalists, writes a compelling piece in Sunday's NYT opines on the slippery slope of media self-sensorship.
As American soldiers were dying in Falluja, some Americans back home spent Veteran's Day mocking the very ideal our armed forces are fighting for ­ freedom. Ludicrous as it sounds, 66 ABC affiliates revolted against their own network and refused to broadcast "Saving Private Ryan." The reason: fear. Not fear of terrorism or fear of low ratings but fear that their own government would punish them for exercising freedom of speech.

If the Federal Communications Commission could slap NBC after Bono used an expletive to celebrate winning a Golden Globe, then not even Steven Spielberg's celebration of World War II heroism could be immune from censorship. The American Family Association, which mobilized the mob against "Ryan," was in full blaster-fax and e-mail rage. Its scrupulous investigation had found that the movie's soldiers not only invoked the Bono word 21 times but also, perhaps even more indecently, re-enacted "graphic violence" in the battle scenes. How dare those servicemen impose their filthy mouths and spilled innards on decent American families! In our new politically correct American culture, war is always heck.
...
As the crunch comes, we'll learn whether media companies will continue to test such Iraq war stories against "reality-based" reportage, or whether they'll kowtow to an emboldened administration, spurred on by its self-proclaimed mandate and its hard-right auxiliary groups, that can reward or punish them at will. For now the most dominant Falluja image has been that of the "Marlboro Man" ­ the Los Angeles Times photo of the brave American marine James Blake Miller, his face bloodied and soiled by combat, his expression resolute. It is, as Mr. Rumsfeld might say, a slice of truth. But other slices ­ like the airlifting of hundreds of American troops to Germany to be treated for the traumatic fallout of Falluja's graphic violence ­ are, like "Saving Private Ryan" on Veteran's Day, missing from too many Americans' screens.

0 Comments:

Post a Comment

<< Home

Hello Alberto!

Hello Alberto! LOL!

0 Comments:

Post a Comment

<< Home

Kevin Sites Blog

The reporter who caught the mosque killing incident in Falluja writes about the incident in his blog.
So here, ultimately, is how it all plays out: when the Iraqi man in the mosque posed a threat, he was your enemy; when he was subdued he was your responsibility; when he was killed in front of my eyes and my camera -- the story of his death became my responsibility.

The burdens of war, as you so well know, are unforgiving for all of us.


Powerful stuff.

0 Comments:

Post a Comment

<< Home

Serprahze, serprahze, serprahze...

The WaPo reports that commanders in Iraq say need more troops. How conveeeeenient that this minor detail never surfaced before the election.

But wait, I thought we had "broken the backs of the insurgents" only last week...

That giant sucking sound you hear isn't NAFTA, it's the the disaster in Iraq that will more likely than not require that the draft be reinstated. Who will be the next Joseph Heller to write the Iraqi version of Catch-22? Think your spouse, sibling's or child's unit was coming home for Christmas? Think again.

What is really sad though is that all of this could have been avoided had Dubya had the sense that his father had and listened to Colin Powell. Instead, he listened to the war criminal faction of the administration; Cheney, Rumsfeld and his incompetent "work wife".

All through the campaign season, fearless leader insisted that if the commanders on the ground asked for more troops, they would get them... but they hadn't asked yet. What a crock of shit. They had been screaming that there were inadequate troops all along but the messages either never made it to, or never left, central command. It simply wouldn't have looked good for "Big" to have this news hit the fan during the campaign.

But now, with the election behind him, Dubya can kick back on his new yacht and sip near beer, or whatever it is that former alcoloholics drink, while the middle-east goes to hell in a hand-basket of his making.

If there's any consolation to the election results, it is that Dubya has to clean up the mess he made. My worst fear though is that he will only make things worse as has been signalled by his cabinet appointments (firing the one member of his cabinet with half a brain and a conscience, and replacing him with the most incompetent member of his staff) and administration statements about Iran which seems eerily similar to the drumbeat of messaging about Iraq and WMD in the run up to the war.

0 Comments:

Post a Comment

<< Home

Saturday, November 20, 2004

Power corrupts...

... and absolute power corrups absolutely.

This is a big deal.

Think that the Patriot Act put a damper on your civil liberties? The Patriot Act is small potatoes compared to this provision of the omnibus appropriations bill that was just approved by the Senate:
"Hereinafter, notwithstanding any other provision of law governing the disclosure of income tax returns or return information, upon written request of the Chairman of the House or Senate Committee on Appropriations, the Commissioner of the Internal Revenue Service shall allow agents designated by such Chairman access to Internal Revenue Service facilities and any tax returns or return information contained therein."
The Republicans just got caught with their hand in the proverbial cookie jar.

What assholes.

Of course, this is symptomatic of the larger problem that has plagued congress for years. The bills they vote on are too large, too complicated, and rushed to the floor too quickly for anyone to have a clear understanding of what it is that they are expected to approve. This is the same problem that we had with the Partiot Act. No one had really read the whole thing. About all your representatives ever saw was a summary of a summary of a summary of a summary.

This has to end.

Write your congress-critter and tell them what you think.



0 Comments:

Post a Comment

<< Home

Visited countries & US states

I've added Denmark to the list with my trip to JAOO.



create your own visited country map

I have added Nevada and Hawaii this year.



create your own personalized map of the USA

0 Comments:

Post a Comment

<< Home

Thursday, November 18, 2004

Tim gets it right

Tim Ewald on The role of objects in service-oriented systems
The problem was brittle systems that had to be deployed en masse.

0 Comments:

Post a Comment

<< Home

Rich rips WSDL2.0 a new one

Hey Rich, tell us how you really feel :-)

0 Comments:

Post a Comment

<< Home

Saturday, November 13, 2004

WS-Transfer != BP1.x conformant

Oops! Apparently, the WS-Transfer "Get" operation is not WS-I Basic Profile 1.x conformant.

The WSDL definition for the GET operation is defined as follows:
<wsdl:definitions ...>

...
<wsdl:message name="Empty"/>
<wsdl:message name="AnyXml">
<wsdl:part name="data" type="tns:AnyXmlType"/>
</wsdl:message>
...
<wsdl:portType name="Resource">
...
<wsdl:operation name="Get">
<wsdl:input message="tns:Empty"/>
<wsdl:output message="tns:AnyXml"/>
</wsdl:operation>
...
</wsdl:portType>
...
</wsdl:definitions>
Note that the message part "data" uses the 'type' attribute and binds the tns:AnyXmlType, which is a complexType in the WS-Transfer schema.

The WS-I Basic Profile 1.1 contains the following requirements:
R2204 A document-literal binding in a DESCRIPTION MUST refer, in each of its soapbind:body element(s), only to wsdl:part element(s) that have been defined using the element attribute.

R2207 A wsdl:message in a DESCRIPTION MAY contain wsdl:parts that use the elements attribute provided those wsdl:parts are not referred to by a soapbind:body in an rpc-literal binding.

R2729 An ENVELOPE described with an rpc-literal binding that is a response MUST have a wrapper element whose name is the corresponding wsdl:operation name suffixed with the string "Response".
Thus, one must conclude that the only possible binding for the "Get" operation would be an rpc-literal binding, and the response message must have a wrapper element with a local name of "GetResponse". However, the example in the spec for the GetResponse message is as follows:
<s:Envelope ...>

<s:Header ...>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse
</wsa:Action>
<wsa:RelatesTo>xs:anyURI</wsa:RelatesTo>
<wsa:To>xs:anyURI</wsa:To>
...
</s:Header>
<s:Body ...>
xs:any
</s:Body>
</s:Envelope>
The response message should actually be:
<s:Envelope ...>

<s:Header ...>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse
</wsa:Action>
<wsa:RelatesTo>xs:anyURI</wsa:RelatesTo>
<wsa:To>xs:anyURI</wsa:To>
...
</s:Header>
<s:Body ...>
<wxf:GetResponse xmlns:wxf="http://schemas.xmlsoap.org/ws/2004/09/transfer">
xs:any
</wxf:GetResponse>

</s:Body>
</s:Envelope>
My guess is that this is not what the authors intended (since Microsoft doesn't support rpc-literal WSDL bindings). In fact, there is no way to describe in WSDL1.1 a doc-literal operation that has an input or output message with unspecified content.

I actually think that a more appropriate approach to handling WS-Transfer's "Get" would be to specify the output message as you would any doc-literal operation and merely annotate the operation with the appropriate wsa:Action attribute values. Thus, the consumer of the WSDL could determine what to expect in response to a "Get" while at the same time, implementations of the "Get" operation could use it to retrieve arbitrary content as was intended.

e.g.
<wsdl:definitions ...>

...
<wsdl:message name="Empty"/>
<wsdl:message name="MyMessage">
<wsdl:part name="data" element="tns:MyElement"/>
</wsdl:message>
...
<wsdl:portType name="MyPortType">
...
<wsdl:operation name="Get">
<wsdl:input message="tns:Empty"
wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Get"/>
<wsdl:output message="tns:MyMessage"
wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse"/>

</wsdl:operation>
...
</wsdl:portType>
...
</wsdl:definitions>

1 Comments:

Post a Comment

<< Home

The Role of Standards Bodies

Tim Bray writes:
The right role for a standards body is to wait till the implementors have deployed things and worked out the hard bits, then write down the consensus on what works and what doesn’t.
Amen!

0 Comments:

Post a Comment

<< Home

I'm a .gif

[Via daveo]

You are .gif Sometimes you are animated, but usually you just sit there and look pretty.
Which File Extension are You?


Hmmm... at least I don't lack substance:-)

0 Comments:

Post a Comment

<< Home

Wednesday, November 03, 2004

Ugh!

It would appear as if the late victory yesterday morning, by the GOP to allow their goons to challenge voters in heavily democratic precincts in Ohio, which lead to 4 hour lines, is what won them the state... so far.

I don't think I can possibly tolerate 4 more years of these war criminals, not to mention the disaster that the Supremes will become.

Sieg Heil!

One can only hope that the chickens, which the GOP has successfully stayed off until "after the election", will come home to roost before he can do any real damage beyond that which he has already wrought.


  • CIA IG report on 9/11 that is reportedly not flattering to the President.

  • Senate investigation into the mishandling of intellegence in the lead up to the war in Iraq.

  • Wheels coming off in Iraq



I'm too tired to recall off the top of my head all the other things that had been put off until after the election... the list is non-trivial.

I simply can't believe that the American people were so ignorant as to think it a good idea to vote for the worst President ever.

Harkening back to yesterday's post, we really do need to fix the mess that is our electoral system.

I wonder when we pre-emptively invade Iran and Syria?

0 Comments:

Post a Comment

<< Home

Tuesday, November 02, 2004

And we call this democracy?

Today's the day.

Yet, sitting in my hotel room in Florida, I am reminded just how screwed up our electoral system is. I was listening to NPR the other day and they had on a guy who reminded us that there is in fact nothing in the Constitution that grants us the right to vote. The means by which the state electors are chosen is something that each state legislature determines. In this day and age, this seems to me to be totally nuts.

In 2000, we had about a 60% turnout nation-wide. This year, they are predicting up to 75% which is a significant improvement, and yet in countries that people don't typically associate with democracy, there is upwards of 90% turnout. Some countries, it is mandatory. I recall the elections this summer in Indonesia in which voting occurred over the course of a week.

This year, we have all read of the various scandals surrounding electronic voting machines that have no paper audit trail, which opens the system up to fraud and hacking. Yet, the ATM machines manufactured by the same electronic voting machine vendors all have an option for a paper receipt. Some states, such as Nevada, a state that is steeped in electronic gaming machine technology have laws on the books requiring paper audit trails that can be used to independently verify the results. California recently decertified some 13,000 Deibold voting machines because the company lied about changes that it promised to institute following the elections in 2002.

After the disaster down here in Florida 4 years ago, you would think that the administration and congress would have been falling all ovder themselves to address the problems. Sure, they eventually passed the HAVA act, but it was too little, too late and has left us with a whole new set of problems this time around such as clearing up issues surrounding provisional balloting amongst others.

The electoral college divides the country into "battleground vs non-battleground" states, which means that candidates can ignore 75% of the country and focus their attention on 10-12 states that hang in the balance. Worse, as we saw in 2000, the winner may not need to actually win the general election so long as they win the necessary 270 electoral votes.

As the supposed home of democracy, we should be able to do better. In fact, I believe we must.

The electoral college should be abolished. This would make each individual's vote count equally. The right to vote should be granted to every citizen, and possibly to every legal resident alien (hey, they have a stake in this as well), over the age of 18 by the constitution. There should be federal laws that mandate independent paper trails. Should electronic voting be legalized, the software and hardware should be open to public scrutiny and independent audit. Personally, I don't think that we're ready for electornic voting, nor will we be in this decade. I am very concerned that there will be system failures and/or fraud this year, especially in those precincts that have no independent paper audit trail. I certainly hope that there is none, but there is simply too much potential and the stakes are so high.

The laws that define the rules for being listed on a ballot should be normalized across the country. Rather than petitions, it should maybe be determined by a primary process. We should probably also have a requirement for a majority vote. Requiring a run-off election in the event that no candidate receives a majority vote.

Finally, something must be done to address the campaign finance disaster. The airwaves belong to the public, and I believe that the networks have an obligation to offer up equal time to the candidates that is paid for with public funds. As with the U.K. and other countries, the election "season" needs to be limited. This nonsense of having year-long campaigns is completely unnecessary. Finally, there needs to be a higher bar for the supposed "free speech" that permitted the Swift Boat Veterans for Truth to get away with slander.

However, the only way that we can hope that the system will be improved will be for us, as citizens, to stand up and demand it of our representatives.

0 Comments:

Post a Comment

<< Home