November 30, 2003
@ 06:14 PM

I'll put together the v1.5 build version of dasBlog next week. The v1.4 "PDC build" proved to be "true to the spirit of PDC bits" and turned out to have a couple of problems with the new "dasBlog" theme and some other inconveniences that v1.5 will fix. The true heroes of v1.5 are Omar and the many other frequent contributors to the workspace; I just didn't have enough time to add features recently.

As I blogged last week, I am very busily involved in a exciting (mind that I use the word not as carelessly as some marketing types) infrastructure project on service-oriented architectures, automnomous computing an agile machines. I wrote some 50 pages of very dense technical specification and a lot of "proof of concept" code in the past two weeks and we're in the process of handing this off to the development team. I am having a great time and a lot of fun, but because the schedule is insanely tight for a variety of reasons (I am not complaining, I signed it knowingly), I've been on 16 hour days for most of the past two weeks.  In some ways, this is also an Indigo project, because I am loosely aligning some of my core architecture with a few fundamentals from the Indigo connector architecture published at PDC to that we can take full advantage of Indigo once it's ready. The Indigo idea of keeping the Message body in an XmlReader is an ingenious idea for what I am doing here. In essence, if you only need to look at the headers inside an intermediary in a one-way messaging infrastructure like the one I am building right now, you may never even need to look anything from the body until you push the resulting message out again. So why suck it into a DOM? Just map the input stream to the output stream and hand the body through as you get it. That way and under certain circumstances, my bits may already be forwarding a message to the next hop when it hasn't even fully arrived yet.

One of the "innovative approaches" (for me, at least) is that within this infrastructure, which has a freely composable, nestable pipeline of "aspects", I am using my lightweight transaction manager to coordinate the failure management of such independently developed components. The difficulty of that and the absence of an "atomic" property of a composite pipeline activity are two things that bugged me most about aspects. There's a lot more potential in this approach, for instance enforcement of composition rules. It works great in theory and in the prototype code and I am curious how that turns out once it hits a real life use-case. We're getting there soon. (My first loud thinking about something like this is was at the very bottom of this rant here.) I'll keep you posted.

In unrelated news: Because I know that I'll be doing a lot of Longhorn work and demos in the upcoming months (my Jan/Feb/Mar schedule looks like I am going to visit every EMEA software developer personally), I've meanwhile figured that my loyal and reliable digital comrade (a Dell Inspiron 8100) will be retired. Its successor will have a green chassis.

Categories: dasBlog | Indigo | Web Services

November 24, 2003
@ 09:58 AM

No, I didn’t give up blogging. I am working on a project. I am writing lots of specification and a big prototype. Has to do with SOA, Queuing Networks, Agents, Agile Machines and even a little bit with Indigo. I am pretty excited about this. If all works well, the result is going to be public very early next year.  I am just too busy to blog at the moment. I am the critical path. Excuse the continued silence. ;-)

Categories: Other Stuff

November 14, 2003
@ 02:21 PM

While most of the newtelligence events are currently held in German (such as, there's actually one that you can attend that's held in English - and it happens in one of the most beautiful little countries in Europe: Slovenia.

(The area around the event location is so cute, you might think Disney had something to do with it - I've been assured that they didn't)

CodeWeek runs a full week (7 days!), from December 1 through December 7 in Bled and I've been told that they've got one or two seats left, so if you're interested (or know someone who is) and act quickly, you may still be able to grab one.

Categories: newtelligence

I am using shared networking in my Longhorn VPC and I could browse the web and connect to the network. So to make working on the network a bit easier (and to try some more features) I thought it may make sense to add the Longhorn Virtual PC on my box to our domain. Setting this up worked.

Now, if I boot up Longhorn and my box is connected to the network, I get to see "Press Ctrl-Alt-Del to begin." and right after that, the VPC reboots. If I am quick enough to get to the logon screen, Longhorn reboots right after accepting the password. If I disconnect my machine from the network I can log into local LH accounts just fine.

Categories: Longhorn

November 11, 2003
@ 11:44 PM

“Package load failure”. Package ‘VSCorePackage’ has failed to load properly ( GUID={7494682B-37A0-11D2-A273-00C04F8EF4FF} ). Please contact package vendor for assistance.  

Uninstalled, rebooted, reinstalled, rebooted, problem sticks.  :-(

Update: Apparently this error isn't really a sign of complete failure of the development environment, but rather a result of project file corruption. Before the problem occured, the C# compiler in VS tanked and obviously trashed the project file.  New projects still work as expected, but the project that causes this failure is broken.


November 11, 2003
@ 10:55 PM

Joe Long, the Product Unit Manager for XML Enterprise Services at Microsoft, talks about the Indigo migration story in this recorded presentation on MSDN. If you weren't at Joe's PDC talk and think you don't have 37 minutes time for this, you can still not afford to miss listening to the prescriptive guidance section starting at slide 60, if you ever have or will cross an application domain boundary with a Remoting, Enterprise Services or Web service call on the current stacks. And now leave here and go there.

Categories: Indigo

Because most teams at Microsoft seem already a milestone or two ahead of what the Longhorn and Whidbey PDC builds reflect, how much is it worth to report bugs?

Hello? Redmond? Comments?

Categories: Longhorn

November 10, 2003
@ 07:52 PM

This article here hints at XBox Next running on PowerPC. Of course, the kids over at Slashdot call such a potential move bad names, but that's of course, because they weren't grown up enough when PowerPC was indeed a hot topic for Microsoft and Windows NT. In fact, I may still have a vintage Windows NT/PPC CD somewhere around here.

  • Reminder #1: the NT kernel runs on Itanium, AMD64 and x86 and if Microsoft really, really wants, they can certainly make it go on PPC (again).
  • Reminder #2: Windows NT was born and created on the Intel i860 and MIPS R3000 Risc processors and went to x86; not the other way around.
  • Reminder #3: Xbox runs an NT kernel - stripped down to what's exactly necessary. There is processor dependent code in Windows, but I would assume that the stuff "down there" is a relatively clean place.
Categories: Other Stuff

Between PDC and now, I was in Redmond on Monday and Tuesday at a meeting with the Indigo team. One of the topics discussed were the new transaction management capabilities that are part of Indigo (which, for Longhorn, includes a lightweight transaction manager).

Ingo was there, too, and we had a little argument about how hard it is to write transaction resource managers. Ingo thought that it would be awfully hard to write them and that average programmers would never do so and wouldn’t see the need for them. I said “hey, it’s really trivial”, explained that I consider transactions a very general programming paradigm for much more than just databases and told him that I would write a little demo to prove it. I wrote the demo on the plane going home in about 3 hours. Here it is.

The “2 Phase Commit Puzzle” application is a little Windows Forms puzzle that doesn’t use Indigo or the Longhorn bits, but rather employs a little lightweight 2PC transaction manager that Steve Swartz and myself hacked up when we were on our Scalable Applications tour this spring.

The puzzle uses four resource managers (transaction participants). The TileWorker keeps track of the tiles as they are moved around, always votes “yes” on Prepare, does nothing on Commit and rolls all tiles back into their original (shuffled) state on Abort. The TimeoutWorker votes “yes” if the puzzle is completed (pressing the “Done” button) within the preset time-span and “no” otherwise. It does nothing on either Commit or Abort otherwise. The GridWorker votes “yes” on Prepare if the puzzle is completed (order is correct) and otherwise “no”. It also does nothing on Commit or Abort. The OutcomeContingentMessage is a participant that will always vote “yes” on Prepare and shows a “Congratulations” message on Commit and a “You failed!” message on Abort.

The great thing about this little puzzle is that I could add arbitrary other success/failure conditions for the outcome of the puzzle (e.g. number of moves) without having to rewrite or even touch the code determining the other conditions or the code emitting the result message. I would just have to hook in the new resource and feed it with information from the grid.

Transactions aren’t just for databases. The discussion of the theory behind this is of course in our already well-known transaction deck.

Below are the download links to the game executable (in IE, you need to right-click and save it to the local disk; it will not work if started directly from IE) and the source code archive, including the simple WorkSet transaction manager. Check it out.

Download: newtelligence.TxPuzzle.exe

Categories: Indigo

Avalon is very promising. No doubt about that. I can very well imagine how Visual Studio "Orcas" (the one to follow Whidbey) will add fantastic designers for creating stunning Avalon UIs. However, today, my first steps with XAML remind me very much of my first little baby steps exploring the Win16 API back in 1990 using Charles Petzold's Windows Programming book. Of course, it's all on a vastly elevated level and some of the controls are stunningly powerful, but putting together an Avalon app that actually looks good is pretty difficult right now. I am not complaining -- it's very early and I am happy that Microsoft lets me play with the stuff. I am just so horribly spoiled by visual design tools.

I figure that Avalon will create a lot of new jobs for designers. In fact, if you don't have a designer, your app will look really, really old, no matter how well you master the Avalon technology. 

And I figure that I'll have to freshen up my math skills on trigonometry and linear algebra in a big way. Vector graphics is a very different ballgame.

Oh... and MSBuild does really rock the house.

Categories: Avalon