As part of the event, I'll be doing a full day pre-con workshop covering distributed object-oriented archtiecture, design and programming concepts based on the concepts and code from my Business Objects books. This means that the workshop not only provides a lot of good theory, but also very practical demonstrations on how to apply that theory using the CSLA .NET framework. I will not only cover the framework as described in the books, but also all the enhancements to the framework since that point - including the most recent enhancements present in version 1.5 of the framework.

This Thursday is the American Thanksgiving holiday. Over the years it has become a general holiday for giving thanks for all that we have, both as a country and as individuals. There is great power in spending time thinking about good things – things worth being thankful for. Whether you thank God, the Goddess, the fates or the universe in general, this is a time for reflection and thanks.

And so I wanted to take this opportunity to list some things for which I’m thankful:

I am glad that I am not alone in my constant seeking of the deeper truth behind the mysteries of the universe and God.

The fact that we live in a universe filled with complexity and wonder is a gift to be treasured.

My wife, who is the best and most wonderful person and friend I could ever hope for

My sons, who are a constant source of joy and energy and hope for the future

My parents, who have been there through thick and thin and have truly shown that blood is thicker than water

My brother, who has always been a best friend – and his family, who also great friends

My in-laws, who have taken me in as their own son

My friends, steadfast and true

My colleagues and friends at Magenic and in the broader computer industry, who are an inspiration in many ways

I am fortunate indeed to travel through life in such company as this!

I am also thankful for all the support I get from people who’ve read my books and articles, or have seen me speak at conferences or user groups. I get a regular stream of emails from around the world, and I count myself lucky to be able to interact with so many wonderful people.

Minnesota, land of 10,000 lakes and huge tracts of wilderness and of sun and snow – all of which replenish my spirit

The ability to hunt and fish and hike and camp and canoe and to truly enjoy this awesome state

Our incredibly interesting and diverse politics – unique in many ways; ever changing, unpredictable and not overly tied to the quagmire of the national parties

Given my career, I could live almost anywhere. People ask “why Minnesota?” But Minnesota is beautiful in the summer, fall, winter and spring. Every season has something different to offer.

I am thankful for the freedoms we enjoy in America. Recent events, global and domestic, have driven home the incredible value of the freedoms guaranteed in the Bill of Rights, and I think have shown how fragile they are in the face of adversity

Thank you to the men and women in the armed forces, now and over the past 200+ years. Regardless of the political rights or wrongs, the people serving in our military are brave, selfless and deserve our gratitude

Is our country perfect? No. But we are collectively always striving for better. Better for us and for our children. I am thankful to live in a nation founded on the idea of freedom of expression, religion and the pursuit of happiness.

I have been fortunate enough to travel to many parts of the world. I love seeing different peoples, different countries and different cities. Every time I travel it reminds me that we are all much more alike than we are different, and that gives me great hope for the future of mankind

I have also been fortunate enough to travel in much of the US. Like the rest of the world, the peoples of the US are more alike than different. Yet it is our diversity that is compelling, and which makes us strong and for that I am thankful

I’ve been to Spain, California, New York, Canada, Mexico, Florida, Britain, France, Morocco, Alabama, the Netherlands, Australia and many other places. Everywhere I’ve been there’s a constant drive for human dignity, for the betterment of the world and love for children. People work and eat and sleep and play and love. We are all much more alike than we are different.

I believe that most people around the world spend their time in labors of love not hatred, and for that I am forever thankful.

For some time now I’ve been writing relatively cautionary entries on service-orientation. Speculating whether it is really anything new, or is just another communication scheme not unlike RPC, DCOM, RMI and others before. It seems that Grady Booch is of a similar mind, suggesting that SOA is not the be-all-and-end-all of architectures, and that it may not be an architecture at all.

In a couple weeks I’m giving the keynote at the Heartland Developer’s Conference in Des Moines. I’ll be talking about service-orientation from a historical perspective. How does it relate and compare to procedural, object-oriented and component-based schemes, as well as client/server and n-tier. In putting together the presentation, I had to formalize a lot of my thoughts on the topic, and the more I’ve considered it, the more skeptical I have become that service-orientation or SOA is a tangibly new thing.

If it is tangibly new, then it is a new way of thinking or conceptualizing the problem space, not a new technology solution. Web services, SOAP, XML and related technologies are merely incrementally new twists on very old ideas. In and of themselves they offer nothing terribly new from an architecture perspective.

But SOA itself isn’t about technology. It is about a new way of modeling reality. It is very data-centric and thus is diametrically opposed to object-orientation. It is much more similar to the older procedural world-view, where data is passive and procedures are the only active entities in a system.

But it isn’t really procedural either, at least not in a traditional sense. This is because procedural design has an underlying assumption that procedure calls are virtually free. In an SO model, service calls have very high overhead – or at least we must assume they do, because that is one possible (and likely) deployment scenario.

Ultimately SO appears to be procedural programming, with the addition of high overhead per call (thus forcing serious granularity changes in design) and dynamic negotiation of the communication semantics (protocol, orthogonal services, etc.) – though there’s no real implementation yet of this dynamic negotiation… And even that isn’t really an architecture thing as much as technological coolness.

So in the end, SO is procedural programming redux, with the caveat that the procedures are very expensive and should be called rarely. Kinda boring in that light…

Or, as I’ll say in my keynote, SO could be emergent (as defined here and here). It could be that the new combination of old concepts and simpler ideas combine to make something new and unexpected. Something that isn’t obvious. Much the same way the simple moves of individual chess pieces combine to create a highly sophisticated whole. The end result is certainly not obvious based on the simplicity of the core rules. And if SO is emergent, then it is far from boring!!

Only time will tell. The next decade will be quite interesting in this regard.

According to this article yesterday's turnout was the highest in 3 decades, with just under 60% of eligible voters actually giving any thought regarding what happens to them.

It boggles my mind that over 40% of Americans chose to allow the rest of us decide their fate.

Look around you. Of every five people you see, two of them abandoned their civic and patriotic duty yesterday. Effectively they surrendered their rights as American citizens and gave them to the rest of us.

What are you people? Apathetic? Disillusioned? Dim?

To make matters worse, we already have people claiming that Bush had a “decisive” victory. Nothing is decisive when nearly half your population has decided to be voiceless chattel...

What this really means is that the results are more along this line:

Bush

30%

Kerry

28%

Nader or other

1%

Voiceless chattel

41%

So Bush’s “decisive” victory is due to less than 1/3 of the eligible voter support.

Regardless of your political leanings, if you are a US citizen it is your civic duty to get out and vote, so please make sure to take the time today and make it to the polls.

If Minneapolis is any indication, allow extra time this year. There are already lines, and there are a lot people doing same-day registration as well.

I realize that we are all autonomous entities (to tie this to SOA). This means we have self-determination and can make our own choices to do or not do things. Just like the entities that make up services.

But self-determination is the secondary definition. Autonomy's primary meaning is self-governance. And if you don't vote today then you are giving up that primary meaning to the rest of America. You are allowing others to choose your future and the future of our nation.

Just think what will happen when SOA becomes reality in our software. We’ll have autonomous entities (the implementation behind a service) deciding whether it wants to do its “civic duty” or not. Because these entities are autonomous, they’ll be programmed with self-determination and self-governance. They can say “no, I don’t feel like waiting in that queue” and just blow off client requests.

For decades our industry has been trying to create software models of the real world. SOA finally acknowledges that software entities need to be autonomous to reflect the real world. Some 40% of US citizens are likely to exercise their autonomy today by choosing to avoid self-governance and to give that responsibility to the rest of us. If 40% of our software entities started exercising their autonomy in a similar fashion I wonder what would happen…

The point being that service-oriented design might allow us to model the real world better than procedural or OO or component-based design. But maybe that's not all it is cracked up to be, because real world systems aren't particularly reliable and certainly aren't deterministic...

The only quibble I have is that the first section of the document combines SOA and web services into a unified concept. I think this is too limiting, but at the same time it is workable, since services do imply a design that may be distributed. Whether you use web services or some other technology to do the distribution, the fact is that the principles listed in the document will apply.