InkScape SVG Editor

I don’t currently feel the need to create or edit any SVG files, but if I did, I would use InkScape. InkScape is a free (open source) direct manipulation editor for SVG. Create, move, resize, union, intersect, paint, fill, and more. Builds are available for various flavors of Linux, the Mac, and Windows. Check out the screen shots. The full distribution includes some great sample illustrations.

Creative Commons Licensing

Over on the Lockergnome RSS channel, Robin Good calls for an open access directory of RSS feeds, all cleanly marked with the proper Creative Commons licenses.

This is a great idea and I agree with all of his goals.

There’s no need to create a new directory, though! Syndic8 has been tracking the use of Creative Commons licenses since April of 2003.

Full information can be Creative Commons license usage can be found on the Syndic8 RSS Statistics Page. Scroll down a bit to see the license usage stats. As you can see, not that many feeds are using licenses yet.

I would be happy to support an effort to get more feeds marked with licenses.

MySQL Merge Tables

The MySQL merge table is a powerful yet finicky and delicate beast. If you don’t feed it just right, it will jump up and bite your hand off, or it will totally ignore you.

So, what’s a merge table anyway? If you have a number of MySQL tables with identical definitions, you can create a merge table which encompasses the individual tables, and then you can perform certain SQL operations on the merge table instead of on each table.

For example, perhaps you are storing events, and you have a table for each month of the year. Perhaps these are named for months, eventsjanuary, eventsfebruary, and so on, all the way up to and including eventsdecember. You can create a merge table on top of all of these, like this: create table eventsyear [definition] type=merge union=(eventsjanuary, eventsfebruary, ..., eventsdecember). If you then run a select on eventsyear, you will get events from all of the months. You can do a number of other SQL operations on the merge table, including delete, insert, and update.

The problem is that MySQL is extremely picky about the definition of the component tables and of the merge table. So picky, in fact, that the tables can look identical when viewed with describe tables, yet MySQL will not see them as identical. If the tables don’t match the definition used to create the merge table, they will be left out of operations on the table, with no indication other than an incorrect result. This is not good.

Here’s what happened to me. I had two indices on each of the child tables. Let’s call then A and B. The merge table specified the indices as key(A), key(B) However, the code which created the indices created an index on B and then on A. The definitions were different, and the tables were ignored. PhpMyAdmin shows the table indices in their actual order, and this turned out to be an essential piece of information.

Once I got this straightened out, things were back to normal.

By the way, don’t let this list scare you away from merge tables. They work really well, and Syndic8 has tens of millions of headlines stored away in a series of such tables. I use one table per poll, and then I re-create the merge table at the end of each poll.

Putting RSS onto Web Pages

Attention: This page has been superseded by my new Definitive RSS on a Page List document.

On a regular basis I am asked about the best way to put RSS on to a web page. I’ve been collecting some links, and I expect that more will show up once I make this post. I will plan to update it based on feedback.

Here’s what I have so far. I have not tried any of these. I don’t know which ones are free, which ones are easy to use, and which ones require a PhD.

> Updates:

Give me the News, just keep the Paper!

Wired relates the story of a study done by the Washington Post which discovered that people wouldn’t take their product even if it was free. The background story comes the Washington City Paper.

People wanted better navigation, more indexes, more summaries, less pictures, and more content. On the whole they aren’t ignorant of the news, they simply get their news from other places. RSS, news readers, and syndication are mentioned as contributing factors.

I have to think that simple physical factors are involved here as well. Although we still receive and read the Seattle Times in hard copy, that huge form factor is an ergonomic disaster. It takes up way too much space and it is way too hard to read. As I get older I find that reading the paper without constant shuffling is a big pain.

Comment Verification Followup

Wow, it is great to create something that people find useful! My article on WordPress Comment Verification has generated lots of trackbacks and comments, all informative and none of them spam!

A reader by the name of Willie asked “Just wondering, how hard would it be to generate one of those graphics with a word that must be typed in instead of your name?”

Willie, those graphics are called Captchas, and you can read more at the Captcha Project Site and in Wikipedia entry.

It would not be hard to generate these images using PHP and Thomas Boutell’s GD Library. My only concern is that this library is not configured in to PHP by default, and this may cause some installation problems. Getting GD to properly find and use system fonts can also be tricky.

The real issue when you create something cool, free, and simple like this is the ongoing support. Perhaps I’ll do something that is cool enough that the WordPress guys will include it in the default distribution.

Putty — SSH Client For Windows

I have been using the PuTTY SSH client for several years. It is fast, reliable, and most of all, it’s terminal emulation is perfect. Emacs runs fine and I have never, ever seen a display glitch. I cannot say this about any of the other clients/emulators that I tried in the past.

Last week I found a way to reduce the number of clicks needed to initiate a PuTTY session. It is easy to create and save named sessions using PuTTY. Each saved session consists of a host name, protocol (SSH, Telnet, and so forth), and many other parameters. When PuTTY is started, it displays a list of sessions; double-clicking on a session opens the connection and gets the session started.

So far, so good. However, I wanted to make this even more efficient (yes, being lazy is a virtue). I read the PuTTY docs and found that I could pass the session name to PuTTY using the command line using the -load option. I have a saved session named Syndic8, so I created a Windows shortcut with the following target: C:binputty.exe -load Syndic8

I created a unique name and icon for this shortcut, and now I can just double-click, enter my password, and my session is ready.