Here's a short video explaining where I’m at now (here’s a map) and what I’m up to. Meanwhile I’ve also figured out how to put sound on both channels with the setup that I have, but here it’s still just on the left channel and also doesn’t sound as good as it should as I don’t have all the white-noise correcting Jedi motions mastered.  

Spoiler: I’ll start doing a video show on a regular basis and need input for content planning, so if you have any ideas, don’t hesitate to send me email or Tweet me at @clemensv.

Categories: Architecture | Blog | Talks

This session explains how to secure Service Bus using the Access Control Service. This is also an extension session for my session at BUILD, but watching the BUILD session is not a strict prerequisite.

Categories: .NET Services | AppFabric | Azure | Talks

This session is a followup to the Service Bus session that I did at the build conference and explains advanced usage patterns:

Categories: .NET Services | AppFabric | Azure | Talks | MSMQ | Web Services

Room 398, Tuesday June 8

Session Type: Breakout Session
Track: Application Server & Infrastructure
Speaker(s): Maggie Myslinska
Level: 200 – Intermediate

Come learn how to use Windows Azure AppFabric (with Service Bus and Access Control) as building block services for Web-based and hosted applications, and how developers can leverage services to create applications in the cloud and connect them with on-premises systems.

If you are planning on seeing Juval’s and my talk ASI304 at TechEd and/or if you need to know more about how Windows Azure AppFabric enables federated cloud/on-premise applications and a range of other scenarios, you should definitely put Maggie’s talk onto your TechEd schedule as well. 

Categories: AppFabric | Talks | TechEd US | Technology

Room 265, Thursday June 10
9:45AM – 11:00 AM

Session Type: Breakout Session
Track: Application Server & Infrastructure
Speaker(s): Clemens Vasters, Juval Lowy
Level: 300 - Advanced

The availability of the Service Bus in Windows Azure AppFabric is disruptive since it enables new design and deployment patterns that are simply inconceivable without it, opening new horizons for architecture, integration, interoperability, deployment, and productivity. In this unique session organized especially for Tech·Ed, Clemens Vasters and Juval Lowy share their perspective, techniques, helper classes, insight, and expertise in architecting solutions using the service bus. Learn how to manage discrete events, how to achieve structured programming over the Service Bus buffers, what options you have for discovery and even how to mimic WCF discovery, what are the recommended options for transfer security and application authentication, and how to use AppFabric Service Bus for tunneling for diagnostics or logging, to enabling edge devices. The session ends with a glimpse at what is in store for the next versions of the service bus and the future patterns.

Yes, that's Juval and myself on the same stage. That'll be interesting. 

Categories: AppFabric | Azure | Talks | TechEd US

I put the slides for my talks at NT Konferenca 2010 on SkyDrive. The major difference from my APAC slides is that I had to put compute and storage into one deck due to the conference schedule, but instead of purely consolidating and cutting down the slide count,  I also incorporated some common patterns coming out from debates in Asia and added slides on predictable and dynamic scaling as well as on multitenancy. Sadly, I need to rush through all that in 45 minutes today.


Categories: AppFabric | Architecture | Azure | Talks | Technology | Web Services

I'm on a tour through several countries right now and I'm talking to ISVs about the Windows Azure platform, its capabilities and the many opportunities ISVs have to transform the way they do business by moving to the cloud. The first day of the events is an introduction to the platform at the capability level; it's not a coding class, that would be impossible to fit.

I've shared the slides on SkyDrive. Steal liberally if you find the material useful.


Categories: AppFabric | Architecture | Azure | Talks

At the bottom of this post you’ll find the DinnerNow version that I’ve been using for my PDC09 talk. The video of that talk is now available at and I recommend that you listen to the talk for context.

The DinnerNow drop I’m sharing here is a customized version of the DinnerNow 3.1 version that’s up on CodePlex. If I were you, I’d install the original version and then unpack my zip file alongside of it and then use some kind of diff tool (the Windows SDK’s WinDiff tool is a start) to look at the differences between the versions. That will give you a raw overview of what I had to do. You’ll find that I had to add and move a few things, but that the app didn’t change in any radical way.

Remember that looking at the code is more important that making it run. There’s one particular challenge you’d have right now with the Windows Azure CTP and that’s getting the two (!) Windows Azure compute tokens needed for separating out the web and the service tier as I’ve done here. It’s not difficult to consolidate the Web and the Web Service tier into a single role, but since I had to do the migration within a short period of time, I chose to split them up.

FWIW, I time-boxed the migration to 3 work days – which included learning about what our buddies over in SQL Azure had done in the past months — and that turned out to be a comfortable fit in terms of time.

Another function of time-boxing is that you’re finding me disabling security on most endpoints, including disabling the Access Control integration with Service Bus for most endpoints by setting the relayClientAuthenticationType attribute on the respective binding elements to None.

I know that’s a sin, but I didn’t want to cause too much churn in the first iteration. The original version of DinnerNow is conveniently using Windows authentication/authorization for its communication paths. While that’s ok for a LAN setup, things get more complicated for an actual WAN setup that the DinnerNow scenario calls for. That would spawn a wholly different discussion that shines the spotlight on our Access Control service and why it’s useful – even required – for that scenario. In order not to overwhelm everyone, I left that out for this round and will revisit that aspect in the next weeks – or maybe one of our (aspiring?) MVPs or RDs will beat me to it.

I’m also going to work with the guys who wrote DinnerNow to find a way to host this modified version of Dinner Now with the on-premise runtime bits expressly not on my primary dev machine, where they’d live now.


Here what you need to do to get it to run

I know this is rough. Writing up the long version of this is going to take some time and I prefer getting the bits to you early over me sitting here writing pages of docs. Maybe you can even help ;-)

  1. First, you’ll need to go to the Windows Azure portal and get the SDKs and tokens/accounts. The Getting Started page has all the data and links you need so I’m not going to repeat them here in much detail. You will need at least one Windows Azure compute account (apply here), one SQL Azure account (apply here), and an AppFabric account (no application needed, just log in w/ LiveID). 
  2. Download and install the regular version DinnerNow 3.1 from Codeplex. This will drop a “Configure DinnerNow 3.1” shortcut on your desktop. Run that, install all prerequisites and make sure DinnerNow runs locally before you proceed.
  3. You will later need the databases that the setup created in your local SQLEXPRESS instance by setup. You’ll have to make a few changes, though.
    1. First, (download, install, and) open SQL Server Management Studio, connect to your SQL Server Express instance and switch to “SQL Server and Windows Authentication mode” on the Server Properties under Security. Then you’ll need to go to to the Security settings and either create a new account and grant it all rights on the aspnetdb database or just enable the ‘sa’ account and set its password. 
    2. Then you need to find the “SQL Server Configuration Manager” and enable TCP for your SQLEXPRESS instance like this. The default port will be 1433. If you have a full SQL Server instance on your dev machine and it’s configured for TCP the easiest is to suspend that for the moment and allow the SQLEXPRESS instance to squat the port.
  4. Unpack the ZIP file appended below into a directory on your machine. At this point it should be ok to override the existing DinnerNow directory, but I’d keep things side-by-side for reference. If you copy side-by-side, grab the ./solution/DinnerNow – Web/DinnerNow.WebUX/images/’ directory from your local installation and copy it into the location where you unzipped the file here. I left out the images due to their size. And just as with the normal DinnerNow installation you’ll find a solution file named “DinnerNow  - Main.sln” in the unpacked directory – open that in Visual Studio 2008 (not 2010!) because you’ll have to make some changes and edits.
  5. If you are lucky enough to have two Windows Azure compute accounts, you can skip this step. Otherwise, you will have to restructure the application a bit: 
    1. In the “DinnerNow – WA” solution branch where the Windows Azure deployment project reside you’ll have to consolidate the DinnerNow.WindowsAzure project and the DinnerNow.WindowsAzureAppSrv projects into one by replicating the DinnerNow.DBBridge reference into the DinnerNow.WindowsAzure project and abandoning/deleting the rest.
    2. In the “DinnerNow – Web” solution branch you will have to modify the DinnerNow.WebUX project by merging the DinnerNow.ServiceHost project from the “DinnerNow -ServicePortfolio2” branch into it, including merging the config files. In the original DinnerNow the hosting default is that the ServiceHost  project lives in the ./services subdirectory of the WebUX app. You can also do it that way, but you’ll have to change the respective client URIs to point to the right path.
  6. In the ./database directory is a file called SQLAzureImport.sql. That’s the exported and customized script for the DinnerNow restaurants and menus database. Create a new database (1GB is enough) and load the DB with this script. You can do this with the command line or with SQL Management Studio. The SQL Azure docs will tell you how.
  7. Now you’ll need to do a range of search/replace steps across the whole project. These are mostly in *.config files - a few places are in the code, which I count as bugs, but those are faithfully carried over from the original:
    1. Find all occurrences of sqlazure-instance and replace them with your unqualified SQL Azure server name (might look like this: tn0a1b2c3d)
    2. Find all occurrences of sqlazure-dbname and replace them with your SQL Azure database name
    3. Find all occurrences of sqlazure-acct and replace them with your SQL Azure administrator username
    4. Find all occurrences of sqlazure-password and replace them with your SQL Azure administrator password
    5. Find all occurrences of appfabricservicebus-ns and replace them with your unqualified AppFabric namespace name
    6. Find all occurrences of appfabricservicebus-key and replace them with your AppFabric Service Bus issuer key
    7. Find all occurrences of windowsazuresvcrole-acct and replace them with the name of your Windows Azure compute account. If you have just one, use that (given you’ve done the rework in step 4), if you have two use the account-name where you will host the service tier.
    8. Find all occurrences of sqlserver-password and replace them with your local SQL Server Express instance’s ‘sa’ account password.
  8. Do a full batch Rebuild of the whole project
  9. Go to the “DinnerNow –WA” solution and publish the project(s) to your Windows Azure compute account(s). If you had to consolidate them you’ll have one package to deploy, if you left things as they are you’ll have two packages to deploy. You can also run these packages in the local DevFabric to test things out.
  10. The executables you need to run are going to be dropped into the .\bin directory by the build. You need to run all 6 apps – but you could run them on 6 different machines – the two workflow hosts each assume the local presence of the DinnerNowWF database:
    1. CloudTraceRecorder.exe – this is the simple event listener app. You can run this right away to observe the apps starting up inside of Azure as they write events to the event listener. You can and should run this as you deploy. You can run any number of instances of CloudTraceRecorder anywhere.
    2. PortBridge.exe – this is the on-premise bridge-head for bridging to your local SQL Server Express instance so that the cloud application can get at its membership database that you host for it on your machine. After the search/replace steps you will notice that you have modified connection strings that point to a SQL Server role peeking out of your *AppSrv role. The secret ingredient is in the DinnerNow.DBBridge role that’s listening for TCP connections on behalf of your on-premise SQL Server and that connects them down to your local server with the logic in Microsoft.Samples.ServiceBus.Connections. This is the same code that’s in PortBridge.
    3. DinnerNow.OrderProcessingHost.exe is the (new) host application for the workflow that handles the order process.
    4. DinnerNow.RestaurantProcessingHost.exe is the (new) host application for the workflow that handles the restaurant process.
    5. DinnerNowKiosk.exe is the only slightly modified version of the DinnerNow in-restaurant kiosk
    6. Not in .\bin but rather to be started/deployed from VS is the also just slightly modified Windows Mobile app for the delivery app


Please also mind that the DinnerNow Powershell support and the other test and diagnostics capabilities haven’t been touched here, yet.

Oh, and … this is provided as-is … I’ll do my best to discuss some of the patterns over the next several weeks, but I don’t have time to provide 1:1 support.

Here’s the code: (2.35 MB)
Categories: .NET Services | Azure | Talks | AppFabric

We've got a discussion forum up on MSDN where you can ask questions about Microsoft .NET Services (Service Bus, Workflow, Access Control):


Categories: Talks | Technology | ISB | WCF

October 28, 2008
@ 04:56 AM

According to recent traffic studies, the BitTorrent protocol is now responsible for roughly half of all Internet traffic. That's a lot of sharing of personal photos, self-sung songs, and home videos. Half! Next to text messaging, Instant Messaging applications are the social lifeline for our teenagers these days – so much that the text messaging and IM lingo is starting to become a natural part of the colloquial vocabulary everywhere. Apple's TV, Microsoft's Xbox 360, and Netflix are shaking up the video rental market by delivering streamed or downloadable high-quality video and streams on YouTube have become the new window on the world. Gamers from around the world are meeting in photorealistic virtual online worlds to compete in races, rake in all the gold, or blast their respective Avatars into tiny little pieces.

What does all of that have to do with Web 2.0? Very little. While it's indisputable that the Web provides the glue between many of those experiences, the majority of all Internet traffic and very many of the most interesting Internet applications depend on bi-directional, peer-to-peer connectivity.

These familiar consumer examples have even more interesting counterparts in the business and industrial space. Industrial machinery has ever increasing remote management capabilities that allow complete remote automation, reprogramming, and reconfiguration. Security and environment surveillance systems depend on thousands of widely distributed, remotely controlled cameras and other sensors that sit on street poles, high up on building walls, or somewhere in the middle of a forest. Terrestrial and satellite-based mobile wireless technologies make it possible to provide some form of digital connectivity to almost any place on Earth, but making an array of devices addressable and reachable so that they can be integrated into and controlled by a federated, distributed business solution that can leverage Internet scale and reach remains incredibly difficult.

The primary obstacle to creating pervasive connectivity is that we have run out of IPv4 addresses. There is no mere threat of running out, we're already done. The IPv4 space is practically saturated and it's really only network address translation (NAT) that permits the Internet to grow any further. The shortage is already causing numerous ISPs to move customers behind NATs and not to provide them with public IP address leases any longer. Getting a static public IP address (let alone a range) is getting really difficult. IPv6 holds the promise of making each device (or even every general-purpose computer) uniquely addressable again, but pervasive IPv6 adoption that doesn't require the use of transitional (and constraining) tunneling protocols will still take many years.

The second major obstacle is security. Since the open network is a fairly dangerous place these days and corporate network environments are often und unfortunately not much better, the use of Firewalls has become ubiquitous and almost all incoming traffic is blocked by default on the majority of computers these days. That's great for keeping the bad guys out, but not so great for everything else – especially not for applications requiring bi-directional connectivity between peers.

Since these constraints are obviously well-known and understood there is a range of workarounds. In home networking environments the firewall and NAT issues are often dealt with by selectively allowing applications to open inbound ports on the local and network router firewalls using technologies like UPnP or by opening and forwarding port by ways of manual configuration. Dynamic DNS services help with making particular machines discoverable even if the assigned IP address keeps changing. The problem with those workarounds is that they realistically only ever work for the simplest home networking scenarios and, if they do work, the resulting security threat situation is quite scary. The reality is that the broadly deployed Internet infrastructure is optimized for the Web: clients make outbound requests, publicly discoverable and reachable servers respond.

If your application requires bi-directional connectivity you effectively have two choices: Either you bet on the available workarounds and live with the consequences (as BitTorrent does) or you build and operate some form of Relay service for your application. A Relay service accepts and maintains connections from firewalled and/or NAT-ed clients and routes messages between them. Practically all chat, instant messaging, video conferencing, VoIP, and multiplayer gaming applications and many other popular Internet applications depend on some form of Relay service.

The challenge with Relay services is that they are incredibly hard to build in a fashion that they can provide Internet scale where they need to route between thousands or even millions of connections as the large Instant Messaging networks do. And once you have a Relay that can support such scale it is incredibly expensive to operate. So expensive in fact that the required investments and the resulting operational costs are entirely out of reach for the vast majority of software companies. The connectivity challenge is a real innovation blocker and represents a significant entry barrier.

The good news is that Microsoft .NET Service Bus provides a range of bidirectional, peer-to-peer connectivity options including relayed communication. You don't have to build your own or run your own; you can use this Building Block instead. The .NET Service Bus covers four logical feature areas: Naming, Registry, Connectivity, and Eventing.


The Internet's Domain Name System (DNS) is a naming system primarily optimized for assigning names and roles to hosts. The registration records either provide a simple association of names and IP addresses or a more granular association of particular protocol roles (such as identifying domain's mail server) with an IP address. In either case, the resolution of the DNS model occurs at the IP address level and that is very coarse grained. Since it is IP address centric, a DNS registration requires a public IP address. Systems behind NAT can't play. Even though Dynamic DNS services can provide names to systems that do have a public IP address, relying on DNS means for most ISP customers that the entire business site or home is identified by a single DNS host entry with dozens or hundreds of hosts sitting behind the NAT device.

If you want to uniquely name individual hosts behind NATs, differentiate between individual services on hosts, or want to name services based on host-independent criteria such as the name of a user or tenant, the DNS system isn't an ideal fit.

The .NET Service Bus Naming system is a forest of (theoretically) infinite-depth, federated naming trees. The Naming system maintains an independent naming tree for each tenant's solution scope and it's up to the application how it wants to shape its tree. 'Solution' is a broad term in this context meant to describe a .NET Service Bus tenant – on the customer side, a Service Bus application scope may map to dozens of different on-site applications and hundreds of application instances.

Any path through the naming tree has a projection that directly maps to a URI.

Let's construct an example to illustrate this: You design a logistics system for a trucking company where you need to route information to service instances at particular sites. The application scope is owned by your client, 'ContosoTrucks' which has a number of logistics centers where they want to deploy the application. Your application is called 'Shipping' and the endpoints through which the shipping orders are received at the individual sites are named 'OrderManagement'. The canonical URI projection of the mapping of New York's order management application endpoint instance into the ServiceBus Naming system is

The significant difference from DNS naming is that the identification of services and endpoints moves from the host portion of the URI to the path portion and becomes entirely host-agnostic. The DNS name identifies the scope and the entry point for accessing the naming tree. That also means that the path portion of the URI represent a potentially broadly distributed federation of services in the Naming service, while the path portion of a 'normal' URI typically designates a collocated set of resources.

There is no immediate access API for the Naming system itself. Instead, access to the Naming system is provided through the overlaid Service Registry.

Service Registry

The Service Registry allows publishing service endpoint references (URIs or WS-Addressing EPRs) into the Naming system and to discover services that have been registered.

The primary access mechanism for the Service Registry is based on the Atom Publishing Protocol (APP) allowing clients to publish URIs or EPRs by sending a simple HTTP PUT request with an Atom 1.0 'item' to any name in the naming tree. It's removed by sending an HTTP DELETE request to the same name. There is no need to explicitly manage names – names are automatically created and deleted as you create or delete service registry entries.

Service discovery is done by navigating the naming hierarchy, which is accessible through a nested tree of Atom 1.0 feeds whose master-feed is located at[solution]/. Any publicly registered service is accessible through the feed at the respective location.

In addition to the Atom Publishing Protocol, the Service Registry also supports publishing, accessing, and removing endpoint references using WS-Transfer and the Relay service will automatically manage its endpoints in the Service Registry without requiring any additional steps.

The Service Registry is an area that will see quite significant further additions over the next few milestones including support for service categorization, search across the hierarchy, and support for additional high-fidelity discovery protocols.


The core of the connectivity feature area of the .NET Service Bus is a scalable, general-purpose Relay service. The Relay's communication fabric supports unicast and multicast datagram distribution, connection-oriented bi-directional socket communication and request-response messaging.

Towards listening services the Relay takes on the same role as operating-system provided listeners such as Windows' HTTP.SYS. Instead of listening for HTTP requests locally, a relayed HTTP service establishes an HTTP listener endpoint inside the cloud-based Relay and clients send requests to that cloud-based listener from where they are forwarded to the listening service.

The connection between the listener and the Relay is always initiated from the listener side. In most connection modes (there are some exceptions that we'll get to) the listener initiates a secured outbound TCP socket connection into the Relay, authenticates, and then tells the Relay at which place in the naming tree it wants to start listening and what type of listener should be established.

Since a number of tightly managed networking environments block outbound socket connections and only permit outbound HTTP traffic, the socket based listeners are complemented by an HTTP-based multiplexing polling mechanism that builds on a cloud-based message buffer. In the PDC release the HTTP-based listeners only support the unicast and multicast datagram communication, but bidirectional connectivity is quite easily achievable by pairing two unicast connections with mutually reversed client and listener roles.

A special variation of the bi-directional socket communication mode is 'Direct Connect'. The 'Direct Connect' NAT traversal technology is capable of negotiating direct end-to-end socket connections between arbitrary endpoints even if both endpoints are located behind NAT devices and Firewalls. Using Direct Connect you can start connections through the Relay and 'Direct Connect' will negotiate the most direct possible connectivity route between the two parties and once the route is established the connection will be upgraded to the direct connection – without information loss.

With these connectivity options, the Relay can provide public, bi-directional connectivity to mostly any service irrespective of whether the hosting machine is located behind a NAT or whether the Firewalls layered up towards the public network don't allow inbound traffic. The automatic mapping into the Naming system means that the service also gains a public address and the service can, on demand, be automatically published into the Service Registry to make the service discoverable.

In addition to providing NAT and Firewall traversal and discoverability the delegation of the public network endpoint into the Relay provides a service with a number of additional key advantages that are beneficial even if NAT traversal or discoverability are not a problem you need to solve:

  • The Relay functions as a "demilitarized zone" that is isolated from the service's environment and takes on all external network traffic, filtering out unwanted traffic.
  • The Relay anonymizes the listener and therefore effectively hides all details about the network location of the listener thus reducing the potential attack surface of the listening service to a minimum.
  • The Relay is integrated with the Access Control Service and can require clients to authenticate and be authorized at the Relay before they can connect through to the listening service. This authorization gate is enabled by default for all connections and can be selectively turned off if the application wants to perform its own authentication and authorization.

These points are important to consider in case you are worried about the fact that the Relay service provides Firewall traversal. Firewalls are a means to prevent undesired foreign access to networked resources – the Relay provides a very similar function but does so on an endpoint-by-endpoint basis and provides an authentication and authorization mechanism on the network path as well.

If your applications are already built on the .NET Framework and your services are built using the Windows Communication Foundation (WCF) it's often just a matter of changing your application's configuration settings to have your services listen on the Relay instead on the local machine.

The Microsoft.ServiceBus client framework provides a set of WCF bindings that are very closely aligned with the WCF bindings available in the .NET Framework 3.5. If you are using the NetTcpBinding in your application you switch to the NetTcpRelayBinding, the BasicHttpBinding maps to the BasicHttpRelayBinding, and the WebHttpBinding has its equivalent in the WebHttpRelayBinding. The key difference between the standards WCF bindings and their Relay counterparts is that they establish a listener in the cloud instead of listening locally.

All WS-Security and WS-ReliableMessaging scenarios that are supported by the standard bindings are fully supported through the Relay. Transport-level message protection using HTTPS or SSL-protected TCP connections is supported as well.

If the listener chooses to rely on WS-Security to perform its own authentication and authorization instead of using the security gate built into the Relay, the HTTP-based Relay bindings' policy projection is indeed identical to their respective standard binding counterparts which means that client components can readily use the standard .NET Framework 3.5 bindings (and other WS-* stacks such as Sun Microsystems' Metro Extensions for the Java JAX-WS framework).

If you prefer RESTful services over SOAP services, you can build them on the WebHttpRelayBinding using the WCF Web programming model introduced in the .NET Framework 3.5. The Relay knows how to route SOAP 1.1, SOAP 1.2 messages and arbitrary HTTP requests transparently.

The NetEventRelayBinding doesn't have an exact counterpart in the standard bindings. This binding provides access to the multicast publish/subscribe capability in the Relay. Using this binding, clients act as event publishers and listeners act as subscribers. An event-topic is represented by an agreed-upon name in the naming system. There can be any number of publishers and any number of subscribers that use the respective named rendezvous point in the Relay. Listeners can subscribe independent of whether a publisher currently maintains an open connection and publishers can publish messages irrespective of how many listeners are currently active – including zero. The result is a very easy to use lightweight one-way publish/subscribe event distribution mechanism that doesn't require any particular setup or management.

The discussion of the close alignment between the Relay's .NET programming experience and the standard .NET Framework shouldn't imply that the Relay requires the use of the .NET Framework. Microsoft is working with community partners to provide immediate and native Relay support for the Java and Ruby platforms of which initial releases will be available at or shortly after PDC with more language and platform support lined up in the pipeline.

The Relay provides connectivity options that allow you build bidirectional communication links for peer-to-peer communication, allows making select endpoints securely and publicly reachable without having to open up the Firewall floodgates, and provides a cloud-based pub/sub event bus that permits your application to distribute events at Internet scale. I could start enumerating scenarios at this point, but it seems like a safe bet that you can already think of some.

Find out more here:


Categories: Talks | WCF

You are in North America and not in Europe? You want more content than what fits into a track at TechEd?

No problem! Just come to the SOA and Business Process Conference that we're running October 29 - November 2 at the Microsoft Conference Center here in Redmond. There'll be lots of very interesting new stuff from teams across our division here at Microsoft. And our boss speaks, too.

If distributed systems and composite applications are your thing, you should be here for that conference. No debating, sign up and come!

Categories: Talks | SOABP

Even though the TechEd Europe Developer Website doesn't yet clearly say so, Steve Swartz and myself will "of course!" be back with a new set of Steve & Clemens talks in Barcelona for TechEd Europe Developer (November 5-9). And for the first time we'll stay for another week and also give a talk at TechEd Europe ITForum (November 12-16) this year.

What will we talk about?

Last year we've started with a history lesson, did a broad and mostly technology agnostic overview of distributed systems architecture across 4 talks and closed with a talk that speculated about the future.

This year at the TechEd Developer show, we'll be significantly more concrete and zoom in on the technologies that make up the Microsoft SOA and Business Process platform and show how things are meant to fit together. We'll talk about the rise of declarative programming and composition and how that manifests in the .NET Framework and elsewhere. And as messaging dudes we'll also talk about messaging again. At TechEd ITForum we'll talk about the end-to-end lifecycle of composite applications and how to manage it effectively.

And of course there'll be "futures". Much less handwavy futures than last year, actually.

So .... We'll be in Barcelona for TechEd. You too?

Categories: Architecture | Talks | TechEd Europe

We love WS-* as much as we do love Web-Style services. I say "Web-style", full knowing that the buzzterm is REST. Since REST is an architectural style and not an implementation technology, it makes sense to make a distinction and, also, claiming complete RESTfulness for a system is actually a pretty high bar to aspire to. So in order to avoid monikers like POX or Lo-REST/Hi-REST, I just call it what it what this is all about to mere mortals whose don't have an advanced degree in HTTP Philosophy: Services that work like the Web - or Web-Style. That's not to say that a Web-Style service cannot be fully RESTful. It surely can be. But if all you want to do is GET to serve up data into mashups and manipulate your backend resources in some other way, that's up to you. Anyways....

Tomorrow at 10:00am (Session DEV03, Room Delfino 4101A), our resident Lo-REST/Hi-REST/POX/Web-Style Program Manager Steve Maine and our Architect Don Box will explain to you how to use the new Web-Style "Programmable Web" features that we're adding to the .NET Framework 3.5 to implement the server magic and the service-client magic to power all the user experience goodness you've seen here at MIX.

Navigating the Programmable Web
Speaker(s): Don Box - Microsoft, Steve Maine
Audience(s): Developer
RSS. ATOM. JSON. POX. REST. WS-*. What are all these terms, and how do they impact the daily life of a developer trying to navigate today’s programmable Web? Join us as we explore how to consume and create Web services using a variety of different formats and protocols. Using popular services (Flickr, GData, and Amazon S3) as case studies, we look at what it takes to program against these services using the Microsoft platform today and how that will change in the future.
If you are in Vegas for MIX, come see the session. I just saw the demo, it'll be good.
Categories: Talks | Technology | WCF | Web Services

June 21, 2006
@ 08:57 AM
In the ongoing MSDN Architecture Webcast Series with broad coverage of all things WCF (see the "Next Generation: .NET Framework 3.0 and Vista" section for archived and upcoming content), I am on today (8AM PST, 11AM EST, 17:00 CET), live from my kitchen table in Germany, with a remix of my "RSS, REST, POX, Sites-as-Services" talks from MIX06 and TechEd.
Categories: Talks | MIX06 | TechEd US | WCF

April 8, 2006
@ 11:09 AM

The WinFX Tour is coming to Europe!

Mark it in your calendar and, if you can, sign up! Locations: Rotterdam (20 Apr), Nice (25 Apr), Zurich (2 May), Copenhagen (4 May), London (9 May), Eilat/IL (9 May), Reading/UK (10 May), Cairo (15 May), Moscow (19 May)

I'll be speaking at the Zurich, Copenhagen, and Eilat (TechEd Israel) events.

[If the event near you does not have a sign-up page linked, watch your local MSDN portal or MSDN newsletters for updates]

Categories: Talks | Indigo

I am technically on vacation now and for the following 2 1/2 weeks, so I’ve been a little slow posting this. Below is the link to the source code archive for my TechEd Europe 2005 talks on transactions and asynchronous messaging. The “newtelligence.TechEdTools” assembly with the message queue listener and the WSE and ASMX transports for MSMQ is essentially the same as the one I posted after TechEd US, but there is now a little sample application that goes with it. People have specifically asked for the “transactional file writer” example. You can find that in the “CustomersService” code.


Categories: Talks

Here’s the raw, not really well documented code drop with the sample and framework code for my CSI360 and CSI359 talks here at TechEd US. The talks are today at 5pm (CSI360 – Asynchronous Messaging) and on Thursday at 1:30pm (CSI359 – Handling Transaction Abort Cases). As soon as I find time, I’ll document the framework classes a bit better here on the blog. The archive contains, amongst other things, a WSE channel and a WebRequest/WebResponse set that lets you use MSMQ as an alternate transport for WSE and/or ASMX. It also has the complete queue listener code for the messaging series I posted some months ago.

My blogging backlog is ridiculous. In the past weeks I’ve crossed the Atlantic several times (with one quick trip to Singapore in addition to that), had some crazy “one city per day” trips and had to meet deadlines for whitepapers, articles, and presentations. I guess I travel too much. From here (Orlando,FL) I will fly straight to the Pakistan Developer Conference in Karachi (about 24 hours, via Amsterdam and Dubai) and then back home. If all goes well, I’ll be at home for 2 weeks. That’s a first for this year, I think.


Categories: Talks

April 24, 2005
@ 08:12 AM

I just looked at my blog and found that I haven’t written anything in more than three weeks and not anything of any substance in more than 6 weeks. I can’t even believe it’s been that long. Time flies by when you’re busy. I still owe a follow up to this here, and will try to get that done in the next two weeks or so.

So what happened in the past 6 weeks? I learned how to stand and “surf” for several seconds at a time on a snowboard in Vail (Colorado) and bruised every part of my body the next week when my friends put me up on a real mountain in Keystone. I had the honor of sitting on the review board of the Microsoft Certified Architect program in Redmond, attended the Indigo Software Design Review in Seattle, spoke at the Visual Studio User Groups in Denver and Boulder (Tim Huckaby gave me 15 minutes of his time at the latter), and had several customer meetings in the US and Germany. I recorded 8 hours worth of webcasts on Service Orientation and spoke at workshops on the same topics in Belgium and Germany.  I spoke at the Microsoft Gulf Developer Conference GDC2005 in Riyadh (Saudi Arabia), at the Microsoft North Africa Developer Conference NDC2005 in Algiers (Algeria), and between all these things I ported an application to Indigo and prepared my talks for several conferences that are happening this next week and later this year and for which the content deadlines were due.

Now, if that sounds busy, consider next week: Today I fly to Istanbul at 17:30h, get there at 21:30h. I will do 3 talks at a large MS conference in Istanbul the next day. Tuesday morning (really: middle of the night) I have to get out to the airport and catch a 5:40am flight to Ljubljana in Slovenia. From there I will be picked up and driven to Opatija in Croatia where I’ll do a track keynote and another talk at the WinDays conference in the afternoon. After dinner, I go back to Ljubljana aiport and fly (at 11:45pm) back to Istanbul, getting there at 2:50am. 3 more talks in Turkey on Wednesday. Then, Thursday morning, I catch the same flight to Ljubljana at 5:40am, but will connect through to Vienna in Austria where I will arrive at around 8:30am and will hurry to the Microsoft office to do two full days of Visual Studio 2005 training for the MS Ascend program and then fly home to Düsseldorf Friday evening. By Saturday I will likely need medical attention.

The upcoming week is so crazy that I will try to document it here. Let’s see whether I can pull it off.

Categories: Talks

February 9, 2005
@ 06:48 AM

I wish I was at VSLive! in San Francisco to hang out with all of my friends. Instead (and that isn’t too bad, either), I am sitting in my hotel room at the Warsaw Marriott watching the sun rise over the Polish capital. Today and the next two days, my partner Achim Oellers and myself will be teaching a class on service orientation principles, explaining fundamental ideas, patterns, techniques and will go through a lot of concrete implementation guidance for today’s Microsoft MSMQ/WSE/ASMX/ES stack so that our customers can start writing services today. The fundamental principles about data contracts, message contracts and service contracts that we teach will carry forward to Indigo – along with a lot of the implementation techniques (and the resulting source code) that we will suggest. Of course, that has been a bit of a hidden agenda in past workshops, because I couldn’t openly speak about anything that happened to Indigo past PDC03, but now that the Indigo day at VSLive! is over, I can. That makes it even more fun.

Categories: Talks

January 29, 2005
@ 12:07 PM

I have been invited to speak at the Denver Visual Studio Usergroup on Monday, March 28th. Because I just happen to be in Denver I am delighted to volunteer and talk about the principles of Service Orientation and how to make it happen for real now (ES, ASMX) and tomorrow (Indigo). Mind that this is after VSLive! and I'll be able to tell things I've been told not to tell.

Categories: Talks

I feel like I have been "out of business" for a really long time and like I really got nothing done in the past 3 months, even though that's objectively not true. I guess that's "conference & travel withdrawal", because I had tone and tons of bigger events in the first half of the year and 3 smaller events since TechEd Amsterdam in July. On the upside, I am pretty relaxed and have certainly reduced my stress-related health risks ;-)

So with winter and its short days coming up, the other half of my life living a 1/3 around the planet until next spring, I can and am going to spend some serious time on a bunch of things:

On the new programming stuff front:
     Catch up on what has been going on in Indigo in recent months, dig deeper into "everything Whidbey", figure out the CLR aspects of SQL 2005 and familiarize myself with VS Team System.

On the existing programming stuff front:
      Consolidate my "e:\development\*"  directory on my harddrive and pull together all my samples and utilities for Enterprise Services, ASP.NET Web Services and other enterprise-development technologies and create a production-quality library from of them for us and our customers to use. Also, because the Indigo team is doing quite a bit of COM/COM+ replumbing recently in order to have that prohgraming model ride on Indigo, I have some hope that I can now file bugs/wishes against COM+ that might have a chance of being addressed. If that happens and a particular showstopper is getting out of the way, I will reopen this project here and will, at the very least, release it as a toy.

On the architectural stuff front:
         Refine our SOA Workshop material, do quite a bit of additional work on the FABRIQ, evolve the Proseware architecture model, and get some pending projects done. In addition to our own SOA workshops (the next English-language workshop is held December 1-3, 2004 in Düsseldorf), there will be a series of invite-only Microsoft events on Service Orientation throughout Europe this fall/winter, and I am very happy that I will be speaking -- mostly on architecture topics -- at the Microsoft Eastern Mediterranean Developer Conference in Amman/Jordan in November and several other locations in the Middle East early next year. 

And even though I hate the effort around writing books, I am seriously considering to write a book about "Services" in the next months. There's a lot of stuff here on the blog that should really be consolidated into a coherent story and there are lots and lots of considerations and motiviations for decisons I made for FABRIQ and Proseware and other services-related work that I should probably write down in one place. One goal of the book would be to write a pragmatic guide on how to design and build services using currently shipping (!) technologies that does focus on how to get stuff done and not on how to craft new, exotic SOAP headers, how to do WSDL trickery, or do other "cool" but not necessarily practical things. So don't expect a 1200 page monster. 

In addition to the "how to" part, I would also like to incorporate and consolidate other architect's good (and bad) practical design and implementation experiences, and write about adoption accelerators and barriers, and some other aspects that are important to get the service idea past the CFO. That's a great pain point for many people thinking about services today. If you would be interested in contributing experiences (named or unnamed), I certainly would like to know about it.

And I also think about a German-to-English translation and a significant (English) update to my German-language Enterprise Services book.....

[And to preempt the question: No, I don't have a publisher for either project, yet.]

Categories: Architecture | SOA | Blog | IT Strategy | newtelligence | Other Stuff | Talks

It keeps happening to me and some of my good friends and it's getting to a point where something needs to be said:

Dear Clemens,

we are pleased to announce the YaddaYadda 2004 conference that will be held in Overseas City, Farwaway Country on Octember 24th-27th. We know your great presentation skills .. blah, blah ...

We will cover coach class airfare of up to $500 and will reserve you a room in the speaker hotel where we will cover the overnight stay and breakfast. We will also provide you with a free registration to attend all the sessions of YaddaYadda 2004.

YaddaYadda 2004 is a world-class conference with 40 speakers from 10 countries and we expect an audience of architects, developers and IT-managers from great companies so that we will give you a great platform and exposure to demonstrate your expertise.

Please let us know whether you are interested in speaking at YaddaYadda 2004 and submit your presenentations until ... blah, blah

Best Regards,

YaddaYadda Marketing Droid

The short answer is: No. For several reasons. First of all, YaddaYadda conference is one amongst a hundred conferences held each year in Faraway Country. You are not running a Microsoft TechEd or a Microsoft PDC where I meet a lot of my friends, and you are not running a high-profile academic event that would really interest me, you are running just another developer conference. So we have that out of the way now.

You know that I live in Germany, right? Sure you do. You know my name, you invite me, it should be pretty much public knowledge that I don't live in Faraway Country. So how do you expect me to even dare to talk to a travel agent about a ticket to Faraway Country for $500? Well, right, you say that if I book 12 weeks ahead of time on the cheapest possible connection (with a comfortable 8 hour layover in St. Someairport) I could get a flight for that price. True. Care to have a look at my schedule? I am Norway until 2 days before YaddaYadda 2004 and I need to go to South Africa from there. And as things happen, these dates may move. A tourist ticket that's inflexible and invalid unless I use those exact flights is practically worthless for anybody who needs to be as mobile as us guys (and gals) who are helping you guys out with content. And you know what? My travel agent is so good that he's getting a business class fare on the German gray market that's cheaper than any flexible economy fare that you could ever book from Faraway Country; go figure that out. And you know what? If other speakers decide to drive 20hrs to Overseas City, do you force them to come in a Yugo, too?

The free registration to your conference sounds like a nice benefit, but I'd like to decline that offer and rather trade those $1499 for cash. Of course it'd be a bit difficult for me to get to the session room without a badge, but I am sure you'll figure out how that works.

And just because you say that your conference will give me a great platform and exposure to demonstrate your expertise I suspect (no, I am sure) that you are not paying speakers, right? See, there's an immediate benefit to you and that's me and all the other speakers talking there and adding to the value of your conference. No, sorry, we are the value of your conference. I like to trade immediate benefit against immediate benefit and that usually either translates into $$$ or into something that's a bit more painful for you than giving out "exposure" - let's say a booth or an full page ad in one of your magazines plus a token of appreciation for the talk.

Do you want to know what the value of "exposure" is and how it translates into immediate business opportunities for the speaker? If you are lucky, you get a good lead out of one per 500 attendees (and really lucky if your get two or three) and that doesn't even guarantee a deal yet. How many people did you say will you have at your conference? 450? Sorry. Doesn't translate.

There are many reasons to speak at conferences. Some are just plain fun to be at. Some are great for the parties. Some are fantastic for the money (go figure). For speakers there are many motivations that range from "the kick" to speak in front of 800 people to liking themselves being on stage to actually earning their lives by speaking. Some of the speakers I know got so IPO lucky in 1999 that they're doing it just so and it has nothing at all with their business.

So how about some honesty and saying: We're throwing a conference, we're going to have a raving party at a bar at the beach and many of your best buddies are likely coming too. Minibar in the hotel is on us. Sorry, we can't pay you for speaking, because we're poor and need the money, but we can pay for a reasonable flight ticket and hotel and since we have this hotel deal anyways, why don't you just stay 3 days longer, use your air-miles to upgrade and maybe bring along your girlfriend? Now, YaddaYadda 2004, that'd be a lot more honest and if your location is cool enough I'd even come. Just don't try that exposure argument on me, please, Mr. Marketing Droid.

Categories: Talks

I am back home from San Diego now. About 3 more hours of jet-lag to work on. This will be a very busy two weeks until I make a little excursion to the Pakistan Developer Conference in Karachi and then have another week to do the final preparations for TechEd Europe.

One of the three realy cool talks I'll do at TechEd Europe is called "Building Proseware" and explains the the scenario, architecture, and core implementation techniques of Proseware, an industrial-strength, robust, service-oriented example application that newtelligence has designed and implemented for Microsoft over the past 2 months.

The second talk is one that I have been looking forward to for a long time: Rafal Lukawiecki and myself are going to co-present a session. And if that weren't enough: The moderator of our little on-stage banter about services is nobody else than Pat Helland.

And lastly, I'll likely sign-off on the first public version of the FABRIQ later this week (we had been waiting for WSE 2.0 to come out), which means that Arvindra Sehmi and myself can not only repeat our FABRIQ talk in Amsterdam but have shipping bits to show this time. There will even be a hands-on lab on FABRIQ led by newtelligence instructors Achim Oellers and Jörg Freiberger. The plan is to launch the bits before the show, so watch this space for "when and where".

Overall, and as much as I like meeting all my friends in the U.S. and appreciate the efforts of the TechEd team over there, I think that for the last 4 years TechEd Europe consistently has been and will be again the better of the two TechEd events from a developer perspective. In Europe, we have TechEd and IT Forum, whereby TechEd is more developer focused and IT Forum is for the operations side of the house. Hence, TechEd Europe can go and does go a lot deeper into developer topics than TechEd US.

There's a lot of work ahead so don't be surprised if the blog falls silent again until I unleash the information avalanche on Proseware and FABRIQ.

Categories: Architecture | SOA | Talks | TechEd Europe | TechEd US | FABRIQ

The two biggest conferences in Microsoft space (save PDC) are coming up and I am already looking forward to be in San Diego in two weeks and in Amsterdam four weeks later. Those two events are always very special because they are big, because they are really well organized and because I get to meet and party with very many good friends who I see regularly at some place somewhere on earth, but only once a year we’re all together.

As much as I value the technical education aspect of events like that (yes, I do attend sessions, too), the primary reason for me to go to TechEd is too meet friends and make new friends. And the “networking” on the professional level that goes on at TechEd is very important as well: There’s nothing in this industry as valuable as learning from other people.

What I am also looking forward to is some time off when TechEd Amsterdam is over. At that time, I will have been to 25 countries since January of this year (several of them twice or even more often) and I would have to do some serious analysis of my calendar to assess how many events it were. My friend Lester Madden made the best comment on that sort of traveling lifestyle some time back in February. We boarded one of those planes together and he threw himself into the seat grinning sarcastically “Ah! Home, sweet home”.

So with the somewhat slow summer time ahead, I’d like to say “Thank you for all the beer”, because Microsoft (most, but not all events were hosted by them) certainly knows how to throw great parties. So here are my Feierabend Awards” for the first half of 2004 and before the “big two” events:


My “Winter/Spring 2004 Best Conference Party Award” goes to: The Beach Party at Microsoft TechEd Israel (Elat, Israel). Close runners up are the Arabian Night at the North Africa Developer Conference 2004 (Casablanca, Morocco) and the “Wild West” party at the NT Konferenca 2004 in Portoroz, Slovenija.  

My “Winter/Spring 2004 Best Organized-After-Work-Activity Award” goes – hands down – to Microsoft Finland and their Architecture Bootcamp in Ruka, where we did a 25km snow mobile ride in beautiful northern Finland and afterwards had a very Finnish “now let’s get naked with all the customers and go to Sauna” experience. Runner up is a great evening hosted by Microsoft Turkey at Galata Tower in Istanbul. The restaurant up there is an absolute tourist trap, but we had a fun night and the views from up there can’t be beat.

My “Winter/Spring 2004 Best Beer Award” must of course go to Dublin. Not much (except our local beer in and around Düsseldorf) beats a fresh Guinness. Along with that goes the sub-award for  “most inappropriate workplace discussion” about how cleavage (Def. 6) is most effectively used in business.

The “Winter/Spring 2004 Best Restaurant Award” goes to the Vilamoura Restaurant (Portuguese) at the Intercontinental Hotel in Sandton/Johannesburg for absolutely awesome shellfish. Runner up is another Portuguese restaurant: the Doca Peixe in Lisbon/Portugal. The special Best Homefood Award goes to Malek’s mother. The “Winter/Spring 2004 Best Nightclub Award” goes to the Amstrong (sic!) Jazz Club (which it really isn’t) in Casablanca, Morocco.

The “Winter/Spring 2004 Gorgeous Event Hostesses Recruiting Award” (sorry, but while that’s not strictly “after work” that’s a category that I can’t leave out) has to be evenly split between four winners: Morocco’s North Africa Developer Conference 2004 (just ask Mr. Forte),  Slovenija’s NT Konferenca 2004 (reliable winner each year), the Longhorn Developer Preview event in Budapest/Hungary and the MS EMEA Architect Forum Event in Milan, Italy. Israel already won the best party event and that should speak pretty much for itself. Therefore they’re runner up in this category.

The “Winter/Spring 2004 Best Travel Buddy Award” goes to Arvindra Sehmi for the EMEA Architect Tour, and Lester Madden, Nigel Watling, Hans Verbeeck, and David Chappell for the Longhorn Developer Preview Tour.  

Finally, the “Winter/Spring 2004 Best Host Award” goes to my great friend Malek Kemmou from Morocco, whose house became “Speaker’s HQ” before, during and after the NDC conference and who took us all around the country to experience Morocco – and refused to let any of us pay for anything.

Categories: Talks | TechEd Europe | TechEd US

Das Beispiel von der Nachtsession zum Thema Transaktionen beim Technical Summit in Kassel ist hier zu finden. Und hier ist das passende Slidedeck.

Categories: Talks

On our 4 hour taxi ride from Portoroz in Slovenia to Zagreb in Croatia, I decided to make some significant changes to my Indigo slide deck for the tour. David Chappell called my talk an “impossible problem”, mostly because the scope of the talks we are doing is so broad, ranging from the big picture of Longhorn over Avalon and WinFS to the Whidbey innovations and I am stuck in the middle with a technology that solves problems most event attendees don’t consider to have.

So I took a rather dramatic step: I dropped almost all of the slides that explain how Indigo works. What’s left is mostly only the Service Model’s programming surface. For the eight slides I dropped, I added and modified six slides from the “Scalability” talk written by Steve Swartz and myself for last year’s “Scalable Applications Tour”, which now front the talk. Until about 20 minutes into the “new” talk, I don’t speak about Indigo, at all. And that turned out to be a really good idea.

As I’ve written before, many people who attend the events on this tour have no or little experience in writing distributed applications. In reality, the classic 2-tier client/server model where all user-code sits on one tier (let it be Windows Forms, VB6, ASP or ASP.NET) and the other tier is the database does still rule the world. And, no, the browser doesn’t count as a tier for me; it’s just a “remote display surface” for the presentation tier.

Instead of talking about features, I now talk about motivation. Using two use-case scenarios and high-level architectural overviews modeled after Hotmail and Amazon (that everybody knows) I explain the reasons for why distributing work across multiple systems is a good thing, how such systems can be separated so that each of them can scale independently and what sort of services infrastructure is needed to implement them. And it works great. Once I have the audience nodding to the obvious goodness I can continue and map the requirements to Indigo features and explain the respective aspects of the service model. The flow of the talk is much better and the attendees get more and immediate value out of it. If I weren’t so time constrained I would probably map it to Enterprise Services (now) and Indigo (future) all in the same talk and also show to do the transition. I am sure that I can do that sort of talk at some event this year.

Lesson learned: Less features, more why. With the majority of developers the challenge isn’t about showing them how distributed systems are being improved; it’s about getting them to understand and possibly adopt the idea in the first place.

Categories: Talks | EMEA Longhorn Preview | Technology | Indigo

January 24, 2004
@ 09:54 AM

The Microsoft Developer Days 2004 in Den Haag (The Hague) were a great event. Not so much fun was going there (the train from Utrecht was split in two trains on the way and I ended up in Rotterdam instead of Den Haag at first) and getting back (the train from Venlo to Düsseldorf simply didn't go because of "technical difficulties" so I had to take a rather expensive cab home). 

I've had lots of interesting discussions and the result of one was that I might be speaking at the SDGN's CttM conference. I'll definitely be back for the second run of the Architect's Forum in Zeewolde in March 29th.  

De SDGN heft gezegt dat ik nu moet genoeg Nederlands lere omdat ik mij CttM presentatie in de Nederlandse taal kan doen, maar ik weet niet of ze bereid zijn om mij zovel tijd voor een presentatie te geve zo dat ik ook lang genoeg voor iede enkele woord kan zoeke. :)     

My talk on Indigo apparently went well for the audience and one of my fellow RDs even said that he learned more about Indigo in my talk than at the PDC (that's because I consolidated the PDC slides and therefore have it "all at once"), but personally I was a bit unhappy with it. Didn't flow right. Two slides too much, one slide missing (I need to explain "Dialogs"). This will be fixed for the next stop in Oslo on Monday.

Categories: Talks | EMEA Longhorn Preview | Indigo

I leaving shortly for Den Haag for the first installment of the Longhorn Developer Preview Tour throughout Europe as part of the Dutch Developer Days 2004. We start tomorrow and I am quite excited since this is the first time I will speak about Indigo in any detail to a larger audience. I've witnessed Indigo "forming" from a distance when the team was still in "stealth mode" and it's great to see how it comes along.

But be forewarned: In my talk there will be no live demos. I have 75 minutes for the talk and I had to decide whether I concentrate on explaining the "M5" milestone that is currently in development in Redmond and which implements the (likely) final programming model or whether I allocate more time to the M4 model found in the PDC build. The decision that I made was that M4 is so different from M5 that unless you want to get a major degree in Longhorn development history or have way too much time on your hands, learning and therefore showing M4 code is almost pointless. I will show code, but it won't run.

If you want to check out how this first run of my talk goes (as usual, I don't really rehearse talks so this is as spontaneous, "fresh" and probably embarrassing as it gets on this tour), Microsoft Netherlands will have a live webcast tomorrow that you can log into at

Categories: Talks | EMEA Longhorn Preview | Indigo

January 20, 2004
@ 08:04 AM

I am getting ready for the Longhorn Developer Preview tour. Now that the whole notebook ordeal is hopefully over, I have been and still am polishing slides and we'll have an online rehearsal today during the day. Furthermore, we're working with Microsoft EMEA on a two day workshop about writing service oriented applications that consolidates all the thinking that I've been blogging about in the past year. The "sample" around which the workshop will center is, not very surprisingly, the FABRIQ.

I really need to get back into a "blogging mood".

To expect that the newest hardware works with a pre-Alpha version of the newest Microsoft operating system may be expecting a bit much. My Alienware Area51-m just wouldn't boot past the logo screen just 3 seconds after booting from the install disk. It just hung. Bummer.

To expect that a hardware vendor, especially one that's comparatively small and which is specialized in gaming machines and therefore very consumer focused, would even consider providing support on that issue is hopeless.

Is it? Well, usually it probably would be, but not with Alienware. Their tech support simply rocks. And with their help and help from the Longhorn Evangelism team in Redmond, Longhorn is now finally running on my new notebook.

The problem of the Area51-m not booting Longhorn is an unfortunate combination of a more BIOS-sensitive bootloader in Longhorn compared to XP/Win03 and a bug in current production AMIBIOS (AMIBIOS8, 1.09) that Alienware puts on their machines. Once we had that identified and I got the same fix that the Longhorn Evangelism team got for their Alienware machines (they have them too), flashed the BIOS and Longhorn booted.

Done? Unfortunately not. What I found was that this particular "special fix" BIOS version (1.08.01) would work stably with Longhorn and Win03 only when the machine is on AC power. Once you unplug and run on batteries, both OSses bluescreen after about 10-15 seconds.

Because this is my primary machine, I must have the machine running on batteries and therefore I re-flashed the BIOS back to the production version (1.09) so that at least Win03 would work and for Longhorn demos I'd just re-flash down to the other BIOS. Once done, I rebooted the machine and it happened to boot into Longhorn. And worked. Why would the installer hang so early on this BIOS version but the OS just boots fine once installed?  Puzzling.

So after all this had been sorted out, I figured that Longhorn isn't a good idea to have on the D: drive, after all. It does work, but I'd have to adjust a lot of demos and that's just too much work. So I am installing Win03 and Longhorn once more right now in the following sequence: BIOS 1.09 > Win03 to D: > "special fix" BIOS 1.08.1 > Longhorn to C: > BIOS 1.09. Now that we've got this sorted out, Alienware will hopefully have a permanent fix for the production BIOS soon so that this step becomes unnecessary and so that others can get Longhorn installed on their Area51s as well.

On the Longhorn tour, we'll have two of these boxes as our demo machines. Although they are absolutely swamped right now, Alienware made it possible to provide a system for Microsoft on very short notice, so that we don't have to carry a rather massive desktop PC around on "this 13 cities in 13 consecutive work days" tour as was initially planned.

Now I need to work on my backlog.

Yesterday, at the Microsoft EMEA Architect Forum in Portugal, I found out yet again that writing slide decks that work for all of Europe is a bit challenging. To make a point about some of the benefits of using an EAI/B2B tool, I was citing some points from a BizTalk case study talking about how the Swedish company Svenska Foder implemented their B2B infrastructure. Guess what? "Foder" isn't something you use to feed animals in Portuguese; it's rather a pretty strong word describing what people do when they're trying (or not trying) to make babies.

Categories: Talks

I am very much looking forward to the “EMEA Microsoft Longhorn Developer Preview Tour” that’s going to happen in a very dense 3 week stretch in late January / early February 2004. I feel honored to have been invited again to present the highlights of the PDC on a speaking tour throughout Europe (as in 2002) with David Chappell and an excellent group of Microsoft EMEA technical evangelists (Lester Madden, Nigel Watling, and Hans Verbeeck). We are going to be in 13 countries within 3 weeks – or 15 workdays. I will post links to the individual country’s event sites as I learn about them. In one day, we’ll take you through the best of Longhorn, WinFS, Avalon, the Visual Studio Whidbey release and Indigo (my part). If you weren’t at PDC, you should go. If you were at PDC, you should still go just to hear David speak. :-D

Here’s the first event I know the official site of. The Developer and ITPro days in Belgium are, however, much bigger than “just” our tour. We’ll be there on the second day (Feb 11th), but there’s a very exciting program on the first day already and the array of speakers is nothing less than impressive. (I just wonder why some of the speakers look like lizards right now)

Developer and ITPro Days 2004. February 10th-11th 2004, Ghent, Belgium. I’ll be there.


Categories: Talks | EMEA Longhorn Preview

While you wait for the Indigo show to start, here is some stuff to look at and consider (again).

The links at the bottom of this post point to five slide decks that I have been using for presentations throughout this year. All of them are, indeed, very relevant to the Indigo story you will be hearing at PDC 03.

This spring, I’ve been on the road together with my good friend Steve Swartz, who is one of the Architects and Program Managers at Microsoft’s Indigo Team. On this tour, we have presented lots of ideas around scalable applications in seven cities all over Europe. And of course, we knew at the time that Indigo was coming … ;)

The “DistSys” ZIP files below contain the four decks we have been using on that tour. “Layers” is about layering, tiers and services (pay attention to “dialogs”), “Processes” is about implementation aspects such as process models, state and sessions, “Transactions” is about taking thinking about transactions beyond the database and “Scaling” highlights several essential ideas around scalability.

My DEV357 talk at TechEd Dallas, which is in part an aggregate of the talks from this tour, may even be more important, because it actually contains outspoken, concrete guidance for how to build applications on today’s technology stack in order to be ready for Indigo. To summarize the core message of that deck in terms of appropriate use of the existing technology stack for distributed systems:

·         .NET Remoting: Use for “local”, on-machine, cross-app-domain communication.
(In clear words: Remoting calls don’t leave the machine!)

·         Enterprise Services: Use for “near”, cross-process, cross-machine communication

·         ASMX: Use for “near” or “far”, cross-process, cross-machine communication. Prefer over Enterprise Services, unless you need the features or have pressing performance problems.

Read. Understand. Absorb.


Categories: PDC 03 | Talks

Here’s a little, so far unpublicized secret from my calendar (read on, freebie ahead):

My company, newtelligence, is currently running a series of workshops on “Windows DNA to Microsoft .NET migration” for Microsoft EMEA at the Microsoft Technology Centre in Reading, UK. We already ran three events with lots of success and have at least another two scheduled.

On the first day, we cover aspects like “Why, when and when not to migrate”, migration strategies, Web services integration and side-by-side comparisons of technologies like ASP/ASP.NET and ADO/ADO.NET. And on the second day, we actually port an ASP/COM+ app to the .NET platform from scratch and show common preparation steps, pitfalls and workaround techniques.

And here’s the best of it all: Microsoft offers this workshop series to their enterprise customers at no charge. All you need is to register and pay your own travel and hotel. The events run at the Microsoft Campus in Reading, UK. Next dates are November 6-7 and December 11-12. Seating is very limited, so if you are interested you need to be quick to grab a seat.

There are two ways to get in. Either contact your Microsoft account manager (if you have one) and ask about the “DNA -> .NET Interop and Migration” course at the EMEA Microsoft Technology Centre or, much simpler, simply drop us a mail at with your full business contact details and we’ll get back to you with the full agenda and information on how to sign up (given there are still seats available). If you don’t think you are a Microsoft enterprise customer – write anyways. We’ll try.

Why am I writing this? At the last run of the event we still had a few seats left and I suspect that was simply because only few people knew about these events and Microsoft didn’t make them very visible. So I thought I should make that a bit better known for the benefit of the community ;)

Now you know. Tell your friends. It’s good, it’s free, can’t go wrong ;)

Categories: Talks

September 23, 2003
@ 08:05 AM

Here are the two PPT decks from yesterday's talks at the JAOO conference and a few notes...

Layers-Tiers-Aspects-CV-V2.ppt (1.24 MB):

This deck is about layers and tiers and highlights (well, the talk that goes along with the deck does) how I make a strict distinction between the term "layer" and "tier". "Layer" is about organizing code in order to make it more resilient against change in other layers and "tier" is about distributing layers across processes and machines and defining appropriate boundaries as well as selecting technologies to cross these boundaries. I am also advocating to generalize the "classic" 3-layer (not tier!) model of "presentation", "business logic", and "data access" and make the underlying idea a pervasive and recursive pattern for basically all code in a business app.

Any class and any module may have one or multiple "public interfaces" that may be mapped to several incoming channels bound to different technologies. The public interfaces themselves (this includes public methods of a plain class) don't implement any logic, but always delegate to a strictly private internal implementation. That implementation, in turn, will not talk to external resources and services directly, but bind to abstract interfaces and access them via factories. (I will explain this in more detail here when I can make the time to do so)

At JAOO, the short AOP section of this deck drew some furious comments from an attendee after the session, who said that I was totally wrong and the AOP worked brillantly as a general purpose programming paradigm. However, when talking to him for a while, he had to admit that he and the colleagues on his project are indeed carefully considering and defining aspect dependencies and he sort of acknowledged that while their set of aspects will work great in and by itself, but it would be hard to combine it with an arbitrary foreign set of aspects. My main takeaway from the discussion with him was, though, that (a) it's due time for Java (and C#) to get support for generics, because that may be a better tool for a couple of things he pointed out and (b) that if you give people a tool like AspectJ, they will just jump and reinvent the wheel. The aspects he said his team implemented were (in ES terms) Transactions, JITA, Tracing, Security, etc. All the usual suspects.

SOA-CV-V1-final.ppt (745.5 KB)

This deck is an updated version of the Service Oriented Architectures deck that I've been using for this year's Microsoft EMEA Architect's Tour. I've included a couple of new aspects, including a stronger endorsement of UDDI, an explanation of the relevance WS-Policy and WS-Addressing, a look at the relevance of WSDL in the presence policy and addressing and a reference (and two borrowed slides) to my friend Arvindra Sehmi's most excellent presentation  (free registration may be required) on autonomous computing and queing networks, which has become a very important part of the overall SOA story for me.


Categories: Talks | JAOO 2003

I am sitting here right outside the conference venue of the JAOO Conference in Aarhus in Denmark, which kicks of the Fall/Winter 2003 conference season for me. I am speaking about Service Oriented Architectures and Web Services in my first talk and will drill down on Layers, Tiers, and Services in my second talk. Unfortunately the time slots are just 45 minutes and I just can't get myself to cut too much of the content .... as usual. Later in the week, I'll go to the BASTA! conference in Frankfurt where I won't speak, but want to check out how Jörg, Achim and Michael are doing and talk to a couple of folks there.

Anyways, after my vacation and a week of orientation on what to do next, I am back in business. And after "the summer of the blog engine", I'll go back to focus more on architectural topics -- including here.

Categories: Blog | Talks

July 18, 2003
@ 09:04 PM
I will be speaking at TechEd Malaysia 2003
Categories: TechEd Malaysia | Talks

July 4, 2003
@ 04:34 PM

Rafal is God.

We're at the speaker hotel looking at the final speaker scores with a group of people including David Platt, Kimberly Tripp, Juval Löwy and Gert Drapers. Rafal Lukawiecki did the four highest ranked sessions of TechEd Europe. The four top spots of all speakers and sessions, all him. The highest was 8.58 out of 9. With 288 attendees responding. That's just unbelievable and it is really, really well deserved, because Rafal is just awesome. We all agree that when it comes to technical presentations, Rafal is God.

Categories: Talks

July 3, 2003
@ 11:53 AM

I am party incompatible ... ummm... no, my session schedule is party incompatible, says Lorenzo. The good news is: My talk this afternoon at 18:15 (DEV387) is going to be pretty light compared to yesterday ;) The session is on "Layers & Tiers" in distributed systems and I'll explain the difference between the two terms, will talk about a broad idea about what a service in an SOA world is and will talk about proper treatment of data and about using data services and about communication patterns and contracts. Very conceptual talk and only one quick (prebuilt) demo to illustrate the concept of "smart" data services.

Categories: Talks | TechEd Europe

July 3, 2003
@ 11:45 AM

WEB404 post-mortem

My talk on web services internals like custom reflectors and importers and format extensions went well -- for what I wanted to achieve. However, based on the audience feedback there was definitively a spread between good and bad in terms of customer experience and most of the critical comments are related to the demo (of course). Here's two out of about 40 feedback comments I got :

  • The speaker had quite a few surprises with his own code during the demo, giving the impression that what he proposed was rather a problem than a solution. The techniques shown looked very powerful, though.
  • sorry about all the demo problems, I hope practicing the demos 3times more before the next time will help.

What's interesting about these two is that everything actually worked and failed just as expected. I was running into "problems" that were there by intent in order to introduce the next step to get the solution going. Whenever I do a coding session (and I think it was appropriate to do that for this session) it is not even my intent to make it all look as if the sun would always shine and everything were easy and works with two mouse clicks. It's not. It's work. Also, I needed good reasons to go into the debugger and show appropriate debugging techniques -- essential for writing importers. But it's always pretty difficult to make it right for everybody, especially with level 400 talks on very complex matters where you need to cover a lot of ground.

Here's the link to the Soap Extension Wizard once more.


Categories: Talks | TechEd Europe

July 3, 2003
@ 11:14 AM
Here is the sample code I used for the WEB400 talk about loose coupling here in Barcelona today. To get it to run you need to create virtual directory for the "web400" directory and move the person.xml file into client\bin\debug.
Categories: Talks | TechEd Europe