Whoops.. See the next post to get the software that goes with this one.
Part 2: Adventures in Tagging and Interface design
The AppRocket Model
I found a "desktop accelerator" type utility through del.icio.us called "AppRocket". It's just a little bar that docks itself to the top of your screen. You enter a few characters and it drops down list of terms that match. The set it searches is configurable, but includes all your files, your start menu items and bookmarks. It also has special items like "Google" which let you search from that little bar. It also has a memory of terms you've entered and scrolled down the list to reach; it brings these to the top during subsequent searches.
Very handy little tool; reliable, cute-but-functional interface. I might buy it, but I can't discover why I would want to. Nothing appears to be disabled. There's no list of "purchase now and receive..." features. It appears to be more along the lines of guiltware -- but $20 is a little much for that. (Their website announces that they've cut the price in half, to boot.)
Also, the search feature is not without its flaws. Suppose I want to access the C:\Temp folder on my hard drive. I type in "C:\Temp" but it looks like backslashes aren't allowed. Okay, so "Temp". Now I have a list that that stretches about 10 times the length of the small droplist. All these temp folders are under Visual Studio projects' "obj" folders. I scan down the list, but they all say the same thing: temp * My Documents. I can't find my temp folder, and I give up. This might not be such a problem except that AppRocket claims to be a "very handy file browser".
So what's the moral of the story? The programs that help users find their stuff should be as unobtrusive as possible. The user doesn't want to think about your program when they've got their stuff on their mind.
Kicking the Tires
First thing's first: I had to choose a name other than "Loquacious" since that had already been appropriated by a del.icio.us account-commenting bookmarklet: http://rich.headsnet.com/loquacious/index.php. Instead, I'm going to use the development name "Desktocious". Original, huh?
There's a list of specifications in Part 1 that I'm satisified have been fulfilled, see those if you need to get an understanding of what Desktocious does. So I'll start by describing how the program works. Skip to the last section if you're more interested in a little analysis of how well the experiment has turned out.
Visual tour
AppRocket has the advantage of requiring absolutely no user input before using. You start it up and start typing in search terms. "Goo" brings up Google. For Desktocious, though, the user will have to plug in their own.

The most intuitive way to do this is to associate the tagging mechanism with the Folders themselves, so a context menu extension is the logical choice.

This dialog lets you associate tags and descriptions with Folders. Note that you can select many folders to tag at once, just ctrl + click in Explorer. If you try to tag a folder that's already been tagged, the new tags will simply be merged into the old list.

This is the primary interface of Desktocious, believe it or not. You can either access it by clicking on the tray icon or by pressing CTRL+F12. Type a tag and it will display a list of associated Folders. Use the up and down arrow keys and Enter to launch a selected folder (CTRL+Enter opens all). Desktocious will attempt to auto-complete the tag you are currently typing.

The 'Down' arrow (or a click anywhere else on the desktop) minimizes the popup box. The 'X' button exits. But what's really interesting is the 'Up' arrow, which brings up the Tag Viewer:

The Tag Viewer form lets you query tags in much the same way as the popup. The big difference is that here, the tags themselves are the primary focus. You can view tag query results by clicking on the tag list (CTRL-clicking lets you add multiple tags) or typing in a query. Instead of autocomplete, a list of possible queries and the number of results of each is displayed. You can refine results by referring to the "Related Tags" list.

Edit entries by double-clicking on the them in the results list. Delete by clicking on an entry and hitting the Delete key.
So Far, So Good
When it comes to dogfooding myself, I'm terrible. I hardly ever use a program I've written on a regular basis. (Feel free to speculate on why this is...)
So, regular use is a pretty high bar for my own software. If I can achieve that, my confidence in the usability of the program will grow. So far, things are looking good. An example:
While doing some debugging, I needed to combine things from 3 different folders. I knew that a window for one was already open and hiding on the taskbar somewhere. The other two were buried deep on a different machine. I'd assigned both of them the same tag earlier, so it was trivial to hit CTRL+F12, type the first character (although more may be required when my tag list gets denser), and hit CTRL+Enter to launch browsers for both directories. The gratifying thing is that I pulled up those two folders in much less time than it took to locate the first, already open folder.
I've since removed all my desktop folder shortcuts. They were a real pain to find and open to begin with. I also found myself tagging folders of utilites I frequently use. Which leads me to the next section...
What Next?
As a commenter pointed out in Part 1: Why not tag files? Well, my initial reasoning was that folders are one higher up in the hierarchy and the files they contained were easily within reach provided I could browse to a particular folder quickly. Well, now that some working code has been layed down I think it's perfectly reasonable to consider the taggability of files. But I'm going to be greedy: I want to tag other things. It's time to think generic.
For tags to be a ubiquitous solution, the interface must be able to associate them with almost any kind of data. Right now, Desktocious is limited to tagging folders. But the principle can be applied to almost anything; from whole networks to computers, disks, files, text, bookmarks, e-mail addresses, shortcuts, and, if you really wanted to tag them, bytes. (What an expensive and unstructured addressing mode that would be!)
The complexity in services like del.icio.us and Flickr doesn't come from this scheme of grouping large sets according to a few key words, it comes from the social and scaling problems. (Not that I would argue del.icio.us is especially complicated.) Just think about how much crunching power, not to mention bandwidth, is required on a daily basis over at Flickr. If we take tagging and distill the social complications out, the result is really quite trivial. Windows 2000/XP, or more specifically, the file system they are built on, already allows for keywords to be associated with files. For various reasons, namely complexity and file system independence, I've chosen not to use them.
Picasa 2, from Google, already lets me tag or label my pictures simply by right-clicking on them wherever they are in the viewer and choosing a label from a popout list. They are instantly added to and displayed in the label's viewing area, with an unobtrusive visual marker indicating that we're looking at a labeled image and the original is somewhere else. Another quick click brings to do the folder they're stored in in the viewer, and another launches explorer with the file already highlighted. Simple. On the other hand, there's no way to query these labels; you simply view them one at a time in the browser.
So here's a little outline for for "Desktocious Ultra". Feel free to add your own suggestions to the list:
Features
- Generic 'Taggable' base type for all items that a user wants to tag.
- Extensible framework that allows new types to be added to the tagging engine
- Boolean query operators (AND, OR, NOT)
- programs AND NOT bookmarks
- downloads AND (text OR document)
- (.NET OR C# OR VB) AND NOT ASP
Goodies
- Common tag "scaled" map a la http://www.flickr.com/photos/tags/
- Shell extension to indicate which files/directories are tagged
Posted by eric at March 31, 2005 10:08 PM
Comments
You may be interested in looking at this innovative software called InteType at http://www.tooto.com/intetype/
InteType revolutionizes the way of typing and using keyboard to communicate with computers with the unique and powerful features of Quick Searcher & Launcher, Intelligent Typing Assistant and Secure On-Screen Keyboard. InteType is a natural keyboard launchpad and provides a very intuitive way of accessing all types of files, launching programs and searching information on Web. InteType is an intelligent and easy-to-use typing system and makes data entry fast, efficient and simpler for anyone who types. InteType also has an on-screen keyboard that prevents any keylogger program recording your typings.
Posted by: matt at April 27, 2005 03:20 PM
