<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:georss="http://www.georss.org/georss"
    xmlns:atom="http://www.w3.org/2005/Atom">

    <channel>
        <title>Gavin Carr's Hackery</title>
        <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/</link>
        <category>tags/blosxom plugins/rss</category>
        <description>World disintermediation, one hack at a time</description>
        <managingEditor>gavin@openfusion.com.au (Gavin Carr)</managingEditor>
        <webMaster>gavin@openfusion.com.au (Gavin Carr)</webMaster>
        <copyright>Copyright 2007-2008 Gavin Carr</copyright>
        <pubDate>Mon, 03 Dec 2007 16:59:20 +1100</pubDate>
        <language>en-au</language>
        <generator>blosxom 2.0.2</generator>
        <atom:link href="http://www.openfusion.net/tags/blosxom%20plugins/rss/tags/blosxom plugins/rss" rel="self" type="application/rss+xml" />
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>
        <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

        <item>
            <title>Blosxom hcard plugin</title>
            <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/hcard</link>
            <guid isPermaLink="true">http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/hcard</guid>
            <pubDate>Mon, 03 Dec 2007 16:59:20 +1100</pubDate>
            <comments>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/hcard/trackback</comments>
            <category>blosxom</category>
            <category>blosxom plugins</category>
            <category>microformats</category>
            <description>&lt;p&gt;Building on my initial set of &lt;a href="http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/microformat_plugins"&gt;blosxom microformat plugins&lt;/a&gt;,
the &lt;code&gt;hcard&lt;/code&gt; plugin provides a global &lt;a href="http://microformats.org/wiki/hcard"&gt;hcard&lt;/a&gt; 
variable for inclusion in your blosxom templates.&lt;/p&gt;

&lt;p&gt;To use it, you simply define the set of hcard data to use in an 'hcard.yml'
file in your blosxom data directory, and then include &lt;code&gt;&amp;#036;hcard::hcard&lt;/code&gt;
somewhere in your blosxom flavours/template. An example hcard.yml for me
might be:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Name: Gavin Carr
Organisation: Open Fusion
Role: Chief Geek
Email: gavin@openfusion.com.au
URL: http://www.openfusion.net/
Suburb: Wahroonga
State: NSW
Postcode: 2076
Country: Australia
Latitude: -33.717718
Longitude: 151.117158
HCard-Class: nodisplay
HCard-Style: div-span
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'm using &lt;code&gt;hcard&lt;/code&gt; here, so if you have microformat support in your browser
(e.g. via the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4106"&gt;Operator&lt;/a&gt; 
plugin, if using firefox) you should be able to see my hcard on this page.&lt;/p&gt;

&lt;p&gt;As usual, available in the
&lt;a href="http://blosxom.cvs.sourceforge.net/blosxom/blosxom2-plugins/gavinc/"&gt;blosxom sourceforge CVS&lt;/a&gt;
repository.&lt;/p&gt;





            </description>
        </item>
        <item>
            <title>Blosxom Microformat Plugins</title>
            <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/microformat_plugins</link>
            <guid isPermaLink="true">http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/microformat_plugins</guid>
            <pubDate>Sat, 01 Dec 2007 17:01:08 +1100</pubDate>
            <comments>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/microformat_plugins/trackback</comments>
            <category>blosxom</category>
            <category>blosxom plugins</category>
            <category>microformats</category>
            <description>&lt;p&gt;I've been messing around recently with some ideas on adding some 
initial &lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt; support to blosxom. &lt;/p&gt;

&lt;p&gt;Microformats are fragments of html marked up with some standardised 
html class names, providing a minimalist method of adding simple 
structured data to html pages, primarily for machine parsing (try
out the firefox &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4106"&gt;Operator&lt;/a&gt;
plugin to see microformats in action). Some examples of currently 
defined microformats are contact details
(&lt;a href="http://microformats.org/wiki/hcard"&gt;hcard&lt;/a&gt;), events 
(&lt;a href="http://microformats.org/wiki/hcalendar"&gt;hcalendar&lt;/a&gt;), links or bookmarks 
(&lt;a href="http://microformats.org/wiki/xfolk"&gt;xfolk&lt;/a&gt;), geolocation 
(&lt;a href="http://microformats.org/wiki/geo"&gt;geo&lt;/a&gt;), etc. See the main
&lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt; website for more.&lt;/p&gt;

&lt;p&gt;With blosxom, one simple approach is to allow microformat attributes 
to be defined within story metadata, and either autoappend the 
microformat to the story itself, or simply define the microformat in 
a variable for explicit inclusion in the story. So for example, if
you wanted to geocode a particular story, you could just add:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Latitude: -33.717770
Longitude: 151.115886
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;meta-latitude: -33.717770
meta-longitude: 151.115886
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;to your story headers (depending on which metadata plugin you're
using).&lt;/p&gt;

&lt;p&gt;This is the initial approach I've taken, allowing you to attach 
microformats to stories with a minimum of fuss. So far, the 
following blosxom microformat plugins are available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uf_adr_meta&lt;/code&gt; - &lt;em&gt;adr&lt;/em&gt; support&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uf_geo_meta&lt;/code&gt; - &lt;em&gt;geo&lt;/em&gt; support&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uf_hcalendar_meta&lt;/code&gt; - &lt;em&gt;hcalendar&lt;/em&gt; support&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uf_hcard_meta&lt;/code&gt; - &lt;em&gt;hcard&lt;/em&gt; support&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uf_xfolk_meta&lt;/code&gt; - &lt;em&gt;xfolk&lt;/em&gt; support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that these are &lt;strong&gt;beta&lt;/strong&gt; quality, and may well contain bugs. 
Feedback especially welcome from microformat gurus. There's also 
a lot of other ways we might like to handle or integrate 
microformats - this is just a useful first step.&lt;/p&gt;

&lt;p&gt;All plugins are available in 
&lt;a href="http://blosxom.cvs.sourceforge.net/blosxom/blosxom2-plugins/gavinc/"&gt;blosxom sourceforge CVS&lt;/a&gt;
repository.&lt;/p&gt;





            </description>
        </item>
        <item>
            <title>Blosxom Tags</title>
            <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/tags</link>
            <guid isPermaLink="true">http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/tags</guid>
            <pubDate>Thu, 08 Nov 2007 00:51:31 +1100</pubDate>
            <comments>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/tags/trackback</comments>
            <category>blosxom</category>
            <category>blosxom plugins</category>
            <description>&lt;p&gt;I've been using tags here right from the beginning, because they 
provide a much more powerful and flexible way of categorising 
content than do simpler more static categories. This seems to be 
pretty much the consensus in the blogosphere now.&lt;/p&gt;

&lt;p&gt;I started off using &lt;a href="http://noone.org/blog"&gt;xtaran's&lt;/a&gt;
&lt;a href="http://noone.org/blosxom/tagging"&gt;tagging&lt;/a&gt; plugin. The one thing I
didn't like about &lt;code&gt;tagging&lt;/code&gt; was that it has a fairly brute-force
approach to doing tag filtering - it basically just iterates over the
set of candidate files and opens up and checks them all, every time.&lt;/p&gt;

&lt;p&gt;So I started messing around with adding some kind of tag cache to
&lt;code&gt;tagging&lt;/code&gt;, so that the set of tags on a post could be captured
when a post was created or updated, and thereafter tag filtering
could be done by just referencing the tag cache. That means that 
if you've got 100 posts, your tag query only needs to read one file -
the tag cache - instead of all 100 posts.&lt;/p&gt;

&lt;p&gt;En route I realised I really wanted a more modular approach to
tagging than the &lt;code&gt;tagging&lt;/code&gt; plugin uses as well. For instance, I'm 
experimenting with various kinds of 
&lt;a href="http://www.openfusion.net/tags/blosxom%20plugins/rss/tags/data%20blogging"&gt;data blogging&lt;/a&gt;, like using dedicated 
special-purpose blogs for recording bookmarks or books or photos.
And for some of these blogs I wanted to be able to do basic tagging
and querying, but didn't need fancier interface stuff like 
tagclouds.&lt;/p&gt;

&lt;p&gt;So I've ended up creating a small set of blosxom plugins that
provide most of the functionality of &lt;code&gt;tagging&lt;/code&gt; using a tag cache.
The plugins are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;tags&lt;/code&gt; - provides base tag functionality, including checking
for new and updated stories, maintaining the tag cache, and
providing tag-based filtering. Requires my &lt;code&gt;metamail&lt;/code&gt; plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;storytags&lt;/code&gt; - provides a story level $storytags::taglist 
variable containing a formatted list of tags, suitable for 
inclusion in a story template. Requires &lt;code&gt;tags&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;tagcloud&lt;/code&gt; - provides a $tagcloud::cloud variable containing
a formatted &lt;a href="http://en.wikipedia.org/wiki/tagcloud"&gt;tagcloud&lt;/a&gt; of tags and counts, suitable
for inclusion in a template somewhere. Requires a hashref of
tags and counts, which &lt;code&gt;tags&lt;/code&gt; provides, but should be able to
work with other plugins.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that these plugins are typically less featureful than the 
&lt;code&gt;tagging&lt;/code&gt; plugin, and that &lt;code&gt;tagging&lt;/code&gt; includes functionality
(related tag functionality, in particular) not provided by any
of these plugins. So &lt;code&gt;tagging&lt;/code&gt; is still probably a good choice
for many people. Nice to have choice, though, ain't it?&lt;/p&gt;

&lt;p&gt;All plugins are available in 
&lt;a href="http://blosxom.cvs.sourceforge.net/blosxom/blosxom2-plugins/gavinc/"&gt;blosxom sourceforge CVS&lt;/a&gt;
repository.&lt;/p&gt;





            </description>
        </item>
        <item>
            <title>'entries_timestamp' blosxom plugin</title>
            <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/entries_timestamp</link>
            <guid isPermaLink="true">http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/entries_timestamp</guid>
            <pubDate>Tue, 30 Oct 2007 20:42:07 +1100</pubDate>
            <comments>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/entries_timestamp/trackback</comments>
            <category>blosxom</category>
            <category>blosxom plugins</category>
            <description>&lt;p&gt;I've tried all three of the current blosxom 'entries' plugins on my
blog in the last few months: &lt;code&gt;entries_cache_meta&lt;/code&gt;, &lt;code&gt;entries_cache&lt;/code&gt;, and the
original &lt;code&gt;entries_index&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;entries_cache_meta&lt;/code&gt; is pretty nice, but it doesn't work in static mode, 
and its method of capturing the modification date as metadata didn't quite 
work how I wanted. I had similar problems with the &lt;code&gt;entries_cache&lt;/code&gt; metadata 
features, and its caching and reindexing didn't seem to work reliably for me. 
&lt;code&gt;entries_index&lt;/code&gt; is the simplest of the three, and offers no caching features, 
but it's pretty dense code, and didn't offer the killer feature I was after:
the ability to easily update and maintain the publication timestamps it was
indexing.&lt;/p&gt;

&lt;p&gt;Thus &lt;code&gt;entries_timestamp&lt;/code&gt; is born.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;entries_timestamp&lt;/code&gt; is based on Rael's &lt;code&gt;entries_index&lt;/code&gt;, and like it offers
no caching facilites (at least currently). Its main point of difference 
from &lt;code&gt;entries_index&lt;/code&gt; is that it maintains &lt;strong&gt;two&lt;/strong&gt; sets of creation 
timestamps for each post - a machine-friendly one (a &lt;code&gt;gmtime&lt;/code&gt; timestamp)
and a human-friendly one (a timestamp string). &lt;/p&gt;

&lt;p&gt;In normal use blosoxm just uses the machine timestamps and works just like
&lt;code&gt;entries_index&lt;/code&gt;, just using the timestamps to order posts for presentation. 
&lt;code&gt;entries_timestamp&lt;/code&gt; also allows modification of the human timestamps,
however, so that if you want to tweak the publish date you just modify
the timestamp string in the &lt;code&gt;entries_timestamp.index&lt;/code&gt; metadata file, and 
then tell blosxom to update its machine-timestamps from the human- ones by 
passing a &lt;code&gt;reindex=&amp;lt;&amp;#036;entries_timestamp::reindex_password&amp;gt;&lt;/code&gt; argument to 
blosxom i.e.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://www.domain.com/blosxom.cgi?reindex=mypassword
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It also supports migration from an &lt;code&gt;entries_index&lt;/code&gt; index file, explicit
symlink support (so you don't have to update timestamps to symlinked
posts explicitly), and has been mostly rewritten to be (hopefully) 
easier to read and maintain.&lt;/p&gt;

&lt;p&gt;It's available in the 
&lt;a href="http://blosxom.cvs.sourceforge.net/blosxom/blosxom2-plugins/gavinc/"&gt;blosxom sourceforge CVS&lt;/a&gt;
repository.&lt;/p&gt;





            </description>
        </item>
        <item>
            <title>'mason_blocks' blosxom plugin</title>
            <link>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/mason_blocks</link>
            <guid isPermaLink="true">http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/mason_blocks</guid>
            <pubDate>Wed, 12 Sep 2007 22:23:06 +1000</pubDate>
            <comments>http://www.openfusion.net/tags/blosxom%20plugins/rss/blosxom/mason_blocks/trackback</comments>
            <category>blosxom</category>
            <category>blosxom plugins</category>
            <description>&lt;p&gt;I've just released my first &lt;a href="http://blosxom.sourceforge.net/"&gt;blosxom&lt;/a&gt; 
plugin into the wild. 'mason_blocks' is a blosxom plugin implementing 
simple conditional and comment blocks using 
&lt;a href="http://www.masonhq.com"&gt;HTML::Mason&lt;/a&gt;-style syntax, for use in 
blosxom flavour and template files.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Mason-style conditionals
% if (&amp;#036;pagetype::pagetype ne 'story') {
&amp;lt;a href="&amp;#036;permalink::story#comments"&amp;gt;Comments (&amp;#036;feedback::count)&amp;lt;/a&amp;gt;
% } else {
&amp;lt;a href="&amp;#036;permalink::story#leave_comment"&amp;gt;Leave a comment&amp;lt;/a&amp;gt;
% }

# Mason-style comments
%# Only show a comments section if there are comments
% if (&amp;#036;feedback::count &amp;gt; 0) {
&amp;#036;feedback::comments
% }

# Mason-style block comments
&amp;lt;%doc&amp;gt;
This is a great big
multi-line, extremely important
comment.
&amp;lt;/%doc&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I wrote it when I couldn't get the interpolate_fancy plugin to work properly 
with nested tags, and because I wanted proper perl conditions and if-else 
support. mason_blocks provides all the conditional functionality of 
interpolate_fancy, but not other stuff like 'actions'.&lt;/p&gt;

&lt;p&gt;mason_blocks is available from the 
&lt;a href="http://blosxom.cvs.sourceforge.net/blosxom/blosxom2-plugins/gavinc/"&gt;blosxom plugins CVS repository&lt;/a&gt;.&lt;/p&gt;





            </description>
        </item>
    </channel>
</rss>