QZ qz thoughts
a blog from Eli the Bearded
Tag search results for blosxom|administrivia Page 4 of 6

New logos, in bulk


After my last post, I got to thinking logo making was far too manual, so I decided figure out how to get Imagemagick to generate the images for me. Imagemagick is a powerful set of tools, but it has super shitty documentation. What you can find, however, is example usage which is sometimes enough to get you going. Testing with on-hand TTF files I was able to convince myself this would work.

Then I started looking for fonts. I found Font Space. There are more fonts than I'd want to shake a stick at, but it suffers from some odd organization. The list of tags associated with, say, "Vegan Style", means it comes up in tons of searches. It's a tattoo font, and a summer font, and a vintage font, and a modern font, and a tropical font, and a sexy font, and a resume font, and a fun font, and a recipe font, and a Christmas font, and I could go on. Anyway, I found a lot of fonts and started downloading.

Fonts from there are all zip files. Some of which have subdirectories, many of which have multiple font files within the zip, and all of which seem to have bad Unix file permissions. I wrote my script to accomodate all that. Hand it a zip, and it pulls the fonts out, constructs an image with that font, and then deletes all the temp files.

The logo-tool works relatively fast. On my slow, cheap, computer I made 1944 images from 846 font zip files in about 12 minutes. It took me a lot longer to find the files at Font Space, and a lot longer to sort the output into "use" and "do-not-use". Because I don't want all of the bold and the italic and the outline and the bold-italic and bold-outline ... versions of a font. I kept one or two from most fonts, but discarded all from some because, eg, the font lacked a glyph for "Z" or ended up being totally unreadable.

How I did the sorting is worth sharing. I love the Linux image viewer feh, it is fast, flexible, and powerful. In this case I updated an old tool of mine called fehcopy to have a "move" mode, then created a new "theme" for feh:

$ echo "fontsort --cycle-once -A 'fehcopy -m -d ../do-not-use %f'" >> \
  $HOME/.config/feh/themes
$

The --cycle-once bit means feh will not restart from the beginning upon reaching the end. The -A action argument is the powerful one. When I hit "0" (zero key) on an image, it will run that command with %f being expanded to the current filename. Then it's just a matter of going through hitting space (for keep / next), zero for do-not-use, and sometimes "p" for previous when I want to compare a pair of files. feh supports up to ten different actions, using 0 to 9 to trigger them. I wrote fehcopy years ago to help with that sorting stuff between a bunch of directories. I can't recall why I preferred copy to move now.

Themes in feh can be invoked in two ways. I used the simpler way for this feh -T fontsort, the more complicated (but good for frequent use) is create a symlink to feh with the name of the theme, then run the theme as a program. I use that with my fehonce theme now, and I've had others in the past:

$ grep fehonce $HOME/.config/feh/themes
fehonce --scale-down --cycle-once
$ cd ~/bin/
lrwxrwxrwx 1 elijah elijah 12 Nov  3  2013 fehonce -> /usr/bin/feh
$ 

Anyway, that's how I have 891 new logos today.

Post Filter


So I started working on a method to compose posts better, for my idea of better at least. Version one of qzpostfilt (and a README and some test code) is available in the git repo and browsable here.

It's a mis-mash of Markdown and nroff/troff style commands. I picked what I thought the easiest to remember and to type on a phone keyboard methods of composing my posts would be. Basically you have markdown style inline formatting for bold, italic, code and *roff style formatting for more block level stuff. As a general rule: .foo creates <foo> and you need to explicitly close your ./foo.

my xterm composing this post

It ends up looking more like *roff than markdown.

I see this as the first step towards a composing tool. I'll also need a CGI wrapper for phone use and a command line wrapper to help with tags. As of today, it's more of a :% !qzpostfilt in vi sort of thing.

Also in blosxom blog news, I've changed the html flavor templates slightly and made changes to the CSS file mostly to better support reading on small screens, but also for a <ul> class to use in recipe posts.

Lastly, I added another two dozen logos to the mix. Previously there had been 146, so it's up to 170 now. I don't recall how I created the first logos, this time my method was to type "QZ" in libreoffice, change the font size to 180, and then go through the fonts I have installed, screenshotting all the interesting ones. I next very roughly cropped the images so that each QZ was alone on a white background. From there I started scripting the work.

# for every png file, convert to ppm (RGB color), auto-crop a white border,
# convert to pgm (grayscale), rescale so ysize (height) is 100 pixels,
# convert to png making white (and only exactly white) transparent, saving
# that result in the "new" directory
for f in *png ; do pngtoppm $f | pnmcrop -white | ppmtopgm | 
   pnmscale -ysize 100 | pnmtopng -transparent =white > new/$f ; done

(That's something I need to add to qzpostfilt: a <pre> handler. Todo. Hand fix for now.)

A second, messier, pass with identify got me the files renamed to look like "linux-biolinum-keys-h100-w205.png" instead of "linux-biolinum-keys.png". My randomlogo plugin uses the height and width information when available.

Ides of March Patch


The Ides of a month in Roman counting is where they switched from counting days up in a month to counting days down. The Ides of March was also the day newly elected leaders took office. Julius Casear declared himself Emperor, no longer an elected leader, and the Ides was thus a fitting day to be elected dead.

On a totally unrelated note, I have a new patch ready.

This reorders some code, to ensure the &$interpolate() configurable function is available early. I'll use it in filter() in my new tags plugin (probably ready tomorrow). I've also fixed a bug that was sometimes doubling up the last post on a page. I didn't bother figuring out how code execution gets there, just added next; to restart the loop if it happens. I don't know if that only occurred because of my plugins, or if it was a long standing bug in blosxom for everyone.

I also removed the place were it sets -quiet as a param, I don't think that was used anywhere, but it caused it to be added to CGI parameters.

Lastly, I modified the version number in the code.

A new pagination plugin


I found my "round tuit" and rewrote the old paginate plugin to include the features of cooluri, thus superceding my modified versions of both of those (paginateqz-v0.10, nowcooluri-v0.2).

The new paginateqz handles both at once allowing me to have the "newer" and "older" pagination links on permalink pages, and those links go through posts a single entry at a time. This is the feature I really wanted. It works just like a real blog now!

At the same time I added some features. There's a new interpolation variable $paginateqz::np_sep which is a separator only set when next and previous links are set. The template filler in paginateqz now is respectful of how you may have a plugin to find templates (spoiler, I do) and how you may have a plugin to do interpolation (I do not).

Next up will be a tagging plugin. I have a draft which can find and display tags, but it does not let one search by tags, yet. I also need to actually go and tag posts for it to be useful. After that, I'll have all the features I find essential. Non-essential, but nice to have, will include searching and comments. The comments one is hard because of spammers. Tags that search takes me to 80% value of complete search, I think.