Conversant and the Interconnected Weblog

Apparently there are quite a few people like me wanting to organize isolated weblog-style posts into more meaningful collections of information. One proposed solution is to use a weblog front-end for a Wiki (with “biki” and “bliki” being the proposed terms for such said convergence).

This is, of course, exactly what I’ve been working on producing over the past couple years with Conversant . It’s been an amazing process, especially watching the feedback back and forth between the developers and users of Conversant which have helped make it an outstanding tool for the sort of personal knowledge management that the biki folks are looking for.

On this site alone, for example, the weblog posts are filtered into almost 220 different categories or subcategories in a process that just adds a few seconds to the posting process. Once a new entry is posted it is automatically added to the respective category page(s). In addition, there is an enormous amount of cross-linking going on, so articles show links to the category pages that they are relevant to, and the category pages also link to other relevant category pages. So, for example, the category page about the 2000 election links automatically to the Al Gore, George W. Bush, and Ralph Nader topical pages (which, in turn, link automatically to the 2000 election page).

Every single category page also has its own RSS feed which is linked to via the little orange XML icon (and also included in the header of the page for autodiscovery). For example, here is the 2000 Election RSS feed.

At the moment across the six web sites I run, I have almost 1,400 separate categories into which posts are sorted, each with an accompanying category page and RSS feed. My animal rights site currently has 524 separate categories, and adds about one a day.

Everything I do is strictly just a one man show, but the system has the capability to create groups and give permissions to such groups to edit, add, etc. categories and category pages.

Update: the title of this essay was originally “Weblogs+Wiki=Conversant.” This was changed to avoid confusion — Conversant has the features to make an interconnected weblog built in, but it has a different featureset than a Wiki.

Putting It All Together — Fun With Conversant

I’m still amazed some days at just how much can be accomplished in Conversant. The basic tools are provided, and you can mix and match them to do some awesome things.

For example, check out my demo of a system I’ve been working on to make it easier to navigate and reference certain kinds of documents (specifically, in my case, e-texts, though it could be used for pretty much everything).

This was inspired by (and much of it stolen from) Steve Ivy’s efforts with a speech by Colin Powell back in February. Each paragraph there has a named anchor, and at the end of the paragraph is a link to that anchor so that it is easy for anyone to reference a specific paragraph. Ivy also uses a bit of Javascript written by Seth Dillingham so that if you are viewing an anchored paragraph, that paragraph is highlighted. Very cool.

What I wanted to do was that, but I wanted a way to turn the anchor links at the end of the paragraphs on or off. I like having the links for reference, but they distract from the text if I’m just reading for content or want to print.

And so, on the Preface to Frederick Douglass’ “My Bondage, My Freedom” you’ll see a link in the right-hand column that reads “Show Permalinks.” Click it, and you’ll be shown a version of the page like Ivy’s, with the link at the bottom. Of course now the link in the right-hand column reads “Hide Permalinks.” Click it, and you see the version of the page without the visible links (though the named anchors are still in the page). This is done via Cookie’s, so if you prefer, you can always see one or the other or switch on the fly as you need. (Note: this probably won’t work in IE at the moment, but will after I do a quick updated later — use Mozilla or some browser other than IE to get the full effect).

Have it your way!

So here’s a brief look at what’s going on behind the scenes:

1. First, the page checks to see whether or not you’ve got this specific cookie set to true. If so, you are served the version with the permalinks visible. Otherwise, the web server passes along the clean version.

2. Second, the system checks to see whether or not I’ve designated this particular article as an E-text or not. If I have, it shows the Show/Hide link on the right. This way I can distribute this feature throughout all of my E-text pages while only having to use a single small snippet of HTML.

3. When you click on the Show/Hide link, you are directed to a page which simply sets a cookie and then redirects you back to whatever page sent you there. Again, this way two HTML snippets handle requests from an unlimited number of pages.

4. And, I am also using Seth’s hilighting Javascript. This also uses a conditional macro, so the page checks to see if this is an E-text page. If it is, it inserts the Javascript in the header area, otherwise it goes on to other things.

And it does all of this blindingly fast. Yes, this is running on a pretty fast machine after the recent upgrade, but consider that depending on the user, just loading the Preface there easily involves more than a dozen conditional macros that look for one state or another to decide how to proceed.

I think I’m going to sit back and let all of this power go to my head!

Resource Macro — Macrobyte’s One Step Ahead of Me Again

One of the things that really makes Conversant ideal from my point-of-view is that the system’s developers are often one step ahead of me feature-wise. What I mean by this is that inevitably a new feature will be introduced and I’ll be reading the docs and thinking to myself “why would anyone need that?” And then a few weeks later I’m usually thinking to myself “How did I ever live without this?”

Such is the case with the resource macro. Now using resources in Conversant is pretty straighforward. A resource is essentially a placeholder. For example, I’ve set up a macro called Afghanistan. If I surround the word Afghanistan with pipes, like this: |Afghanistan|, then the system will automatically create a link that I’ve set up so that the final result looks like this Afghanistan. Setting up new resources is real easy and much of the system I use to manage and categorize posts relies upon resources.

Back in April, Macrobyte added a macro to handle resources, and to be honest I couldn’t figure out why the heck anyone would want such a thing, since resources are so straightforward to use.

What the macro does, however, is let you add a bit of complexity when you need it. For example, one of the obvious limitations with the Afghanistan example is that I always have to use the word Afghanistan. What if I’d like to use that link but use different text. Suppose I wanted to say, “Al-Qaeda’s former stomping grounds” and link “stomping grounds” to the Afghanistan page? Now I either have to find a way to work the word Afghanistan in there or I have to go and find out what the URL is and manually insert it in “a href” tags. Ugh.

The linkResource macro takes care of this. Now all I have to do is post “Al-Qaeda’s former ” which will result in this: Al-Qaeda’s former stomping ground.

Excellent. I use a program called ActiveWords so that when I type “resource” and hit F8 it automatically inserts the basic template for the linkResource macro into any textfield I’m editing, so this has turned out to be an excellent solution to a problem I run into quite a bit.

Caching RSS Feeds and Macros in Conversant

The right-hand sidebar on the front page of this site features recent headlines from other sites I manage. This is accomplished using a macro in Conversant that reads the RSS feeds from those sites and then displays the two most recent posts on the weblogs there.

Which is cool, except it used to cause the page to load slowly when it was time to update the RSS feeds (which the macro did every hour).

So when the discussion on the Conversant support board veered to talking about RSS, I mentioned that it would be nice to be able to change the length of the feed cache.

Well, it didn’t take long until not only was that possible, but a feature was added so that the results of the entire macro itself could be cached. The upshot is that now the text of the headlines here only changes every six hours which means the front page now loads much faster than it used to.

Good stuff. And it may load even faster once we do a server upgrade currently schedule for May.

Holy Speed Improvement, Batman!

Seth Dillingham announced an upgrade to the Conversant code that would speed things up, and he wasn’t kidding. For a number of reasons, this site’s home page is one of the slowest on any of my sites. Before the change, this page would sometimes take 6 to 7 seconds to load. After the change, it loads almost instantaneously over my broadband connection. Not bad considering all of the dynamic things going on behind the scenes.

Yeah, Seth.

Macro Caching in Conversant

Macrobyte Resources have added a number of macro caching features in the last 48 hours, including caching the insertQuery macro. This is especially useful to me since I use queries on data fields to build dynamic category pages.

This works great, but as the number of articles found grew larger, the amount of time the insertquery macro took grew longer.

Caching the macro results dramatically improved performance. My Miscellaneous page used to take 9 to 10 seconds to display because it has so many articles. Caching it reduces the display time to about 2.5 seconds — quite an improvement.

Macrobyte has wisely included an option to control how long the macro is cached, and I’m setting it at 12 hours since I don’t update all that often, and I can live with a 12-hour dated category page that loads four times faster than normal.