QZ qz thoughts
a blog from Eli the Bearded
Tag search results for administrivia Page 2 of 3

Twitter Redux


To go along with the revived blog, I'm going to try to revive my Twitter account, also long dormant. I've added it to the side bar under the "contact" heading.

I've been working on blog stuff almost every day for the last week, but there's not a lot to show for it. Most of the work has been going through old posts, looking for dead links to fix or update. That's slow and not very visible work, yet afterwards I feel like I've done stuff for the blog and don't need to do more.

The other thing I've been doing is figuring out why UTF-8 works in tags but not in body text. And the answer seems to be the Perl module FileHandle used by blosxom, which is a wrapper around IO::File these days, doesn't respect the use open IO => ':utf8' pragma. I've filed a bug report but I'll probably have to modify the code to fix that in a more timely fashion. sigh I was hoping to not have to make so many updates to the blosxom program itself.

Improved Tags Plugin


First major revision to the aaa_tags plugin. Several new features with this.

  1. AND search for multiple tags. Use ^ to separate tags.
  2. OR search for multiple tags. Use | to separate tags.
  3. NOT search for excluding tags. Prefix with ~ to exclude.
  4. All of those can be (crudely) combined for a complex search. Use , to combine them.
  5. Multiple uses of tag= CGI parameter allowed, if individual words, they will be considered an OR list.
  6. UTF-8 tags are now allowed.
    Tags can be ASCII letters, numbers, hyphen and underscore, plus any Unicode codepoints above U+00A0 (A0 is non-breaking space; that is not allowed in tags).
  7. If there are stories before filter() but the tag search has removed them all by the end of filter(), then story() will (attempt to) display an error page. Due to the way date filtering works in blosxom, story() may not get the chance. But it works for date unfiltered stuff.
  8. New template for that error: aaa_nothing_left
  9. New interpolatable variables.
    • Configuration parameters $aaa_tags::top_count and $aaa_tags::threshold
    • $aaa_tags::frequent_tags has a list of tags, much like the old $aaa_tags::top_tags, but alpha-sorted and a list of all tags with more than $aaa_tags::threshold uses.
    • $aaa_tags::this_search_terse has a value suitable for stuffing into a tag= CGI parameter for repeating the current search. Can be used anywhere.
    • $aaa_tags::this_search_verbose has a text description of the search, only for use in the error template.
    • $aaa_tags::this_search_table has a table of usage frequencies of the tags in the current search, only for use in the error template.

This is a lot of new code. There are probably bugs lurking in all of this. I've only done cursory testing, but I've been very happy with the results.

Reviews from 2020
/qz/blosxom?tag=review^2020
2003, 2004, 2005, 2006, 2007, and 2008 posts without "deadlink" tag (but see below)
/qz/blosxom?tag=2003|2004|2005|2006|2007|2008,~deadlink
Posts from 2020 not tagged with "blog"
/qz/blosxom?tag=2020,~blog
Blosxom or "administrivia" posts, as two tags
/qz/blosxom?tag=blosxom&tag=administrivia
UTF-8 tag, unique to this specific post.
/qz/blosxom?tag=utf-8✓
A search that will return no results.
/qz/blosxom?tag=blog,~blog

Testing this has made me realize (a) I've got a real problem with bad "deadlink" tagging, as in posts that should have that tag don't; and (b) the deadlink test was kinda flawed in that in only looked for 200 responses so sites that redirected http: to https: got mistakenly flagged. I need to fix both of those issues before the results of the example deadlink search reflect what really should be called deadlinks.

Site Revamp


Making this blog has prompted me to look at the rest of the site. The main home page was rather sad. I've spruced it up, dropped the downloadable font for the logo and replaced it with an image. It's a lot smaller, and it allowed me to color the image in. The new logo uses "Stereolab" by Blue Vinyl Fonts. A Stereolab logo is in the rotation from the original set of random logos. The designer has changed websites since then (but still doesn't have a good SSL certificate). That font lacks a blank with the upper graph, so I used a dots, edited them out, filled the outline with a gentle red to purple gradient, then superimposed black lines on top of the colored ones in the graph. I think the effect is much nicer than the old "Impact Label" font and is half the size. (The designer of that, Michael Tension, does not have his own site.)

I also changed the Braille content and made the table adjustable in size for smaller screens. Then I labeled the links by some simple categorizations and put a plain text H1 tag at the end for text browsers.

Beyond the home page, I also cleaned up the cardboard shelves how-to which had suffered by Flickr images going away. Fortunately, I have a complete mirror of my Flickr pages that dates back to when I gave up on that size. So finding the images by their old Flickr IDs was trivial.

Usenet post filter


Okay, I have added a lot more old reviews and along the way wrote a Usenet post to qzpostfilt markup language filter. I call it qznewsfilt .

It does much but not all of the grunt work of conversions. I still have to manually add filenames, tags, fix line wrapped underscore-for-italics issues, convert quotes to blockquotes (where I mean quotes from books and the like, not quotes from other posts), excise quotes from other posts (that context isn't valid on the web), and fix link text.

For the last one, I found many, but not all, could be fixed with a vi macro. I created it using the handy q marcro recorder in vim.

k:.s,[^(]*,_&_ ,^M0Djf"p

A paragon of clarity, isn't it? Broken down:

k                         move up a line
 :.s                      search and replace on current line
    ,[^(]*,               everything up to first open parens
          ,_&_ ,          surround that string now with underscores and end space
                ^M        this is a literal newline to trigger the :s
                  0       move cursor to start of line
                   D      delete to end of line
                    j     move down a line
                     f"   find first " on the line
                       p  paste in last deleted fragment

I used it to turn:

Movie Name
.a https://imdb.example/url/ "at IMDB"

into


.a https://imdb.example/url/ "_Movie Name_ at IMDB"

On the less frequent

Movie Name (Year)
.a https://imdb.example/url/ "at IMDB"

examples, it needed a little bit of white space fixing afterwards.


.a https://imdb.example/url/ "_Movie Name _ (Year)at IMDB"

but overall, not too bad.