Tafelmusik

An Illusory Intertwingling of Reason and Response

Tafelmusik is a look askance at life. It is a chronicle of the Dance of the Good Thing, a part in which I strive always to take. Here lie my musings, my thoughts, my beliefs, and my desires. Join me. Dance.

Tafel :: meta

Saturday, April 05, 2008

MicroID v0.1a for Blosxom

Mood: Geeky
Mood: Geeky

Download MicroID v0.1a

Sometimes I think my pages include more metadata than data. Ahh, well . . . at long last succumbing to the need to serve valid MicroIDs for each page of my own Blosxom installs (rather than simply for the first page), I bring you MicroID for Blosxom. MicroID will generate an arbitrary number of MicroID <meta> tags (for multiple claim emails) for your templating pleasure.

The difficulty with dynamic sites is that the MicroID contains the URL of the page signed, requiring pages to be signed on-the-fly as they're created. A precomputed MicroID for, say, the root level of a weblog, would become an invalid assertion over any other pages within.

For those of you who don't know, MicroID is a claim verification protocol allowing anyone with access to your email address to verify your ownership or control of your web pages. What it amounts to is the SHA-1 or MD5 signing of the page URL with your email address. Thus, you're able to attach your email address to pages, but only people who already know your address will be able to "read" it.

It's really no more secure in se than putting a <link rel="author" /> or any number of other semantic tags in your documents, as anyone who wants to could assert your authorship of an arbitrary document. However, it does provide a way for you to claim authorship without revealing personal details to anyone but the party you wish to convince. Thus the utility of MicroID is not in accountability (as it's too trivially forged), but in assertion of ownership.

Tuesday, February 20, 2007

Comments at Long Last: ScaloHan!

The most perfect comment system is HaloScan. It's versatile, allowing you to place comments on any web page whatsoever. It's spiffy. There's only one thing wrong with it: it's not a product, it's a service. That's right. If you use HaloScan for commenting on your weblog or other website, you're tied to a service which, while free, is by the very nature of free web-based services, ephemeral.

Presenting ScaloHan. ScaloHan is an implementation of a HaloScan-like commenting system which can be hosted on any server where you are permitted to run PHP. It's JavaScript-based on the client side, but is very efficient: even rather large pages shouldn't see a significant loadtime increase.

Kinda funny, though . . . I've been looking at several comment implementations for Blosxom, and any one of them would have taken the four hours I spent implementing ScaloHan simply to set up and integrate into my weblog. Having taken the effort to "roll my own", I not only didn't lose time, I gained in having it "tailor-made": it's the only comment system that does everything I want it to do, and nothing I don't want it to do. (Yes, it's all about me. *grin*)

The ScaloHan code will be available for download as soon as I've audited it for security. While it doesn't use a DBMS backend (it's flatfile, like Blosxom itself), there still may be lingering security issues.

So, what are you waiting for? Comment away!

Oh, I forgot to warn you. I've implemented a captcha system I've dubbed "Meanie", since it's similar to the MonkeyMath I use on one of my contact forms, of which one of my friends is always complaining. Meanie currently has two plugins: "Linear Equation" and "Stupid Question". It randomly selects a plugin, and spits out a challenge, which must be answered correctly in order for the comment to go through. (Don't worry. Form fields are persistent, so if you solve the linear equation incorrectly, you won't have to retype your comment.)

Tuesday, June 21, 2005

Mood v1.1 for Blosxom

Mood: Geeky
Mood: Geeky

Download Mood v1.1

I’ve just fixed a bug which kept the last-declared mood and applied it to all stories after it, until a new mood was declared. Turns out Blosxom’s sub story doesn’t clear any variable associated with it each iteration. It was easy enough to make sure that nothing whatsoever was returned if no mood was declared, though.

So, voiláa! I give you Mood version 1.1. For more details see the original release post.

Mood v1 for Blosxom

Mood: Geeky
Mood: Geeky

Download Mood v1

This is my second Blosxom plugin, but my first “from scratch.” Today at work, in a few minutes, I scribbled out seventeen lines of code which have survived virtually unchanged (and only slightly expanded) in the final plugin. I banged out the whole thing in a couple hours; and if I were a halfway-decent programmer, it’d not even taken me that long.

One thing I would like to add is support for multiple flavour sets. Right now, it is possible to switch between predefined sets by using renamed copies of moodlist.pl and simply changing the require line. I suppose it would be possible to do something like require $blosxom::plugin_state_dir.'/moodlist.'.$blosxom::flavour.'.pl'; but it’s two AM and I want to get to bed. I suppose I’ll add that as an option in v2.

*****

Mood retrieves $meta::mood from a meta-mood tag within an entry file (parsed by Blosxom Plugin: meta) and uses it to provide either a textual or graphical representation of the mood. Requires Blosxom plugin: meta.

$mood::text places a textual representation of any mood tag found.

$mood::img places a textual, and when available, graphical representation of any mood tag found.

Mood images are defined in the file moodlist.pl, included in the distribution, which must be placed in the plugin state directory. Any mood can be linked to an image in moodlist.pl, more than one mood can use the same image, and images stored in different locations can be used.

SCase (Sentence Case) v1 for Blosxom

Mood: Geeky
Mood: Geeky

Download SCase v1

SCase allows the use of capitalized directory names without losing theability to resolve lowercase URIs. Currently only makes the path case-insensitive: filenames in permalinks are still case-sensitive.

1. Converts the requested path, $blosxom::path_info, to sentence caseallowing all-lowercase urls to be used.

This is useful since very few people (in the ordinary, mundane sense of the word: I would never be grouping anyone who would have occasion to read thisas one of the masses) know that URIs are case-sensitive. Out of laziness, mostpeople type only lowercase letters, even if the path contains uppercaseletters. This allows an all-lowercase path to "find" its capitalizedcounterpart.

2. Provides all-lowercase story path ($blosxom::path) to be used in links.To turn this option on, uncomment line 18. Really only useful if you areusing capitalized directory names but for some reason only want to presentlowercase links to the world at large.

Future Work: I'd like to extend the functionality to case-insensitive file-names ($blosxom::fn), for truly case-insensitive permalinks. Unfortunately,that's a bit out of my league. Some help, maybe?

SCase was inspired by the lcase plugin by Jonathan Lundquist. (Mirror)

Sunday, June 19, 2005

About this Blosxom Installation

Eventually, a brag page about this Blosxom installation, together with links to my modified plugins (archives, categorytree, readme, find, calendar) and a full rundown of how the site works, should be here. Until then, be satisfied with a plugin list.

0000meta
00blok
00config
01calendar (slightly modified)
01categorytree (modified)
10interpolate_conditional
archives (modified)
breadcrumbs
date_fullname
deloxom (used in /Static/Deloxom)
entriescache
extensionless (for Cool URIs, as far as I'm concerned)
find (forms modified)
flavourdir
google_highlight
hide
interpolate_fancy
ping_weblogs_com_xmlrpc
postheadprefoot
readmeone (modified from readme)
reverse
storytitle
wikieditish

Using the Search Function

Tafelmusik uses Fletcher Penny’s Find plugin. It is actually quite a powerful tool, even though the interface is extremely simple.

The most powerful feature is its ability to use regular expressions (regexes). An thorough explanation of their construction is beyond the scope of this document, but I urge you to consult a reputable regex tutorial.

Advanced Options

The “Search” function allows you to choose whether to search only in the current locale (topic, month, et cetera), or across the entire scope of Tafelmusik. The “Match” functions allow you to toggle between default OR behaviour and AND behaviour (“Any” and “All”); and as well, whether to allow partial matches, or to require the search terms to be matched explicitly. Much more flexibility is actually available by familiarizing yourself with the search patterns below and using them in Basic mode.

For the more common functions and search patterns, I refer you to the find documentation, the relevant portions of which are provided.

From the documentation:

This plugin is capable of handling the following search terms:

  • term1 term2; term1 or term2
    • These match any page with term1 OR term2
  • term1 and term2; +term1 +term2
    • These match any page with both term1 AND term2
  • term1 not term2; term1 -term2
    • This matches pages with term1 that DO NOT contain term2
  • term1 not (term2 term3)
    • This matches pages with term1 that DO NOT contain term2 OR term3
  • "term1 term2 term3"
    • This matches the exact phrase, term1 term2 term3
  • " pen "
    • This will match the word "pen", but not the word "pencil".

You can also use regular expressions within your search terms to further refine your searches, creating a very powerful search engine.

Delosxom

Technorati