Good question, I’m glad you asked! Over the past couple of years I’ve quietly evaluated several blogging engines from the large co-hosted ones like WordPressBloggerMSN Spaces, MySpace, and the SixApart offerings. I’ve also looked at the various self-hosted options like Community Server, dasBlog, Subtext, and SingleUserBlog.

To self-host, or not to self-host?

When I started blogging I believed that having my own domain name was the most important thing and that over time I would change which blogging engine I used, however I have learned that its not that simple – especially when you want to give the inbound links a safe place to land.

With all of the URL rewriting that the ASP.NET engines use being able to intercept inbound requests and redirect to the new content becomes increasingly difficult without breaking the system. Since I didn’t really look forward to that, and there was no way in hell that I was going to self-host a non-ASP.NET solution I decided that I should look at the co-hosted options.

Which co-hosted solution is right for me?

Of all the co-hosted solutions that I looked at I liked WordPress the most because of the backend publishing tools from the look and feel to the actual functionality required. The ability to import from a number of existing archive formats is also useful and I have plans to migrate my existing content across using BlogML and the WordPress WXR (WordPress eXtended RSS) format – so far I haven’t been terribly successful because the import tool times out when trying to import as much content as I am.

WordPress also has quite a bit of star power with a blogger like Robert Scoble using it, so my hope is that if something is done that affects the service then all us little people have one very squeaky wheel.

Life beyond WordPress?

I’ll be the first to admit that WordPress won’t be my final home, but I don’t think that I will be going back to a self hosted solution. I’ll probably change my blogging engine every year or two as different features appeal to me. But one thing that I’ll never have to do is worry about my links breaking (unless WordPress gets taken down or starts charging too much for me to bother keeping it going).

Moving forward I will continue to own the notgartner.com domain and use that to refer people to my current blogging engine (with the help of some ASP.NET code), and I’ll probably keep redirecting old incoming links to their new locations here until the web heals itself. I’m looking forward to the flexibililty that hosting more things “in the cloud” will give me, heck I might even start some other blogs to talk specifically about certain projects that I am working on.

Teamprise turns 1.1

July 19, 2006

Martin Woodward sent me an e-mail this morning telling me that the Teamprise Java/Eclipse-based front end for Team Foundation Server is now at revision 1.1. This is great news because this release fixes an issue that stopped the plug-in working in a great number of Windows networking environments. Team Foundation Server users that also have some Java developers will find this especially good news.

A question came across one of our internal mailing lists today about how to encode closed generic type names as string literals for placement in things like configuration files. This is actually possible, here is an example for a generic list of integers:

System.Collections.Generic.List‘1[[System.Int32]]

Notice the ‘1 notation? That signifies the number of type parameters that follow, so if I had a generic type that took two type parameters (for example a Dictionary<K,V>), then it would be encoded as follows:

System.Collections.Generic.Dictionary‘2[[System.Int32],[System.String]]

In general the best way to find out how to encode type names is to write a quick little console application and get the runtime to tell you the correct notation, for example:

Console.WriteLine(new Dictionary().GetType().FullName);

Once you have the notation right you can instansiate the type as follows:

Type listType = Type.GetType(“System.Collections.Generic.List‘1[[System.Int32]]”);
object listInstance = Activator.CreateInstance(listType);

Easy peasy!

I just read the PowerShell blog and noticed that they are teasing us about the next release of the product and making sounds that it might have something to do with the next version of the Microsoft Management Console (note that the current version of MMC is 3.0). This is really a natural progression because if we look at some of the other management tools that Microsoft has shipped, the marriage of UI to underlying script generation is very useful for the system administrator community.

For example, pretty much every screen in the new SQL Server Management Studio (from SQL Server 2005) has the ability to product a script based on the current options on the screen. Ideally they could get to the same point that Apple has with their Automator tooling where scripting – even of the user interface components.

If every process declared its ability to be scripted then when you were doing a recording session the desktop compositing engine in Vista could somehow highlight those windows that could partipate in the process.

I suspect however that the Aspen release will be somewhat more limited in scope, and be more like the tooling from SQL. Still, I think it would be great fun to implement. If you are attending TechEd 2006 in Australia and would like to know more about PowerShell don’t forget to catch my session (MTG304) – it’ll be a must for system administrators responsible for managing Windows environments.