Motto - You signed up for this, so Federal Anti-Spam laws do not apply

Technical content of this issue - 4 out of 5


Today I finally solved my internet problems once and for all by changing rooms. It meant coming back to the hotel in the middle of the day to pack up all my stuff and cart it upstairs to another room, but it was a sacrifice that I am willing to make to service you, my loyal readers. Oh, yeah, turns out my new room is on the Concierge Floor. That means there's a little room down the hall with breakfast in the morning and free booze and snacks at night - so I got that goin' for me. Plus, I got this great shoe polishing machine in the corner - I got so excited trying it out that I ended up ruining my brown suedes.

We are up to over 50 direct subscribers, with another couple dozen getting it via forwarded mailing lists.

General Session - Eric Rudder

This newsletter maintains the highest editorial content and screens each contributor carefully, that's why I have been the only author so far this year (plus I was the only one willing to do it). But this morning, after dropping 37 cents in a coffee cup in front of a guy on the corner, he mentioned that he had attended the morning general session that I had missed - so here is his report. He actually wrote this up at the conference center - I couldn't let a guy off the street back to my room, c'mon, I'm on the concierge level! Let's have a warm Biff's PDC Newsletter ovation for Mr. Steve Harshbarger!

"Tuesday's keynote covered a broad range of topics, mostly centered around Yukon (the next SQL Server) and Whidbey (the .NET Framework 2.0 and an associated rev to the Visual Studio IDE). Both are planned for release in late 2004. Here are some highlights.

It seems Microsoft can't have a conference without showing various PDAs and cell phones running Windows applications, and this PDC was no exception. The demo showed using VS to build and deploy a SmartPhone app including camera integration, contact book integration, and use of a web service. What was unexpected, though, was the appearance of Batman as PDA pitch man. Our Batman came on stage with a utility belt full of the latest Pocket PC's and SmartPhones, augmented by a backdrop of "Pow", "Wham", and "Blammo" graphics. That's all well and good for entertainment, but I found one aspect of the character disturbing. Picture an overweight Batman with his "plastic muscle chest" (I believe that's the right term) having slid down and balanced at a 45 degree angle across his Bat-belly. Holy improbable anatomy, Batman!

On a more serious note (ed - careful, we don't allow those), several new features of Yukon were described. Most notably, we'll be able to write stored procedures as managed code in any NET language, and Visual Studio will be able to debug them interactively. Of course, they still be written in T-SQL, and in the case VS will provide better graphical tools for writing them. It was noted explicitly that there will be no reason to write extended stored procedures - any case requiring that should be accomplished with managed code going forward.

In the nearer term, Microsoft plans to ship a new set of "reporting services" for SQL Server before Yukon ships. This looks like a Crystal Reports killer. It includes graphical tools to author reports (which looked somewhat like the report writer in Access), tools to create reports in various formats (print, PDF, Excel, web, Word, email, etc.) from the same definition, and a facility to distribute reports to users (both push and pull models). The example they showed included interactive drilldown functionality in the report itself (hosted in the browser), and they also exported it to Excel with the same drilldown features retained in the workbook. A beta CD of the reporting services was distributed later in the day, so I assume it will be available for download as well. No word on the expected ship date for the tool though.

One other demo showed using InfoPath as a front end to SQL Server. This was pretty interesting. They showed writing a stored procedure in SQL, then exposed the procedure as a web service by setting one simple attribute. Then, connected InfoPath (the new XML forms application in Office 2003) directly to the web service. Based on an XML schema, InfoPath was able to generate a functioning form to query, view and modify data in the SQL Server without any code. This seemed like a compelling alternative to writing Windows or web application for simple data entry forms.

ASP.NET is getting a number of improvements. First, front page server extensions will no longer be required for VS.NET to communicate with/deploy to the server. A new feature called "Master Pages" is being added to let a developer create elements which should be reused across multiple pages in a site (a.k.a. "visual inheritance"). Over 40 new ASP.NET controls are being provided with the aim of reducing the "plumbing code" developers have to write. Examples cited include components for handling user authentication, membership and personalization.

Finally, a brief demo of "Whitehorse" was shown. This is a technology to help development and operations teams communicate better and smooth the process of deploying applications to production environments. It works like this - operations staff use a visual tool to define a logical view of the production environment including classes of servers (e.g., web servers, app servers, database servers), positions of firewalls, and policies (e.g., "database access must be done via impersonation"). The developer can then "pre test" his/her deployment within Visual Studio. The tool validates each component of the app in the context of the policies of the machines on which it will run and reports errors to the developer before deployment. According to Microsoft, this will all but eliminate the need for teams to spend nights and weekends doing deployments, and will free operations staff from their pagers, let them spend more time with their families, and generally restore work/life balance to the IT industry. My take is this was just a bit optimistic (and I did embellish the claims a bit too.), but properly implemented, this could provide a valuable and structured way for dev and ops teams to anticipate and prevent common deployment problems.

Thanks, Biff, for letting me grace your pages with my commentary. And even more thanks for the work you put in producing this newsletter. Having written this one piece, I have a deeper appreciation for how much effort goes in to producing this in real time. "

Ed - Stop, I'm blushing! Thanks for the info Steve! I should point out some sort of author info, like Steve is VP of Client Service and Product Development for Softagon in San Francisco, CA (which he is) or that he speaks 23 languages fluently (which he doesn't) or that he has many writing credits with Microsoft Press (which he does).

This ends Steve's article, all text from here on in for the rest of this issue can be blamed on me.

General Session - Gordon Mangione

This talk dwelt on two topics, Yukon and WinFS. The Yukon stuff focused on developer productivity improvements. These were interesting, but not life changing stuff in any way so I'm not going to spend time on them here - there will be more on this after a Yukon and XML talk tomorrow. Suffice it to say that SQL Server continues to increase it's lead over Oracle in the developer tools department and is about to lap SQL*Plus a second time. The edlin interface of SQL*Plus is so old that Jim Allchin isn't even using it.

The WinFS talk part of the talk was more interesting to write about. Remember that this is the new file system in Longhorn that adds rich (hee hee) query abilities to the shell, making finding and managing files more powerful. It is also the system that I questioned as being too complex for normal users to truly understand. This talk gave me a little better understanding of the technology and although I still have questions, I'm starting to get on board. Gordon (or, Gord, as he's known to the few thousand of us in the room) started the talk by discussing the problem rather than jumping right into the technology. This gave the audience a better frame of reference than yesterday's talk - if you are ever giving a talk remember this trick, it has made several sessions here very effective. He spoke of Moore's Law being even more significant for disk space, with disk space tripling every 18 months - it must be true, he had a fancy graph to back it up. His claim that we are only a few years away from people having a terabyte on their desk does seem reasonable, however. When we have this much data and this many files it is going to become impossible to use the standard folder mechanism to keep track of files. WinFS is an attempt to put together a shell that addresses the scope of this problem. Note that under WinFS is still NTFS.

WinFS encompasses 5 things - People, Calendar, Documents, Groups and Media, allowing you to search and manage each. At first this seems like a further scope grab by Windows (which it is), but if you think about the number of places where you keep track of people, for instance, it starts to make more sense. I have people in my hotmail account, my NASD Outlook folder and a personal Outlook folder as well. I am constantly trying to figure out which store has which people and which information is the most up to date. Each application is responsible for defining the attributes and metadata for an object (doc, person, etc.) and making that information available to the OS for WinFS to operate. When an app is installed, an XML configuration file defining the attributes of note is registered with the OS, just like the concept of associating an icon with an extension works right now. The app can set these values for a file or the user can do it themselves. Then WinFS lays all of its query functionality over the database of attributes, allowing the UI to perform all the flashy stuff we saw yesterday. It may not be a perfect solution to the file proliferation problem, but it's a good start. By the time it's released it will probably be even better.


If you have never attended a large event at a convention center like this, try to imagine having one hour to feed 5000 people. It is really amazing - as you walk into a giant room filled with round 10 person tables, they direct you to one of dozens of buffet tables to get your food. Then you are directed to a specific table to sit, kind of like you are directed to a parking place at a stadium. It really is quite an amazing feat and marred only by the fact that the food really sucks. Sunday wasn't too bad, but yesterday they tried to make Chinese and - well, they just shouldn't. Today I had Halibut - again, awful. In the past the meals are occasionally decent - hopefully these will pick up. The good part is that all through the convention center, Microsoft keeps us plied with different junk food every day. Yesterday we entered the center and found thousands of Krispy Kreme donuts (way better than Dunkin' Donuts) in the morning, and cookies, pretzels and energy bars in the afternoon. Today was bagels and croissants, yielding to candy bars. There's also soda, water, coffee and fruit available all through the day. We should have Twinkee day coming up sometime, I can't wait.

Session - "Indigo": Building Services (Part 1), The Fundamentals

After lunch I went down the hall to attend this 12:30 talk, arriving at about 12:32 and seeing a huge commotion at the door. People were stacked up three deep at the door trying to get into a full room. I peered over most of them (it's good to be tall) and saw Don Box standing on the dias - guess I should have been earlier. They have a Hi-Def monitor outside of each session showing what's going on inside and there were already 4 rows of people sitting on the floor to watch on the monitor since they couldn't get in. I gave up - hopefully they will repeat the session later in the week. I headed over to Manged/Native Interop Best Practices and Common Pitfalls and found a similar situation there. At that point I went down to the computer facility, printed out the Don Box slides and read the MSDN article on Indigo.

Session - "Indigo": Building Services (Part 2), Secure, Reliable, Transacted Services

This session was in a different room than the previous session, so I was able to get there very early and snag a seat. Once again, the presenter was Don Box - who showed up slightly late after the previous session ran a little late and the migration of hundreds, nay, a thousand people from the first room to this room caused a traffic jam. This talk was pretty good, and started to go into transactions - not so much transactions between services but within services. He did one code example, then I had to leave since I had a super-duper NDA meeting with the Indigo team set up for NASD by our Microsoft Architecture representative in one of the hotels. So there I go, leaving a session with dozens of people stacked up outside who couldn't get in.

Indigo - Meeting with the Product Team

So I get to the area of the hotel about 5 minutes late because of shuttle latency, and I'm trying to find The Standard Hotel. I'm where it is supposed to be, but there's just a foyer with some elevators, looks like an apartment building - no sign or marker of any sort. I go around the corner and see all these signs for a big Mercedes Show - some guy in a tux tries to give me a brochure. I must be in the wrong place, let's go back to the apartment. I ask a guy coming out, is this The Standard? Yes it is. I go in and around the corner out of site is a desk, then a little further on is a cocktail party in an open area with many very stylish people - all dressed in various outfits with various combinations of black and white - most of them distressingly good looking. I figure that was not the crowd I was looking for and I was right, this was more of the Mercedes Benz show. I head for an escalator on fringe of the group when I am stopped by two guys in tuxes who asked what I am looking for and I say Microsoft. They tell me I need the other elevator. I don't even know what floor to get off the elevator - my invite said the room number would be posted in the lobby, so I go to the desk and ask where the Microsoft meeting is being held. The clerk says she doesn't know the name - I say, "Microsoft - they're a big company" (the attitude of the entire situation may have been setting me off a little). She tartly explained that she knew what Microsoft was, but she needed the name of the person who was booked in the room. Another clerk stepped in that had the info so I head up to the room. I get there and there's 15 people sitting around looking at yet another slide deck on the wall of the room over the guy's bed (which sits on the floor in this exclusive, Art-Deco hotel). Most of the slides were review of stuff I'd already seen, so being a little late wasn't a issue. It wasn't exactly the in depth meeting with the product team that I expected, but folks were nice and I got an email contact from the business guy giving the talk.

Indigo - What I learned today

OK, even with all the false starts and weird hotels with the very nice people at the Mercedes Benz show and the desk clerk that had heard of Microsoft, I did learn more about Indigo from the talks I got to and the articles I read. I will try to add a little more perspective to where we were yesterday.

First, Indigo is more than just Web Services. They are stressing the Web Service aspects of it and downplaying the rest of it to reduce confusion. The non-Web Service features are not as far along and aren't clear enough to be discussed. Indigo also encompasses COM+/Enterprise Services, .NET Remoting, MSMQ and a couple other technologies I couldn't write down fast enough. It is the long awaited managed code version of COM+ services. As Indigo progresses through beta, more and more of these services will be superceded. For instance, once beta 1 comes out, the current DTC will be invoked "only when neccessary" (that's part of the cloudiness on the other stuff I spoke of).

The Web Services features are a little more settled. First, and most important, every feature and capability is built to W3C standards for interoperability. When two Indigo machines talk there are optimizations, but for interop Indigo supports WS-Security, WS-Reliable and WS-Transaction (I hope I got those three right!).

There is a very good MSDN Article discussing Indigo, if you want in depth info that is (and it pains me to say this) a better place to get info than this newsletter. It's pretty detailed, if you want just a few bullet points that I can give you. Note that this is the Steven Ambrose/Doris Kearns Goodwin section of the letter, in that most of it is lifted directly from the article listed above. Here is a paraphrased section from the article (except for the stupid comments - those are mine):

Indigo is a set of managed frameworks implementing service-oriented programming on the Windows platform. The Indigo programming model is based on four concepts-

  • A message is a transmissable piece of data that adheres to the SOAP data model - Not too complicated so far! In this case the Indigo framework wraps the concept of a message in a class called (follow closely here) - Message
  • Messages flow between ports - Still nothing to get too confused over. Indigo ports are endpoints for communications between services. Who would like to guess the name of the Indigo class supporting ports - you, in the back - that's right, Port.
  • A service is a piece of code behind a port - The code you write to process the messages - that's the service. There is no single class representing this concept.
  • Services communicate with their ports via channels - This seemed clear to me, but the subsequent section of the article just added confusion so we'll leave it at that.

Let's take a look at the code for a service that receives a string message and prints it to the console (once again - this is lifted from the article):

using System;
using System.MessageBus;

class MsgPrint : SyncMessageHandler
// This routine handles the message
public override bool ProcessMessage(Message msg)
// This implementation assumes that the message is a string
return false;

class app
static app Main()
// Here's the Port we spoke of. Nobody on any of my project
// should ever even consider naming a variable after a type by
// changing only the case! We assign the handler and open the
// port and wait.
Port port = new Port(new Uri("soap://localhost/simple"));
port.ReceiveChannel.Handler = new MsgPrint();

// wait forever

That's a quick look at writing a bare bones Indigo service. This can now receive SOAP messages and provide a service - although not a particularly useful service in this case!

Tomorrow is a talk on the roadmap to get to Indigo and what we should be doing now to be ready to move to Indigo when it arrives - watch for that in tomorrow's issue.

Letters - We Get Letters

In response to yesterday's Indigo article, LF from MD writes-

"Hey, guess what? MSFT just invented distributed systems! Again... (check out the Internet, it's pretty cool)."

Dear LF,

It must be hard out there in the world, struggling in vain against the inevitable Microsoft tide. We're coming for you, LF. -Ed.

Note - As I was reading LF's mail in the conference internet area, I noticed two men in sunglasses and brown suits wearing earpieces coming towards me from across the room. I thought it prudent to log off and lose myself in the crowd immediately.


Wow, big day - long newsletter! The mail is a little slow this year folks, surely we can think of a few more sarcastic, wry remarks to spice up the letters section - especially if I know my readership!

6 separate breakout sessions tomorrow, Indigo, Yukon, COM Interop, Indigo, Whidbey and Indigo - gonna be a long day and an info packed newsletter.

VP of Human Resources, Biff's PDC Newsletter