Shallow Thoughts : : blogging
Akkana's Musings on Open Source, Science, and Nature.
Fri, 29 Feb 2008
Python is so cool. I love how I'll be working on a script and
suddenly think "Oh, it should also do X, but I bet that'll be a
lot more work", and then it occurs to me that I can do exactly that
by adding about 2 more lines of python. And I add them and it
works the first time.
Anyway, it turned out to be very easy to go through all existing
blog articles and add tags for the current category hierarchy,
being careful to preserve each file's last-modified date since
that's what pyblosxom uses for the date of the entry.
add-tags.py
Tags: blogging, programming
[
18:37 Feb 29, 2008
More blogging |
permalink to this entry
]
Wed, 27 Feb 2008
Entries on this blog are arranged by category. But all too often I
have something that really belongs equally well in two
categories. Since pyblosxom's categories follow the hierarchy on disk,
there's no way to have an entry in two categories. Enter tags.
Tags are a way of assigning any number of keywords to each blog
entry. Search engines apparently pay attention to tags, and most
tagged blogs also let you search by tag.
I wanted my tags to follow whatever canonical tag format the big
blogging sites use, so search engines would index them. Unfortunately,
this isn't well documented anywhere. Wikipedia has a
tags
entry that mentions a couple of common formats; the HTML format
given in that entry (<a rel="tag" ...>) turns out
to be the format used on most popular sites like livejournal and
blogspot, so that's what I wanted to use. Later, someone pointed me
to a much better tag
explanation on technorati, which is useful whether or not you
decide to register with technorati.
Next: how to implement searching?
The simplest pyblosxom tags plug-in is called simply
tags.py.
All the others are much more complex and do tons of things I'm
not interested in.
But tags.py doesn't support static mode, and points
to a modified tags.py
that's supposedly modified to work with static blogs.
Alas, when I tried that version, it didn't work (and an inquiry on the
pybloxsom list got a response from someone who agreed it didn't work).
So I hacked around and eventually got it working.
Here's a
diff
for what I changed or just the
tags-static.py
plug-in.
Additional steps I needed that weren't mentioned in tags.py:
- Add "#tags foo,bar" directives as the second line of an entry,
right under the title; anywhere else in the file it will be ignored.
- You may ned to create the tag directories
http://yoursite/tags/$tagname
yourself (pyblosxom created the directories for me on the web
server, but not on the machine where I first tested).
- In addition to the config file entries discussed below, if you use
an extension other than .txt (or maybe even if you don't) you also
need to set
py[ 'taggable_files' ] = [ "ext" ]
- In your story.html template, include
$tag_links
wherever you want the tags line to go. But make "Tags:
" or something similar be part of the pretext, so it won't
be included on un-tagged entries.
I also wrote a little python
index.cgi
for my blog's /tags directory, so you can see the list of tags used so
far. Strangely, tags.py didn't create any such index, and it was
easier to make a cgi than to figure out how to do it from a blosxom
plug-in.
And as long as I'm posting pyblosxom diffs, here's the little
filename
diff for 1.4.3 that I apply to pyblosxom whenever I update it, to
let me use the .blx extension rather than .txt for my blog source files.
(That way I can configure my editor to treat blog files as html, which
they are -- they aren't plaintext.)
Anyway, it all seems to be working now, and in theory I can tag all
future articles. I'll probably go back and gradually add tags to
older articles, but that's a bigger project and there's no rush.
Tags: blogging, programming
[
15:04 Feb 27, 2008
More blogging |
permalink to this entry
]
Wed, 26 Jul 2006
Administrivia:
I've switched over to using static files with pyblosxom, instead of
generating everything from a CGI, to save some load on the server.
That means that URLs on this blog are changing to be a bit cleaner.
For instance, this entry, instead of being
http://shallowsky.com/blog/index.cgi?blogging/tostatic.html,
becomes http://shallowsky.com/blog/blogging/tostatic.html
instead.
The RSS URL changes from http://shallowsky.com/blog/?flav=rss to
http://shallowsky.com/blog/index.rss
The best top level URL to use is http://shallowsky.com/blog/
I've hacked up a python CGI script that will try to remap the URLs
appropriately, so old feeds will continue to work for a while.
But it probably isn't very robust, and I'd like to get rid of the
script eventually, so please update any bookmarks you might have to
this blog.
Tags: blogging
[
22:38 Jul 26, 2006
More blogging |
permalink to this entry
]
Tue, 15 Feb 2005
Lots of Linux blogging software, such as the pyblosxom I'm currently
using, uses the Unix file date on for each posting to determine
the date at which the entry was made.
This makes it very convenient to add new entries, but it also
makes it tricky to go back and update an old entry without losing
all information about when the entry was originally posted.
I've been using a little sh script I hacked up for the purpose,
which parsed the output of ls -l and then passed that in to
touch -d.
It worked, but it was ugly and had problems with postings that
crossed a year boundary or were too old (because the ls -l
format varies).
I finally got around to rewriting the script in python.
It's more robust now, and cleaner, plus it checks EDITOR and
VISUAL instead of always using vi.
blogedit
Tags: blogging
[
22:51 Feb 15, 2005
More blogging |
permalink to this entry
]
Thu, 26 Aug 2004
I discovered this morning while trying to improve the layout of
this blog that Blosxom (the perl version) keeps six processes
running once a query has been made. So changes to the CSS don't
actually show up on the web site, because the copies in the
running processes' cache don't have the new changes.
That makes it rather challenging to integrate new CSS changes
into a Blosxom site. (There must be a trick -- I've seen some
nice looking Blosxom sites, but there aren't any templates or
hints in the documentation.)
So I went looking for alternatives, and decided to try
PyBlosxom
first since it didn't require any changes to the existing entries.
It's very nice! Much easier to configure than perl blosxom, plus
it comes with (a) CSS template samples and (b) a collection of basic
plugins that actually work. Nice!
So now I have a sidebar and a category list as well as a calendar,
and CSS configuration should be much easier from now on.
Tags: blogging
[
16:07 Aug 26, 2004
More blogging |
permalink to this entry
]
Fri, 23 Jul 2004
I tried nanoblogger yesterday, wondering if it would fix the
problems I'm having with blosxom (primarily, not being able to
limit the display to a small number of entries then offer some
way to get to earlier entries). It does fix that, but it has
other problems: it has a lot of bugs involving duplicate entries
that show up if you remove items or add them to categories,
and the category management is a hassle (you have to refer to
categories by number, there's no menu offered, and the command
to list the current categories is nonobvious though of course
it could be aliased).
A slightly bigger problem is that since entries are generated when
they are initially input, any change to the entry format later
doesn't get reflected in what appears on the web. Only sometimes
it does. I wasn't able to find a command that just did "refresh
entries" though adding a new entry sometimes accomplished that
for older entries (as well as also introducing duplicates and
other strange problems).
I was also a little bothered by not being able to preview the
site locally (nb hardcodes the site's url, so links all go to
the real site rather than the local copy, and css files work
inconsistently -- they work on some pages but not others) but
OTOH blosxom, being a cgi, obviously can only work through a web
server and not as local files, so they both have that problem as
far as maintenance on a disconnected laptop (and in both cases
it can be worked around).
The default nb look (when it does use the css, which it doesn't
always) is much nicer than the default blosxom look. For blosxom
I'll have to write css and collect a bunch of plugins to get things
that nb offers automatically, like a sidebar with topics and a
calendar of past entries. That's an appealing side to nb.
I'd be really tempted if those duplicate entries weren't such
a problem. Hmm.
Tags: blogging
[
09:48 Jul 23, 2004
More blogging |
permalink to this entry
]
Sun, 18 Jul 2004
I'm testing out the possibility of switching to Blosxom.
It was very easy to set up, and wasn't even that hard to move my
entries over (thank goodness there weren't that many of them, though)
but there's a showstopper: I can specify $num_entries, the number
of entries shown on a page; but there's no way to get to the
previous entries! You can specify a date if you know it, or a
year, or a month; but in each case, it will only show you the
first $num_entries entries for that time period.
Who would want to have a blog but have a bunch of unreachable entries?
I've asked around, googled, and spent an hour or so in the source
(which makes it look like $path_info is set if a date or topic
is specified, otherwise unset, and patti found a yahoo posting
that suggested doing something like
$num_entries = ($blosxom::path_info ? 999 : 3);
but in fact, $num_entries is always null).
I've been through all the plugins, too. How could this popular package
be broken in such an obvious way?
Tags: blogging
[
22:59 Jul 18, 2004
More blogging |
permalink to this entry
]