Category Archives: Uncategorized

Runoffs Report – Tuesday

For my thousands of adoring fans (!) who read this, I thought I’d post a quick note about how things are going here at the Valvoline Runoffs.

I returned to Mid-Ohio from Seattle in time for testing on Friday and Saturday; I was running ok, nothing spectacular; I seemed to always be a few tenths off of the fastest guys.  Pretty close, nothing to worry about.

Sunday was raining all day, hopefully not an indication of things to come.  This was an off day; I wasn’t testing, so we just cleaned up the car and got it through the required technical inspection.  All went well.

Monday was the official start to the runoffs, and we had our practice session in the morning.  This also went pretty well; I went out on factory-shaved tires (about 4/32″ tread depth), on their second heat cycle; I had the 6th fastest time (1:41.9) out of the 29 cars entered.  Not too bad, I figure…we can work with that.

This morning we had our first qualifying session; there are 3 total qualifying sessions, one today, one Wednesday, and one Thursday.  We line up for qualifying according to a random draw; I was lucky enough to draw #1, so I went out first in line for the session.  I ran on shaved tires (2/32″), on their second heat cycle.  I had clear track ahead of me for about 10 laps, and managed to turn a 1:41.7, which is good for 6th position on the provisional grid.  Unfortunately for me, the provisional polesitter cooked off a 1:40.7, and I just have no idea where I’m going to find another second – a second is an eternity on a racetrack.  Just to give you an idea how fast this guy is, the second fastest qualifyer had a 1:42.2 – half a second slower.  Third fastest was, I believe, a 1:41.5 – and the field is pretty tight after that.

Anyway, hope this didn’t bore you all too much…I’ll post updates if I get some time.  And if I don’t post anything, and you just can’t stand it, I believe official qualifying and race results will be posted here as they are made available.

BEA and IBM on Web Services Development

BEA, IBM spar on Web services development. Companies exchange platform insults [InfoWorld: Top News] [via Sam Gentile]

“BEA in a statement said it found that the development of a Web service to accept and confirm an employee ID number took developers only five steps with Workshop as opposed to 28 steps in IBM’s platform to partially replicate the same Web service.”

Hmm…does it really matter if it takes 5 clicks or 28 clicks to generate my web service?  Maybe the first time I do it, I might care…but once I’m familiar with the tools, and I know what I’m doing, it doesn’t matter too much.  And I’m not going to be able to deploy that 5-click web service anyway – there’s a lot more involved in deploying a web service than running through a wizard.

As an aside, I’ve used IBM’s tools (WSAD) for quick-starting web services briefly, and I gotta tell you, it was certainly not as, uh, intuitive as I might have hoped.  Of course I’m probably spoiled by Visual Studio .NET.  :-)

Where am I?

Well, it’s been more than a week since my last posting…and it’s probably going to be a bit thin for the next couple of weeks as well.  As much as I want to pour out my thoughts about binary XML representations (seriously!  I think we need such a beast), I don’t have time to organize my thoughts about it at the moment.

I’m trying to get ready for the SCCA Valvoline Runoffs.  This is sometimes referred to as the “olympics of amateur motorsports.”  It’s at the Mid-Ohio Sports Car Course, which is a phenomenal track; probably the most difficult and technical track I’ve ever driven.  I was out there this last weekend testing and doing a double regional race, trying to get some much-needed track time.  The regionals actually went pretty well; on Saturday, I qualified 7th (out of 28), and finished 1st…and on Sunday, qualified on the pole and finished 1st.  Things are looking good so far, but the best drivers in the country will be at the runoffs…and my lap times from this past weekend would probably only be good for mid-pack at the runoffs.  My goal this year is a top-ten finish; we’ll see how it goes…I need to get some good testing time in at the end of this week, and get those lap times down where they need to be.

So this week, I’m out in Seattle with a client; then I’ll be back at Mid-Ohio testing Friday and Saturday, and the runoffs start next week.  So, not sure how much I’ll be posting…but I’ll probably try to post a couple of quick updates throughout the week next week so you all know how it’s going.

Digest Authentication on Windows XP

I was working with Greg’s authentication samples at work and I discovered a very irritating behavior with IIS on XP Professional. It seems that Digest Authentication is on by default, and the management UI doesn’t allow you to shut it off.

After some experimentation (and Greg’s suggestion), I determined that you can use the IIS ADSI interface to shut off Digest. Here’s a little bit of VBScript that does the trick on the root of the site: […]

[Gordon Weakliem’s Radio Weblog]

Thanks for posting this, Gordon.  It’s worth noting that this behavior only occurs on Windows XP machines that are members of a domain; stand-alone machines do not have the problem.  I have updated the original article with this info.

RPC vs. Document WSDL encoding

“There is very little reason for folks to quibble over programming models when the choice is rpc/enc or rpc/lit, but the difference between doc and rpc is clear, it’s the choice between send(document) vs someOperation(parameters[]).  The programming model does matter.” [snellspace]

I disagree there’s a difference between doc and rpc. Your comment shows that you’re paying too much attention to the fact that that WSDL portTypes have an element call with a name. Let’s rename that to “” with an optional name for now. The reason the name was put in was so that you could refer to it later for bindings. However, there was NEVER any intent that the name would actually show up in the actual wire message. So, again we’re down to “how do you want to program to that service?” Some like to program with XML directly – so then generate a send(org.w3c.dom.Document) method. If you want to deal with language objects, map that schema to a language type and generate a method that has that as an argument. What’s the difference between the two? None, I maintain.  [Sanjiva Weerawarana’s Radio Weblog]

I agree with parts of both of the above.  First, I think there is a philosophical difference between RPC-style and document-style API’s.  As mentioned above, there really is a difference (to the API consumer) between send(document) and send(parameters[]).  It’s subtle, but for certain classes of problems it’s a real difference.  It may not be programmatically/syntactically different in some cases, but it might be a different manner of thinking.

Now on the other hand, I think this is all pretty orthogonal to the difference between rpc/encoded and document/literal.  You can certainly build a RPC-style web service using doc/literal encoding.  Your RPC messages will be defined via schema, rather than section 5 encoding, but the end result can certainly be the same.  To me, the encoding style specified in the WSDL defines the message format; but not the API “style”.

Great Developers

So I’m sitting here thinking about What makes a Great Developer.

Now just to poke a bit of fun ;-)

I quote – “A lean company needs to make sure that they hire only the most productive, self-directed, and creative development staff possible”. I’m wondering, does a company ever state “Let’s hire the least productive, wanderers, who couldn’t have an original thought if it was implanted in their brain”? ;-)

Seriously though. All companies want to hire the best.  [News from the Forest]

Well, at many large companies I’ve worked with (with a couple notable exceptions), they will hire “average” developers, simply because they have a need to staff up quickly and they can’t take the time to look for the “best”.  My philosophy is the opposite; if someone who’s really, really good appears on your doorstep, you’d better try to hire him (her) whether you need to staff up or not; because if you don’t, he’s (she’s) not going to be available tomorrow.  You also better come up with something exciting for them to work on.  Of course there are business issues with this, and it may not apply in all situations…

But if you can build a team comprised solely of really, really good people, you can do some amazing things.

More XML Tolerance

An answer (only partially quoted here) from Justin (red emphasis is mine):

That is the long answer – the short answer is I don’t know that I WANT a tolerant web service. I’m just seeing what they have to offer.

Now one place that I have been using a lot of tolerant web services is when it comes to people putting data into our platform. We have a baseline of information that we support. But we are going to allow people to add in extra data (insurance policy numbers, driver IDs, etc.). This has to be open and extensible. I have to be tolerant of stuff coming in that I don’t understand. I do this today with XML Schema “any” construct. This is very similar to .NET My Services. What are the colors? blue for predefined required elements, red for predefined optional elements, and black for unknown. .NET My Services won’t allow you to use black elements in queries. My system does (well…it will :-) .NET My Services introduced me to HSDL which is much more feature complete than what I was working on. So I dumped mine and moved onto it.

That is the best example of a tolerant system that I can think of. But again the tolerance comes from a well known point in the XML. So maybe that isn’t a good definition of tolerant. [News from the Forest]

Hopefully I didn’t trim this so much that I changed his meaning; I encourage you to read his whole response.  The points I highlighted in red are describing a xsd:any schema element, where the document extensibility (“tolerance”) would occur.  This is all I’ve been advocating…be extensible, be tolerant, but draw the line in the sand with your schema.

And hopefully Gordon doesn’t have a #FF0000 filter on his news aggregator.  :-)

XML Tolerance

Don talks about The dark side of tolerance. While there is no standard that I know of, I have been using a homegrown header for warning users of bad XML. I’ve built some fairly tolerant web services in the past few months for my own research.

For example, I allow you to post data as an element or an attribute, and I’ll grab the data from which ever one is present. If both are present, I grab the attribute and warn them that there was duplicate data in an element.

If they pass in elements or attributes that I don’t understand, I list them all out in a return header for them to see.

This all works pretty well. Right now I’m only handling extra data, duplicate data, and pulling data from multiple sources (element or attribute).

I did all this to answer a question. How tolerant should I be? [News from the Forest]

I’m still not convinced.  This related to the loosely coupled web services discussion we’ve been having, and I’m still not convinced that we shouldn’t be doing a schema validation on the input to our web services.  If you want extensibility, use a xsd:any extensibility node; if you want parameters to be optional, mark them as such with minOccurs=’0′. 

Justin, what is your reasoning behind wanting to have your web service be tolerant of what might be described as malformed input?