Gregor's Ramblings
Home Patterns Ramblings Articles Talks Download Links Books Contact

Googlesoft

September 18 2005

ABOUT ME
Gregor Hohpe
Hi, I am Gregor Hohpe, co-author of the book Enterprise Integration Patterns. I like to work on and write about asynchronous messaging systems, service-oriented architectures, and all sorts of enterprise computing and architecture topics. I am also the Chief Architect at Allianz SE, one of the largest insurance companies in the world.
RAMBLINGS
Here I share my thoughts and ideas on a semi-regular basis. I call these notes "ramblings" because they are typically based on my personal opinions and observations as opposed to official "articles".

Google Meets Microsoft

My biggest fear of joining Google was that I would be living somewhat on "borrowed time" as far as my participation in Microsoft events is concerned. I have a lot of good friends at Microsoft and I am a still an MVP so I am not yet ready to give up my connections into that universe for quite some time to come. However, being on stage at a Microsoft event with a Google badge (and with a straight face) is a bit harder. Therefore, I was particularly happy to be invited to this year’s PDC, Microsoft’s Professional Developer Conference. It is ironic that in my years working as a consultant with a lot of Microsoft technologies I never got to go to PDC. Now that I work for Google I am here as a speaker :-) The part I like the best: I work for Google, speak at a Microsoft event, have an IBM laptop and just e-mailed a friend at Sun. Peace on earth :-)

One of the equally exciting and frustrating things at PDC is that when you get there people shower you with a whole set of new acronyms that get you excited about all the new stuff and disappointed when you find out that most it are new names for the same old stuff. We already knew that Longhorn is now Vista but I had missed the baptizing of Indigo into WCF – The Windows Communication Foundation. According to Don, the acronym WTF was considered but was reserved for the Windows Transaction Foundation...

Conferences are all about getting free stuff and talking to interesting people. I had a good start with Jim Newkirk taking me to the Addison-Wesley author dinner, which I crashed. Hey, my book has enough C# code to deserve a free dinner :-) Plus it was nice to hang out with Don Box, Anders Hejlsberg, David Chappell, Jim Newkirk and many others again. Speaking of publishers, The Best Software Writing was slashdotted on Thursday. I am particularly proud that my Starbucks article was pointed out specifically with a link to Google search. Now how appropriate is that? And I still think Starbucks really should buy me free drinks! After all Google buys me free lunches :-) While I am digression already let me put one more item on the stack. The conference Starbucks happened to use the (sequential) invoice number for correlation instead of the name. First of all I could not help but notice and secondly it demonstrated how much out of sequence the drinks really come when people order hot and cold drinks or multiples of the same kind. And who says going to Starbucks is not inspiring?

The free dinner was followed by free rides at the usual Universal Studios party. Actually, I can no longer imagine an amusement park without free food and 10,000 geeks. I am not sure whether that is a good thing or a bad thing :-)

By the way, PDC 2005 is the “other year” PDC, i.e. many of the previewed technologies more or less were talked about already at PDC 2 years ago. However, I did not mind at all because I did not attend last time and it seems that this time hand waving was largely replaced with actual demos. Regardless, many products are still a year or two away from GA. So while many things we got to see are very cool, patience is the order of the day.

Connected Systems Panel

PDC has very few external speakers because most presentations are previews of upcoming products, delivered by the responsible product managers or lead architects. I was lucky enough to participate in a panel on The Art and Practice of Connected Systems, part of the architecture symposium organized by Devhawk Harry Pierson. Connected Systems are a big item in Microsoft’s developer strategy, ranging from the Indigo (WCF) to the Windows Workflow Services.

The panel was the last agenda item on Friday so attendance was a bit lower than most of the sessions. I hope the people who did come got something out of it and also found it entertaining. Steve Swartz makes for a great anchor on panels and did not disappoint this time. I also enjoyed meeting and interacting with David Ing from Meridian Software. He even gave me upfront kudos in his blog! Sadly, a quick (Google) search did not reveal too much blog coverage of the panel. I personally like panels (both as panelist and attendee) because it provides real-time interaction and ad-hoc opportunity for disagreement and discussion. I see them as a nice contrast to scripted and polished presentations.

ARC Symposium

The symposium itself was based on a skid that covered topics ranging from SOA to Agile to process and domain modeling. We got to see Harry Pierson, Brenton Webster, Arvindra Sehmi, Beat Schwegler, Simon Guest and a few other usual suspects on stage. It seems that you can only be an architect if you have a funny accent... Skids are always a bit tricky but this one worked out pretty well. Here some of my take-aways. The symposium lasted 3 hours so obviously my list is a little condensed...

  • Creating business processes that cross organizational boundaries is difficult. But pretending these boundaries do not exist makes it only worse!
  • How to factor services? First, create a service model. This is what the CSI (Connected Systems Initiative) really is. It gives you a consistent way to build loosely coupled systems, consisting of base capabilities and a process on top. The process should be able to change without having to change the capabilities.
  • Contract first development: A contract is not just a WSDL document, but an abstract domain model. Don’t try to model the whole enterprise but start in an area that is small but useful. XML documents are based on composition. Conceptual contract first over schema first. Decoupling the service implementation from the public interface by using an adapter allows different transports to be configured for the core service functionality.
  • The symposium included the demo of a tool to allocate logical services to the physical infrastructure. During the mapping constraints are verified, such as requiring SSL/Port 443. Quite pretty, but the obvious question is again: how will this approach scale? What if I have 100 modules and 300 servers? Would I rather have a command language than a 5’ x 6’ diagram that I am trying to fit onto a 19” screen?
  • One of the key themes was modeling. One slide highlighted the relationships between many different kinds of models, such as process models, interaction models, operational models etc. I need to get a hold of that slide.

Day 3 Keynote

Since I did not arrive until Wednesday night I missed the major keynotes on Tuesday and Wednesday. I made it to Thursday's key note about 15 minutes late. It was mostly a sequence of brief feature intros. For example, they showed a pretty nice programming model to manage clusters / grids. Also, Microsoft is making shell scripting a first class citizen with the new OO command line language Monad. Furthermore, some time in the not too distant future we will see a transactional file system that allows multiple file creation and writes in a single commit. The overhead is supposed to be in the single digit %. Sweet.

IIS 7 was also demo'd. In short, IIS has been dislodged from the OS and is now modular and can be run and configured much more like a service. Whoohoo! Here my take-aways:

  • Activation Services -- equally anticipated and overdue.
  • Configurable with XML, no restart, no metabase!
  • Modularized: for example AnonymousAuthenticationModule, DefaultDocumentModule, StaticFileModule, DirectoryListingModule. You can remove these if not needed or replace them with your own modules. Very cool.

C# 3.0

One of the most popular sessions was Anders' intro into C# 3.0 During the rerun of the session the overflow room overflowed! A good way to describe the difference between TechEd and PDS is that at TechEd US Anders talked about the new C# 2.0 features whereas at PDC he talked about C# 3.0 features. Now keep in mind that C# 2.0 has not even be released as part of the official platform...

Maybe I got suckered in by the Universal party and the free food but my impression is that in terms of language and platform design Microsoft is the big innovator these days. You might not immediately fall in love with all the proposed C# 3.0 features (language bloat is a definite concern) but the amount of innovation going into the C# language design is very impressive. 3.0 will provide lambda expressions, extension methods (I just wished for those in Java the other day), local variable type inference, object initializers, anonymous types, query expressions, and expression trees. Whew!

To me two parts of C# 3.0 are truly outstanding:

  • The CLR 2.0 already supports all the necessary features (generics, anonymous methods), so C# 3.0 does not require any CLR changes. Essentially, Linq is the “Cherry” that Don and Anders put on top of C# 2.0.
  • The language features that are being added to the language appear to play very well together and form a consistent set. It would be hard to imagine taking any of the features away. For example, type inference seems like syntactic sugar until you realize that it is essential when using anonymous types. How else would you declare a typed variable of a type that is anonymous? Of course anonymous types really help the readability of select statements. So it all makes sense.

Lambda Expressions

Lambda expressions are a way to pass code to a function similar to delegates or anonymous methods. In that sense they are a logical evolution of delegates. Having type inference helps tremendously because the types can be inferred from context instead of having to be specified in the language. The operator “ => “ is read as “for which”.

Linq

The killer app for all the new features is certainly Linq. Linq allows queries against a variety of data sources to be performed without having to embed nasty SQL or XPATH expressions into string variables. Instead it uses the native language syntax to express the queries and result sets. Very cool.

Don on WWF & Indigo

Sad but true... not many smart people are funny and not many funny people are exceptionally smart. Don Box is the definite exception to this rule, so it is always great to hear him talk. This time he showed off a major "Frankenbuild" of WWF (the workflow foundation, formerly known as WinOE), Indigo and what not to show how process models and services can interact to create more transparent distributed systems. According to him "this stuff does not run anywhere except in Dharma’s bedroom" but it was still quite interesting and entertaining. As such, Don reminded us to take this all with a grain of salt and emphasized that “There are no tenets of workflow enabled services”. :-) Instead of a complete transcript of the talk (I am sure you can find that somewhere) I captured a few highlights and noteworthy quotes, especially the ones that are funny and insightful.

  • “Exchanging messages gives you deniability: I did not know he is such a FORTRAN hack”. This is a rarely mentioned benefit of abstraction.
  • "The Web services union rules required us to make a calculator service."
  • "Our world is not constrained by stack frames."
  • "Go ahead, live the dream. Put a DLL out there."

The core message (no pun intended) of the talk can be summarized as follows:

  • Workflow-enabled services are (potentially long-running) transparent processes.
    • Long-running = longer than one (ACID) transaction
    • Transparent = not an opaque DLL, I have visibility into the definition and the running state
  • Transparency is necessary but not sufficient to enable post-deployment modification of process definitions.

The big picture looks like this: messages come into an endpoint (according to Don "You now know Indigo" ). The message starts a XAML-based workflow that uses the WWF execution engine. The workflow simplifies asynchronous and concurrent execution, as opposed to having to deal with threads and all that. The main activities of the workflow are send and receive. Keep in mind that the service provider can be both sender and receiver. Do not mix up sender and receiver with client and server. (of course anyone who reads my ramblings has known this for a long time ). The basic MEP of request-reply has made this distinction so confusing.

Cool feature: As part of the transparency goal state transitions inside the work flow are published as an RSS feed. You can also inspect the XAML for the service by appending ?rawContent to the URL. You can then open this process definition in the workflow designer and edit the XAML post-deployment.

Other Stuff

Jochen Seemann gave another demo of the DSL tools in VS 2005. Early stage still but very interesting. I'll save this for another post.

Luckily we had Friday afternoon off and got to see a little bit of LA. Every time I roam around "downtown" LA I feel like there is no way Blade Runner could have taken place in any other city. Fittingly enough the last part of the movie was filmed in the Bradbury Building in Downtown LA. Pip and I then braved the LA traffic and crawled to the Getty and Santa Monica. All in all a nice way to finish up the conference.

MORE RAMBLINGS    Subscribe  SUBSCRIBE TO GREGOR'S RAMBLINGS


Gregor is the Chief IT Architect of Allianz SE. He is a frequent speaker on asynchronous messaging and service-oriented architectures and co-authored Enterprise Integration Patterns (Addison-Wesley). His mission is to make integration and distributed system development easier by harvesting common patterns and best practices from many different technologies.
www.eaipatterns.com