March 2008 - Posts
I've been dabbling with various different development projects recently and I've uncovered what I think is an important failing in Microsoft's support for 64-bit software.
In Visual Studio, the default setting is to generate code for "Any CPU". This sounds great because it means your product should run on any processor, be it 32-bit or 64-bit and for simple programs that works well. Where this all goes horribly wrong is when you make use of an API that only has support for 32-bit processors. Some important Microsoft APIs (CRM SDK, Office Accounting SDK to name just two that I've discovered recently) fall into this category. Under those circumstances, what happens is that everything works fine on a 32-bit processor, but as soon as the code is run on a 64-bit architecture, it falls flat.
The reason for this is that 64-bit processes are not allowed to make calls into 32-bit COM objects. Remember, by default Visual Studio generates both 64-bit and 32-bit code. When run on a 32-bit processor, the 32-bit code runs and can make calls into the 32-bit API objects. When the same code is run on a 64-bit system, however, the 64-bit code will run and will fail when it tries to call into the 32-bit API objects.
Fortunately there is a workaround, and that is to set your target architecture to 32-bit to prevent Visual Studio from generating 64-bit code. So you can see how this is going to affect the development of 64-bit software in the coming months and years. Essentially, it is not going to happen until Microsoft upgrades all of its SDKs and APIs to support 64-bit architectures.
I suspect Microsoft has fallen victim to this situation itself, which might explain why Groove 2007 still can't support file sharing workspaces on 64-bit systems. Why not? Because the required shell extension class is only available in 32-bit . Why? My educated guess is because it relies on a lot of 32-bit COM objects that would need some major development effort to update to 64-bit.
So while 64-bit development is possible and support for it is improving, in practice many developers are still constrained to use 32-bit because their underlying API or SDK has not been updated. With 64-bit processors now becoming the norm, this situation is starting to hurt. I think Microsoft has a lot of work to do in this area.
Via David Overton, there's a preview of Microsoft's "SeaDragon" technology which is a way to do deep zooming on images over the Internet and streaming exactly the right amount of data into the browser for whatever zoom level you're at. The effect is sort of like Google Earth, but the images can be any subject matter. Microsoft has a demo that they do where they'll zoom into a jagged shape which turns out to be the complete works of Charles Dickens and they can zoom right in until a single word fills the page. Now, you can upload your own images and try out the technology. This requires some beta-quality browser plug-ins to be installed, so don't do this on your best office PC, but you can see the galleries I've created as follows:
Those last two galleries are actually created from RSS feeds from our Community Server. I just pasted in the URL of the RSS feed and Microsoft's servers went out and sucked all the images from my photo galleries. You can also see other galleries I'm experimenting with.
SeaDragon technology is also used by another of Microsoft's research projects, PhotoSynth, which is also worth a look (and also requires beta-quality browser plug-ins). You can see an impressive video demo of both technologies online here.
The second dragon? That's me. My surname "Long" is the Chinese name of a mythical dragon, or as in "Wo hu cang long" (Crouching tiger, hidden dragon).
As you can see at David Overton's blog, Microsoft partners will once again be getting the full-install media (as opposed to upgrade) for Windows Vista Business as well as a single license for Windows Vista Ultimate. When Microsoft changed to upgrade media around a year ago, the partner community was up in arms as we'd have to do every install effectively twice and it would be harder to set up virtual test environments, etc. Microsoft's response was that it was concerned about piracy, but it looks like they've realised that we, the partner community, are not the ones to be worried about. Read more about the upcoming changes on David's Blog.
Nice result. It would have been nice if it hadn't taken an entire year to happen.

I've been learning about LINQ (a new feature of visual C# 3.0) and decided to play around with a little application. I have a VOIP PBX based on TrixBox/Asterisk. I thought it would be neat to write an application to examine the call logs, which are stored on the Asterisk/Linux server in a MySQL database. The application lets me view the call logs and filter based on the outcome of the call (Answered, Busy, etc.). In addition the list can be sorted by clicking on a column heading. As it turned out, I didn't use LINQ at all and I made the whole application without writing a single line of code. Amazing!
Today is Wales' day. I've lived here since 1981, a total of 27 years, so although I was born English I feel a little bit Welsh now. I think they will forgive me if I wish you all a happy Saint David's Day. Have a pint of Brains Dark in our honour.