Recently, MSN Spaces has announced that they are now supporting external Blog writing tools for Spaces users. It’s some good news from for them: offline Blog writing is incredibly useful, especially in places that aren’t as wired as Washington.
So why is this a SharpMT post? I thought it would be nice if SharpMT supported Spaces…. home team and all that. Even though it has been tuned to support the MT Blog engine, I thought I’d take a peek and see what would happen if I pointed SharpMT to the Spaces MetaWeblog API… God, do I hate technology.
First off, I think Dave Winer should be publicly flogged for this API. In fact, I think it’s the best available example of why expecting XML to be a Data Holy Grail is just plain stupid. The idea might be sound, sure, but if a good idea is implimented in a moronic way, the end result will always suck.
I’ve historically said that XML, as a technology, is a set of three simple rules: 1) information will be tagged with < >’s 2) all tags must be closed 3) tags will be case sensitive. That’s XML in a nutshell. It guarantees nothing else. No cross platform compatibility. No data management. No promise of usable data. No tag definitions, save the top most one, which says nothing about the data in the document. Yeah, well, the results from this API fulfill the XML requirements but it is completely useless in it’s tagging. The data is nearly impossible to parse without consuming the whole document. A pain in the ass to work with. And quirky across each of the different Blog engines.
Flogged. In the public square. With lots of spectators, calling for his head on a pike. And a few midgets running around playing lutes.
How well did SharpMT fair? Not very well, but that’s not shocking really. Spaces requires a connection via https on port 443. SharpMT requires a connection via http on port 80. Hm. That was easy: SharpMT gets a new text box and check box for https and dynamic port control. That worked. A small hiccup in the response stream from Spaces that I had to work around and I started getting data.
And the data is where the house of cards collapses. MT explicitly wraps its string results with <string></string> – Spaces does not. If unmarked, it’s assumed to be a string. This would be fine if the XML wasn’t such a freakin pooch screw, but oh no! God forbid that there be an attribute or a specific tag name to reference! Thanks again Dave! It was a nightmare writing the network routines in the first place… required me to walk through each node at a time, parsing as I went, relative to my position in the results itself. [I had forgotten how ugly it was in there, until I took a peek last night and it’s obviously aggravated me again]
To support Spaces, it’s looking like I’d have to have yet another engine to support in there. As it is there’s two modes to SharpMT: MT and TypePad. The numbering system is different between the two engines, so there’s subtle differences internally… whenever the server name is www.typepad.com, SharpMT will silently made small changes to the application’s behavior. Didn’t know that did ya? :) As such, when I built out the differents between MT and TP, I went ahead and left it open for other engines, but then I started noticing that there’s a couple dozen Blog writing tools these days – I sorta wrote it off. But if I could get a simple and easy work around for parsing problems…
Enter the Tortuga library. Oooo. Ahhh. Free objects for Blog communication! That would rule. Except… I don’t know how often they get updated. I mean I’ve already got a couple of feature requests for things that SixApart added to MT3… Oh. The libraries require 1.0 of the .NET Framework. Um. Ugh. I’ve got an email into the guy, to see what’s up with that.
And then I also noticed DotPost. Said “Oh, yet another blog writer.” Then I looked at the screen shots. Well I’ll be damned. It’s SharpMT’s interface! Panel, tabs, tool bars, the whole shmear. I love it when stuff like this happens – honest! – because it validates the overall design of my applications. It happened in almost all of my jobs at one point or another… I was told “it sucks!” but one management-esque person, I shove it out there anyway, and lo! other people copy it. In fact, I watched one of my designs rippled through all of the consumer-level stock-streaming applications. We put out a version that was SDI based (in 98) – my bosses were furious because they wanted an MDI application. Six months later and all of the competitors went SDI as well, which only made my bosses madder. Go figure. Anyway, DotPost offers a WYSIWYG editor, which I personally don’t like/want – other people might like it and if you’ve used SharpMT, you’ll recognize the interface! *wink*
What’s the bottom line? I don’t think I have one. Let’s review: I considered offering support for MetaWeblog based Blog engines, but it’s a pain in the ass. I considered using an external library for network connections, but its running on an ancient version the .NET Framework, so that’s out. I discovered my UI has been cloned by DotPost, which has made me smile. I considered dumping the source code into SourceForge, but that sorta scares me! I guess I could release a new version that offers custom port and SSL support if there was interest, but not today…
Certainly not today.