December 2004 Entries

So I ended up working out a method to load plugins - it's a hybrid of Royo's Extensibility Application Block and the method used by RssBandit. Now, I do have rudimentary spell checking in my dogfood version of PostXING (again :), but I'm having trouble figuring out how to handle the dictionary files.

By default, NetSpell looks for a culture-sensitive .dic(tionary) file from the Application.StartupPath (I think - when trying to launch PostXING from the BlogThisUsingPostXINGPlugin, it complains that it cannot find the file...\bin\RssBandit\en-US.dic) I manually copied the en-US.dic file to PostXING's root folder and it works when launching the program by itself.

The thing is that you can specify which dictionary file you want to use in the component as well as where that file is located. This would be helpful in situations where your CultureInfo is set to something other than English, but you mainly post to your blog using the English language. I'm thinking that I might be able to address this using something like the IBlogExtension idea of HasConfiguration or HasEditingGUI or a combination of the two. This means that this part of PostXING is gonna take a little bit longer to finish than I originally thought - I want to get it right, ya know?

Also, I don't know how I'm going to handle the distribution of the dictionary files - NetSpell comes with these by default:

de-DE.dic
en-AU.dic
en-CA.dic
en-GB.dic
en-US.dic
es-ES.dic
es-MX.dic
fr-FR.dic
it-IT.dic

with a combined size of nearly 10MB. (The biggest one is de-DE at 2.1Mb). There's no way I could host all of these on ProjectDistributor - that would be an abuse of a great service. I am so open to ideas on how to address this one it's not even funny. The spell checker is pretty well useless without a good dictionary file to back it up. Anyways, these are the issues I'm facing while trying to get this great spell checking component implemented as a plugin. Happy New Year!

[ Currently Playing : Down in a Hole - Alice in Chains - Unplugged (5:45) ]

So I released a new version of PostXING , adding support for the new IBlogExtension plugin I was talking about the other day. Oh, I released the BlogThisUsingPostXING plugin, too.

I think I mentioned that I got the large part of the source code for that one from haacked, but if I didn't, I am now. The source is in no way original by me, I just hacked the solution from his improved plugin for using w.bloggar with RSS Bandit.

To use the plugin, the latest version of PostXING is required - it writes out the location of PostXING so everyone knows how to play nicely together and also takes in (kind of) an html file for adding post information to PostXING on load. Sorry about that - I had no idea how to get this working before I got this great code sample from haacked. I'm sure that neither one of you will mind that much, tho.

[ Currently Playing : Alpha Centauri - At The Drive-In - In Casino Out (3:13) ]

Bob wants to see some integration of RssBandit and PostXING.

This was an idea I had really early on simply because a lot of the features in PostXING were, ahem, borrowed from w.bloggar, and RssBandit already supports a plugin that starts w.bloggar for posting to a weblog. So, why couldn't I do something similar?

Well, I thought that it had something to do with implementing IBlogExtension, for which I couldn't find too much documentation. Maybe it's such a simple thing to implement that only a yutz like me would need documentation. I honestly don't know and haven't looked into it too much simply because I didn't have an immediate need for it.

Once Dare adds deleting capabilities to RssBandit, I have a feeling that it's going to become my default aggregator again. After that, look out for an RssBandit plugin to post using PostXING.

[ Currently Playing : Love Life - Fatboy Slim - Halfway Between the Gutter and Stars(6:58) ]

[Via Blue Phoenix]

I got a rudimentary version of this working. I couldn't figure out how to download the original post into RssBandit, so I'm just using my original reply to the post.

I'd like to thank Haacked for providing a series of walkthrus as well as a code download for an improved version of "Blog This with w.bloggar..." which I basically hacked to work with PostXING. I'll probably release this closer to the new year or after the first so I can make sure that everything is working okay - the only version that is working correctly for me so far is the full version. A new version of PostXING will be necessary to make this work as well - I never thought to make sure that any application that knew or cared could find out where PostXING lived...so I made this happen with a simple text file and a call to

System.Reflection.Assembly.GetEntryAssembly().Location;

Also, I found the need to close off the StreamWriter that was being used to write the temp file using XslTransform b/c I was getting access is denied errors, so the code that did that now looks like so:

	XslTransform transform = new XslTransform();
	transform.Load(new XmlTextReader(XsltStream), null, null);


	string tempfile = Path.GetTempFileName();//@"c:\tmp\plugin\" + this.BlogType.ToString() + ".html";  
	StreamWriter sw = new StreamWriter(tempfile);
	transform.Transform(rssFragment, null, sw, null);

	sw.Close();

So with that and a little bit of Agility, this was about a two-hour enhancement. Next I'm going to look into creating (well, probably "borrowing") a plugin architecture so that I can create a spell checking plugin for PostXING without bloating the main download too much.

[ Currently Playing : Burn Away - Foo Fighters - One by One (4:57) ]

I started to make this a reply in Shawn's comments, but decided it was getting too long-winded to be a comment. You get a post, Shawn. In his comments, someone suggested that he try out PostXING, which is cool (!) but, he seems to have the wrong impression of PostXING's erm...limitations.

>I did try PostXing, and it's another tool that assumes that cross-posting is against only one server.

It does? That's news to me! :)

The real limitation of the current PostXING drop is that it only expects to work with the metablog API. MT has its own API that is very similar, but not exactly the same which is bad news for an xml-rpc client. I guess I could add support for other authoring apis (ATOM is what I really have in mind - just for fun), but this is something that I do in my free time.

Add that to the fact that adding different authoring APIs would mean handling the configuration etc. differently within the app - I only ever intended to use this as a personal tool. My ideas are limited, but I'm always willing to at least consider (and usually try) feature requests, so if you use PostXING or would like to, let me know what you'd like to see or what you don't want to see anymore. I'm pretty open to suggestions, and I've come to the realization that most of the users of PostXING are way smarter than me anyways.

One idea that came up while all the hubbub was going on concerning the Provider Model was to use just that to make posting to different apis more transparent, but I'm usually against doing something just because it's the current "fad". The fact of the matter is that I've never needed the functionality to post to different types of api's than the metablog api, so I never put in the facility to do so. I would not, however, be against adding support for this particular feature if there is really a need (okay, come on - want) for it and I had some solid implementation suggestions for doing so.

[ Currently Playing : Sunset (Bird of Prey) - Fatboy Slim - Halfway Between the Gutter and the Stars(6:49) ]

Paul is trying to find out what effect blogs have on google juice. He's decided to coin the term 'consummate asshole' "because it has very little competition on the google world (and it's funny)."

So, being the helpful person that I am, I decided to give him a (very!) little boost by adding the following phrase and link to a couple of my blogs:

 Paul D Murphy is the consummate asshole

Good Luck, Paul, you consummate asshole, you.

South Park Me:

(which is not too far away from) Real Me:

No, I don't work for Microsoft, but I am wearing this shirt today. I need a shave, don't I? (this picture was taken from my Motorola V400.)

update: Just to be fair, here's another shirt that I wear sometimes:

Well, it looks like Darren decided to confuse the hell out of me and make his Project Distributor available for download at guess where? Project Distributor! Okay, maybe it's not that confusing (or maybe I just confuse too easily :)

This is great news - ever since I've made PostXING available for download at Project Distributor I've had nothing but great things to say about the service...and now I can have it on a server all my own! Cheers, Darren, for coming up with a great idea and making it available to everyone. You rock.

[ Currently Playing : Two Tabs of Mescaline - Glassjaw - Worship & Tribute (8:18) ]

Forreal.

I had been using a different, "static" library to do syntax highlighting before...Now, if you don't like how a certain language is configured, change it! CodeHtmler is great. It gives me the option to add or modify language definitions (Generics, anyone?) IF I so desire, and it just dropped right into my app with an interface to edit the definitions already there. That's HOTT. But (in my best Lavar Burton voice) Don't take my word for it.

I changed two lines of code (well, Wes did :) in PostXING and it was up and running. I'm not quite ready to release the next version of PostXING yet - I've still got a little bit of smoke testing to do on the spellchecker, and I just want to make sure all the new goodies work before getting angry feature requests on Project Distributor!

So, thanks, Wes. You have made PostXING a better program.

[ Currently Playing : Ape Dos Mil - Glassjaw - Worship & Tribute (5:03) ]

Darren went and fixed my Project Distributor blunder...now you can get the latest version of PostXING from the place it was originally released.

Thanks, Darren.

Damn.

That's right, I said Damn.

It looks and feels so much like the first one (which I beat about 6 or 7 times without getting tired of it) but UbiSoft did a good job of extending the story; even making the Prince look and even move like he's older. It's the little details that I'm talking about - the fact that it takes him a little more effort to swing on poles and things of that nature.

I didn't seem to get very far in the game; since you go back and forth thru time you're really in the same area just in two different time frames. It did land me in the doghouse, tho, since I was only going to play for an hour or so and ended up playing like 4. Who needs sleep anyways, right? :)

[ Currently Playing : Forty Six & 2 - Tool - Aenima (6:03) ]

P.S. I intentionally misspelled a lot of words in this post to test out the spell checker of PostXING...works pretty well, that is, if you don't mind seeing markup when you spell check :) I've still gotta test it some more, but it should be ready pretty soon I hope.

It took nearly two years, but it looks like I've posted something interesting enough to show up on the Daily Grind.

It's linked over there as opposed to here, tho, which makes me that much happier that I can syndicate identical content to more than one place, one of said places getting a tremendously larger amount of traffic than the others.

[ Currently Playing : Sideways - Citizen Cope - Shaman (4:41) ]