WordCited: coming “Real Soon Now”

Every now and then I’m forced (or agree) to return to the world of Windows only development. Such is the case with WordCited, my upcoming Microsoft Word plug-in.

WordCited is a plug-in for Microsoft Word 2000 and XP (and possibly 2003, once I test it) which eases the pain of creating MLA [STRIKEOUT:Bibliography] Works Cited entries. It currently handles all sorts of print and internet sources, and will also handle media sources (audio tape, CD, etc) when it’s finally released. I’m also considering adding support for the APA format, but that will come later.

So why return to the world of Windows for WordCited? Because I had a customer. A patient customer. A customer who has yet to call me on the fact I’m nearly 45 days late. But it’s coming; real soon now. And when it does, it will be available here. Well maybe not here, exactly, but I’ll be sure to announce the location. Not that I believe there will be a mad rush to download, but because after all the cursing and ranting about Office COM plug-in development, I need to brag somewhere.

date:2003-10-29 15:54:47

The Battle Continues

So the battle to create a Gecko extension continues. I’m actually making progress and feel like I have all the necessary pieces now. I can:

  • add an icon to the toolbar and respond to clicks
  • add text and images to the status bar
  • catch navigation events
  • extract RDF from web pages
  • parse the extracted RDF into a series of Triples (thanks to Jim Ley’s excellent all-javascript RDF parser)

So all that’s left to do is perform some queries on the RDF (which the parser also allows) and put the pieces together. Of course, I also need to figure out how to hack enough XUL together to make a dialog, but hey; how hard can it be?

date:2003-10-29 11:02:06

The Gecko Wars, continued

In an object lesson on why OpenSource is important, I finally figured out how to listen for navigation events in a Mozilla Firebird extension. In frustration I began reading the XUL/XML/JavaScript source for MF0.7, and there it was: getBrowser().addEventListener.... It was that simple.

So now I’ve moved on to bigger battles: mastering JavaScript’s regex syntax, figuring out if I need to write a (Py)XPCOM object, and learning enough about XUL widgets to create a dialog box. And no matter how much I bitch, the whole process has it’s own sense of accomplishment at each little milestone.

If you want to see some ugly code and hacked together XML, you can follow the development in CVS. The module is mozcc.

date:2003-10-27 14:51:22

Unicode, Updates, and CVS

ccValidator 1.1.2 is now available here. Fixes include the addition of non-standard Japanese codecs (including Shift_JIS) and further Unicode fixes. I still need to add support for Chinese and other encodings not found in Python’s default codecs package. As always, the current release is available for your validation enjoyment at http://www.yergler.net/projects/ccvalidator.

I’ve also created a CVS repository for my projects, including ccValidator. You can browse it via the web at http://www.yergler.net/cvs. I’m unable to offer pserver access with my webhost, so I’ll be adding a cron job to produce nightly tarballs real soon now.

date:2003-10-27 10:46:53

A Lovely, Lazy Weekend

Well it’s Sunday evening, and I just realized what a lovely weekend it was. Lovely in that it was relaxed without a lot of committments, not in terms of weather. Saturday was gloomy and gray as only Indiana can be. I spent yesterday afternoon helping my parents clean out my grandmothers house, and then saw Runaway Jury. Excellent film.

Today was spent sleeping in and then writing the first draft of my English paper, “Relevant Information Retrieval: A Literature Review.” Woo-hoo. Of course, we rewarded my diligence by going to see Texas Chainsaw Massacre. Of all the horror movies we’ve watched lately, this is definitly the best. And it’s WAY better than that crap they call Cabin Fever.

date:2003-10-26 22:18:04
category:my life

Grokking the Lizard

So I spent most of my morning on Friday attempting to grok the state of Mozilla/Firebird/Gecko plugin development. Actually, I’ve come to realize that plugin is the wrong term: an extension is what I really want to build. It’s another of the Creative Commons tech challenges ; building a plugin/toolbar/extension for a web browser which either shows or changes when the page contains licensing meta-data.

After several hours of cursing at XUL, RDF and JavaScript, I have a prototype. OK, less than a prototype, but something: a toolbar button and status bar text that will display licensing RDF (if any) when clicked. It only works in Mozilla Firebird right now, but it seems to work equally well on all platforms. For the life of me I can’t figure out how to catch navigation events so that I can go about changing the icon, etc. Anybody, anybody?

date:2003-10-26 13:45:11

Magnets are cool; or, Yet another validator update

I’ve been reading the Magnet URI Spec, and the idea behind it’s pretty cool. It’s basically a way to connect documents on the Internet with services provided locally. In the case of the examples given on the website, many of them apply to P2P services. So if I find a song I love and want to share it with a friend, I can e-mail the magnet URI to her and clicking on it will open her P2P app. Cool.

Of course, ccValidator “just happens” to support magnets; if it sees something that looks like a Magnet URN, it constructs a magnet link from it. This leads me to my second point, that I’ve once again updated ccValidator. The changes and fixes are relatively few. Magnets are now constructed to also contain an optional dn, or Display Name, parameter. The display name is extracted from the dc:identifier tag in the work metadata. Also, the validator won’t barf now if it gets an error code when retrieving the URL (404, etc).

Have fun with it, and as always, feedback is welcome.

date:2003-10-24 18:43:34

Thoughts on the future of ccLicense.py

With the Validator up and running, I’ve been thinking more about cclicense.py, and how it could be used on it’s own. My conclusion is that in an effort to make it handle all the RDF requirements of the Validator, I’ve pretty much screwed it up for use on it’s own. Not that it couldn’t be used on its own, but the APIs are inconsistent, poorly documented and incomplete. I’d like to remedy that so it feels like I’ve completed something else. To that end, I think these are the goals for a good Python API for Creative Commons licenses:

  • the ability to consume and emit existing licenses in RDF
  • the flexibility to discover new licensing terms through introspecting the incoming RDF
  • the ability to get and set basic license permissions
  • intelligent handling of Work, Agent and other “sub-objects”
  • clarity of API so that simple solutions are obvious and complex solutions are clearly possible

I think the biggest problem I have with the current API is that it is very biased towards consuming and reading licenses; a successful API should probably have a balance between reading and writing licenses.

date:2003-10-24 10:28:26

Sourcecode Available

Just a quick note that you can now download the sourcecode for the ccValidator from here. Requirements and (brief) instructions are contained in the README file.

date:2003-10-24 10:03:39

Validator Improvments

I’ve just moved an improved license validator into place . While I had initially planned to migrate away from straight-CGI coding with this update, the gods were against me. I started prototyping in Quixote , and ran into problems with Unicode encoding. So I decided to put the conversion on hold. If I figure out how to emit Unicode from Quixote, I’ll probably do this at some point in the future.

This update does, however, have some real improvements, all of which were suggested by the excellent testers on the cc-metadata mailing list. These include:

  • Seperate forms for URL or paste-in validation; previously the URL always overrode the text area, which could be frustrating
  • The addition of some sample RDF, as well as convenience buttons on the form
  • Better error reporting. If your RDF (XML) is not well-formed, the validator will now tell you where the error occurs (if it knows); more on this in a moment
  • When parsing a web page, problems in one RDF segment won’t affect validation of other segments
  • You can now view the raw RDF from the results page by clicking the show raw RDF links
  • Things that look like links, are
  • Magnets are properly magnetized
  • rdf:about is displayed
  • If a RDF segment does not contain a license, the validator says so, and then tells you what it might contain
  • Various cosmetic changes

With such a large number of changes, the source code layout has also changed. Instead of a single file, the code is now split into a handful of modules. I’ll have a tarball up later this evening.

A note regarding validation: currently the validator only “validates” as much as RDFlib does; I’m working on that. Further, if you receive some weird traceback, or an “unknown error” message, please e-mail me.

Thanks for all the suggestions and trouble reports; try it out and let me know what you think.

date:2003-10-23 16:40:18