Shadowfax is an interesting set of “Reference Solution” that is being worked on by the PAG group at Microsoft. I think this would be a very important piece in the whole SOA (Service Oriented Architecture) space, with getting bits out the door in a quick and reusable fashion. Basically this is a similar implementation of Indigo in todays technologies (i.e. those that are currently shipping such as .NET). This “unifies” the four messaging options you have today:

  1. Web Services
  2. Remoting
  3. MSMQ
  4. DCOM

Per Microsoft here are the goals for this are:

  1. Enable separation between stable service interfaces and possibly volatile and unreliable Service Dispatching (Without the framework one would have to think about how to expose the service first. With the framework one can build a service first and then think about how to expose it.)
  2. Make it possible for developers to keep aspect-like logic, for example monitoring or auditing logic, separate from Service Dispatching logic.
  3. Provide a single, consistent mode of handling service requests regardless of the transport transport on which they came.
  4. Help developers build robust services that can be accessed by client applications through multiple transports.

This is how is translates to Architecture speak:

  1. Provide support for sending service request and receiving service responses over multiple transports (such as Web Services or message queue transport)
  2. Provide multiple, configurable means of dispatching Service Dispatchings.
  3. Provide multiple, configurable means of passing requests to and receiving responses form Service Dispatchings.
  4. Provide configurable means of “inserting” aspect-like logic into request and response flow.
  5. Provide simple means of integration with BizTalk orchestration

And the constraints within which this has to operate are:

  • The architecture must be logically consistent with the future direction of relevant Microsoft products (Indigo and BizTalk in particular).
  • The implementation should use the .NET Framework.  To be deployed, the architecture must only require the Windows platform with the .NET Framework distributable installed.
  • The development and modifications of the framework should be done with VS 2003 Enterprise Version.

Again, I think this would be quite a significant advantage before Indigo ships. I just started playing with this, so look out for more details on this in the next few weeks.

Longhorn Refresh

Microsoft is planning on releasing a Longhorn Refresh to geeks like me at WinHEC next month. I am looking forward to that as there are just too many leaks right now. On an average on a machine with a 1gb of mem, I have to reboot on an average every two hours otherwise the memory workingset get way to huge with all the disk thrashing!

Spyware and IE

Today, on one of the computers at home, Meenakshi accidentally installed one of the spy-wares (via a popup – which interestingly was not blocked). This changed the search engine used by IE, installed some toolsbars and opened a whole bunch of popup windows. Also disabled some of the other legit toolbars that were running (MSN, Yahoo, Google, etc.) Anyways, it took me a good 3+ hours to track the bugger down and clean up the whole machine. What a pain and waste of time. But it got me the opportunity to document what I did and hopefully you can benefit from it.

I would like to also point out that an 1+ hours was taken by the two anti-spy-ware software that I use (Adware and Spybot – if you have not heard of them, I highly recommend download and using both of them). Though neither of them cleaned this particular one. :'(

Well how do you find out what is installed? First of all try and find the name of the “thing” running. Right-click on the toolbar and since that toolbar would be checked, you can find out the name. The first and foremost you should do is run your anti-spywares (make sure you update them). If they do find anything I would recommend rebooting your machine ASAP, after cleaning it. If the problem is solved, you got lucky (and you can stop Reading now :)). If not then goto your Add/Remove and see if you find something there that you don’t recognise if you find something uninstall and check if the problem has done. When uninstalling try and find the location of where it was installed and delete that as most uninstall programs keep something lingering (hopefully you are a geek like me and are not required to be told how to this).

If you still have the spyware, then you got more trouble (like I had). Next steps would be to poke in the (dreaded) registry and see what you can find there. To start, run Regedit (Start => Run => regedit.exe). Next goto HKLM\SOFTWARE\Microsoft\Internet Explorer\Toolbar where you would see a list of entries. Now I don’t presume you would know the GUIDs for the toolbars *grin*, so you would need to find everyone and see if they are legit or not. Here is the list of the ones I found in this computer (and what they meant):

  • {2318C2B1-4965-11d4-9B18-009027A5CD4F} – Google
  • {47833539-D0C5-4125-9FA8-0819E2EAAC93} – Acrobat (6)
  • {79FFEBC8-745B-AFDE-82E6-14ACEDC16E19} – This was the CLUPRIT!
  • {8E718888-423F-11D2-876E-00A0C9082467} – Mmedia Radioband
  • {EF99BD32-C1FB-11D2-892F-0090271D4F88} – Yahoo

Well the second one in the list above was the culprit called SLOW.Citydent, and was installed at “C:\Program Files\Settings Book”.

To find the right or wrong guid, you need to search the registry for each of the GUID and traverse it (i.e. that GUID (or CLSID) might point to another one – so keep following the rabbit trail and at the end of it you would see a COM entry (InProc32) that would point to the execuatable (dll/exe) and also a class name (e.g. SLOW.Citydent.1 in my example). Make sure you search for the GUID from the root in Regedit and delete all entries you find – as always be very careful when modifying anything related to the registry.

Also search using the ClassName in addition to the GUID, as you could potentially find entries realted to this also. Before deleteing the hives/keys make sure you find out the path in the InProc to find out where this is installed in the system. In my case this was at C:\Program Files\Settings Book (which would look like C:\progra~1\settin~1 – the 8 characters from the old DOS days). Make sure you go to this directory and inspect all files and folders – once you are found all other COM entries, you can delete all these files and folders.

Also search for the path in addition to the ClassName and GUID as that would ensure you caught all missed spywares.

You also should clear the similar entries from the following hives:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions

Lastly, also check for the programs you may not recognise in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Make sure you reload regedit after you delete some key as it still would show it in its cache, which is not flushed till its loaded.

So, after a long number of hours I was able to clean the machine. The moral of the story is, be careful, if you don’t trust something, don’t open it or run it, no matter how convincing it might seem no matter how trustworthy the person sending it is. As more applications move to .NET this would be eliminated because of the security features built in the framework (and CAS – code access security), but till then, we all need to use our common sense.

Resource Management in .NET

Here is a very old post I found lying around on my disk by Brian Harry, he was the Product Manager of the CLR team at Microsoft (he might still be, I just don’t know). This is a long and very interesting read on the issue of resource management and the deterministic finalization of .NET. Brian provides the backgorund so most people (who were flaming MS at that time), understand that this is really a hard problem to solve. Happy Reading….

PDC Xaml Demo

This is probably stupid (and old news now), but if you saw the xaml demo during the PDC of Avalon (presented by Don Box I think), here is the code to reproduce that sample. Please note that you would need to change the source tag in the Video class to a path that makes more sense for you.

Also, as always, please use common sense when running this. Don’t flame me if something blows up. 🙂


    Text=”Amit’s First Longhorn App” Visible=”True”
    <!–  The namespace + class name in the codebehind file and the def:Class attribute in the root of this document, must stay identical.  You can change them, but you must keep them in sync. –>
        <Canvas DockPanel.Dock=”Fill”>
    <Video Width=”100%” Height=”100%” Stretch=”Fill” Source=”c:\temp\ChrisA-DonB_300K.wmv” />
    <TransformDecorator Transform=”rotate 30 scale 3 3″ DockPanel.Dock=”Fill”>
        <TextBox ID=”foo” Width=”2in” Height=”20pt”></TextBox>
        <Button Click=”Pushed”>Click Me</Button>

window1.xaml codebehind:

//This is a list of commonly used namespaces for a window.
using System;
using MSAvalon.Windows;
using MSAvalon.Windows.Controls;
using MSAvalon.Windows.Documents;
using MSAvalon.Windows.Navigation;
using MSAvalon.Windows.Shapes;
using MSAvalon.Windows.Data;

namespace LonghornApp1


/// Interaction logic for Window1.xaml

public partial class Window1 : Window

// To use Loaded event put Loaded=”WindowLoaded” attribute in root element of .xaml file.
// private void WindowLoaded(object sender, EventArgs e) {}

void Pushed(object o, ClickEventArgs e)



Avalon Introduction (XAML)

Here are some excerpts from my slide deck on XAML. If you need to see the complete powerpoint, let me know and I can either mail it to you or upload it here.

If you don’t know, XAML is the new Extensible Application markup language that is part of Longhorn. If you have the PDC bits you should be able to run these. I am skipping on most of the details of the controls, probably will post that some other day.

What is XAML?

  • Pronounced as “Zammell”
  • “Extensible Application Markup Language”
  • Declarative Language
  • Elements represented in a .xaml file by tags
  • “XAML” is a collection of class objects that correspond to markup elements

Why use XAML?

  • Combination of both desktop and web worlds to an application.
  • Separation of UI and Implementation.


  • Application object.
  • XAML pages are characteristically dynamic incorporating both procedural code and markup elements

  • All that things you can do with markup can be done with procedural code.

  • XAML applications are managed.

  • Only “pure” XAML pages need not be compiled.

Structure of a XAML File

  • Panels
    • Handles Page Layout

    • Containers for other Elements

  • Controls

    • Handles user interaction
  • Documents
    • Handles document presentation
  • Shapes
    • Handles vector graphic shapes

What are Panels?
Panels control rendering of elements and objects
  • size
  • dimensions
  • position
  • arrangement

Kind of Panels

  • Canvas
    • Area in which child elements can be explicitly positioned
  • DockPanel
    • Area in which child elements can be arranged horizontally or vertically.
  • FlowPanel
    • Used to break, wrap, and align content > length of a line
  • GridPanel
    • Defines a grid area consisting of columns and rows
  • TextPanel
    • Formats, sizes and draws text
    • Supports multiple lines of text and formats

Kind of Controls

  • Chief components of a UI and enable user interaction
  • Control Patterns
    • Simple Controls
    • Content Controls
    • Items Controls
    • Headered Items and Headeres Content
  • Resources


Digger on Smartphone – W00t!

Unfortunately, I am not one of the lucky guys with a smartphone, but for those who do have one, Lutz Roeder, released the code and the binaries for Digger (a copy of Dig-dug from the good ol Dos days) for the Smartphone. It needs the Smartphone 2003 and .NET CF.

Microsoft source code release not an accident

Interesting article on GMSV.

Typically, the only way to get a good look at Microsoft’s source code was via leak or the company’s “Shared Source” program. No longer. On Monday, Microsoft released some of its code (the Windows Installer Xml (WiX) toolset ) under an open-source license, and posted it on SourceForge. Rob Mensching, the Microsoft employee behind the unprecedented code release, commented on it in a post to his Web log. “After four and a half years of part-time development, the WiX design (and most of the code) matured to a point where I was comfortable trying to release it externally,” Mensching explained. “So, last October I started looking for a means to release not only the tools but the source code as well. I thought GotDotNet was the place. However, at that time, none of the existing Shared Source licenses were flexible enough to accept contributions from the community. Then, in February, I was introduced to Stephen Walli who was also working to improve Microsoft’s relationship with the Open Source community. Fortunately, Stephen was much farther along than I and had the step-by-step plan how to release an Open Source project from Microsoft using an approved OSS license. Today, via WiX on SourceForge, you get to see the results of many people’s efforts to improve Microsoft from the inside out. I’m not exactly sure what is going to happen next but I’m sure there are quite a few people who are interested to see where this leads. Personally, all I hope is that if you find the WiX toolset useful then you’ll join the community and help us improve the toolset.”

Microsoft clipping Longhorn

Waaah… so Microsoft is clipping Longhorn and pushing out the release. There have also been rumours of pushing WinFS to Blackcomb (which would be the server version of Longhorn). Also. some rumours of a new version XP which would have a newer version of Media Player with a built-in online shopping piece akin to iTunes. When Longhorn does ship (as of now in 2006), it would be the biggest gap in Microsoft’s history between OS releases – almost half a decade, that in the IT world is an era.

Windows is not the most important OS

Wow, now that is big – especially from me :). But I agree with Bill Hill on this one.

BTW, this from slashdot, Microsoft quietly launched Channel 9, a blog/discussion forum aimed at improving communication with outside developers, on Tuesday. Named for the audio channel that many airlines use to let passengers listen in on crew conversations during flight, Channel 9’s creators state the following in a welcoming message: ‘Five of us in Redmond are crazy enough to think we just might learn something from getting to know each other…Join in, and have a look inside our cockpit and help us fly the plane.

Feeling competitive heat, rivals decided to chill

Ah, good to see that those “sun” guys are finally coming to their senses, and evolving from the dark side. May the force be with them! Now, which is the next company that Microsoft should save? Maybe the one run by this unintellectual (gotta be PC you see) called Larry Ellison. 😉

Strike that out…

For those who know me, know I am a big Microsoft fan and am one of their big unofficial evangelists. But there is a very interesting article uncovering some embarassing and amusing PR at MS here.