Tag Management – Live Example Page

In response to the great feedback we have received, we felt it was worthwhile to put up a live sample page of Tag Management. It can be accessed here:

http://www.surfulater.com/tagsamples/TagMgmt.html

When you get to the page, you have options on the left as to how the Tag Management form will behave on the right. Here are the options and behaviours.

  • Whitespace Handling: Separator means whitespace acts as a separator, so “cat dog” will become two separate tags. Allowed means whitespace is just another character and part of a tag, so “cat dog” will become just one tag. Auto-Convert means whitespace is not allowed at all, and will automatically convert to an underbar ‘_’.
  • Remove/Keep Column: Keep means that the checkbox determines which tags to keep, with unchecked ones being removed. Remove means that the checkbox determines which tags to removed, with unchecked ones left as they are. 3-way means that the checkbox for each tags has three states: checked (keep on or apply to all selected articles); unchecked (remove from all selected articles); dash-checked or semi-checked (currently applies to some of but not all the articles).
  • New Tag Add: Text Only means that new tags in the “New tags” textfield are not shown as new tags in the rows below, but stay in the textfield until you click “Save.” Add to Rows means that as soon as you hit enter from within the “New tags” textfield, the new tags are immediately added to the rows below.

Set your options on the left, click the “Update” button, and try out the features in the Tag Management form on the right.

We look forward to more of your great feedback.

Avi

Tag Management Part III – adding new tags

Following up on the last two discussions, question #3 is as follows.

You add new tags in to the text field up top. Do those new tags get added to the rows at bottom, with the “Remove” checkbox empty? Or do they get added only when you click “OK”? Put in other terms, does the “New tags” textfield up top impact the rows at bottom even before you click OK (although not affecting the actual articles themselves until OK), or are the two activities separate?

For a good example of this, try the live sample we have posted (see the following blog post). The option is “New Tag Add.” To try it, select “Text Only” or “Add to Rows” followed by update. Then, go into the “New tags” textfield in the form, add some tags, and hit enter. In the case of “Text Only,” enter will do, well, nothing, since the new tags are only in the textfield. In the case of “Add to Rows,” all the new tags will be split on comma (and possibly whitespace, depending on your selection in the option of “Whitespace Handling,” and then be added to the rows.

Looking forward to your great feedback once again.
Avi

Tags and Whitespace – more feedback requested

As a follow-up to the previous article on tag management, and the great feedback we have received, we would like to get your feedback on whitespace in tags.

Here is the question: is a space a legitimate character within a tag, or is it only a valid separator?

Why does it matter? Arguments for the jury, in favour of whitespace in tags or against it.

  • Pro: Tags represent concepts. A concept is sometimes a single word, but sometimes multiple words that cannot be separated. If the tag is “dog animal”, really you are saying it is both a dog and an animal, and thus the two words are two concepts. If, on the other hand, the tag is “Sierra Leone”, (country in West Africa), this is one concept. It is not both in Sierra and Leone. We can think of lots of other examples where the two words together make one concept.
  • Con: Most tagging systems do not allow whitespace, indeed, many treat it as a separator. In many tagging systems, if I type “cat dog” I will automatically get two tags, one cat and one dog, and the whitespace will be treated like an automatic separation. Wiki systems work similarly. For obvious reasons, maintaining maximum upwards compatibility with other tagging systems, or at least not locking us out, makes a lot of sense.

Here are our possibilities:

  • Separator: Whitespace is a separator. If you type in “dog cat” or “Sierra Leone”, that is two distinct tags in each case. If you want to keep “Sierra Leone”, you need to manually and explicitly type Sierra_Leone, SierraLeone, Sierra-Leone or some variant. This is the del.icio.us method.
  • Allow: Whitespace is allowed. If you type in “dog cat” or “Sierra Leone”, that is one tag in each case. For the “dog cat” case, if you want two tags, you will either need to type “dog” then hit an add button (or similar) then “cat” and add, or use a recognized separator, e.g. “dog, cat”. Obviously whitespace at the beginning or end of a tag name will always be ignored. This is the Gmail method.
  • Auto-Convert: Whitespace is not allowed, but isn’t a separator either. Rather, every time you type in whitespace, it is automatically converted to an underbar ‘_’. So, if you type “dog, cat” you will get two tags, one of “dog” and one of “cat”. On the other hand, if you type “Sierra Leone”, you will automatically get “Sierra_Leone”. This is the Wikipedia/MediaWiki method.

One thing we definitely do not want is for there to be multiple options. Too confusing, and support is a nightmare, creating the worst of all worlds. Thoughts and feedback are always appreciated. If a working example would help, let us know in the comments.

Avi.

Tags – we need your help. Part 1

We are currently working on the next part of the new Surfulater Tagging capability and would like some guidance from you, our users. We are working on two new and related features that revolve around letting you add and remove tags from a group of selected articles. For example you might select six articles and then want to add one or more tags to these articles. Or you might want to delete a tag or two from them. To do this now you would have to select each article in turn and edit its Tags field, to add or remove the tags, which is cumbersome to say the least. 

There are ways to make this task a lot quicker and easier, which is the focus of this post. How are we proposing to do this? Lets start with adding tags. First you select all of the articles in the Knowledge Tree that you want to add some tags to, then right click on one and select Add Tags… from the context menu, which opens this dialog.

Add Tags Dialog

You can type in one or more tags, and auto-suggest lets you choose from the list of existing tags. When you press Save, the Tags you entered are added to the selected articles. Any tags already present in an article will not be added again, so you don’t end up with duplicates. This process works just like the Tags field in your Surfulater Articles.

Some tagging systems let you add tags by displaying a list of all available tags and getting you to tick a checkbox for each tag you want to add. This is simple, intuitive and works very well when you have a smallish number of tags. However as the number of tags you add grows, this quickly gets unwieldy and you spend more and more time scrolling back and forth through the list to locate and choose the tags you want.

Our approach of quickly locating tags using auto-suggest, and of adding new tags to the tags database at the same time, delivers a much better user experience, especially as the number of tags you use grows, which it will.

Now lets talk about removing tags from articles. Assume we have three articles with the following tags:

  1. Cat, Pet
  2. Dog, Pet
  3. Cow, Herbivore

As before we’ll select all of the articles of interest, right click and choose Remove Tags… from the context menu which will open this dialog.

Tags Remove Dialog

This shows a list of all of the tags in the selected articles, with duplicates removed. In this example Pet is in two articles, but only appears once in the list. Beside each tag is a checkbox, with the heading Keep? and all checkboxs are checked. To remove the tag Pet from the selected articles it is in, you uncheck its checkbox and then press Save. If you wanted to remove other tags at the same time, you would uncheck those as well, before pressing Save.

So far so good, or at least I hope so.

Our next step in evolving these designs was to look at a further simplification which would enable you to both Add and Remove Tags within the one dialog, starting from a single context menu selection Tags…. Most of the time you want to either Add or Remove, but there are times when you want to do both. The new combined dialog looks like this.

Add and Remove Tags Dialog

When Save is pressed in this example animal and herbivore will be added to the selected articles and pet will be removed. If the New tags field had been empty, no new tags would have been added. Likewise of no tags were unchecked in the list, none would have been removed from the selected articles. All quite straightforward.

On closer examination one issue became evident and that is there can be some confusion when a tag you want to Add is shown in the Existing Tags list. In our example this is the tag herbivore. 

When you notice herbivore in the list you might decide not too include it as a New tag, which would be a mistake. Referring back to the articles and tags summary:

  1. Cat, Pet
  2. Dog, Pet
  3. Cow, Herbivore

you see that herbivore is only in one of the three selected articles, but there is no way to tell this from the Existing Tags list. Because you didn’t include herbivore in New tags, it won’t be added to articles one and two, which isn’t the desired outcome.

To help to resolve this we concluded that you need some indicator in the Existing Tags list which clearly shows which tags are in All of the selected articles and which are not. The outcome is this dialog.

Revised Tags... Dialog

Note the new In All… column, which in this example is completely empty, because there are no tags which are in all of the selected articles. After we press Save the story changes to.

Revised Tags.. Dialog

You now see animal and herbivore are clearly identified as being in all of the selected articles. You can group the tags that are in all articles together by clicking on the In All… column heading. Now when you see a tag that you want to add is already in the Existing Tags list and it is In All articles, you can skip it if you want, or you might find it easier just to add it and let Surfulater look after things.

The bottom line is that there really isn’t any point in scrolling through a long list of Existing Tags to see if a tag you want to add is there or not, just go ahead and add it.

Where do we need your help?

First does this all make sense? Can you think of better ways to add and removes tags from a group of articles? Should we have separate Add and Remove processes or does combining them into one dialog deliver a better user experience? If so, does the combined dialog we’ve presented above, work for you?

Do you find the user interface for removing tags intuitive? Could you work out how to use it just by looking at the dialog or is it confusing or difficult to grasp?

Please do give us your feedback and help us make some important decisions on this aspect of tagging and untagging multiple articles at once. All our lines are open. 😉

The Next Pre-Release

I am in the midst of wrapping up another new pre-release which will include the combined Add + Remove Tags dialog as described here. It should be available this week. Keep your eye on the Blog for details.

To be continued…

The Topic for this post says Part 1. We have an alternate combined Add/Remove dialog user interface on the drawing board, which we will present here as soon as it is ready, so stay tuned.

Surfulater Pre-Release Version 2.92.0.0. Tagging moves ahead

The next Surfulater Pre-Release, Version 2.92.0.0 is now available. If you haven’t already read about Version 2.91 and its Tagging goodness, I suggest you start there.

V2.92 addresses the pending issues noted in the Release Notes for the last release, namely Article Tags now copy when Articles are copied across KB’s, Search searches Article Tags and the Tags auto-suggest list vertical position is now correct when the Content window is scrolled.

We have also revamped the Tags Tree to remove the unnecessary root node, as well as the vertical lines that connect the top level tags. The image used for the nested sub-tags has also been changed, so they look different to the top level tags. This is what it looks like now.

Updated Tags Tree

These updates simplify and improve the look of the tree and make it easier to use.

We still have further work to do on Tagging, including the ability to Tag multiple articles at once, remove tags from multiple articles, show all UnTagged articles in the Tags Tree and more, so stay tuned.

If you held of installing the last pre-release I am pleased to report it has proven stable with no significant problems showing up.

Click this pre-release and do keep your comments and suggestions coming. Full Release Notes are in the Help as always.

Surfulater Pre-Release Version 2.91.0.0 is here. Tags come to town

Surfulater Pre-Release version 2.91.0.0 is now available. This has been the longest gap between releases that I can think of, and the greatest overall changes to the code base for some time. This release includes the ability to add Tags to Articles and view Articles based on their Tags. It also includes the start of a move to a new embedded SQL Database engine. The last few Blog posts have largely been about tagging and are worth a read if you haven’t already done so.

We have done this as a pre-release to elicit your comments on the new Tagging system and to resolve any issues prior to a full release. This release sees changes in a broad number of areas and although we feel we have tested most every aspect, real world use will help sort out anything we may have missed. We also want to resolve a few more outstanding bugs and possibly add some more new features before a full release. And most importantly we want to get your feedback on the new Tags implementation.

This release is backwards compatible with previous releases. You should backup your Knowledge Base files before using this release, in addition to performing your daily backups. A third file which contains the new SQL Database is now used with each Knowledge Base. As we move forward, the current three KB files will be merged into a single SQL Database file. This will also enable backups to be done with Surfulater running as well as making for an even more robust database system.

A new Tags field has been added to each Article template, except the Notes template. Simply add your tags here and they will be added to the database. Any duplicate tags or invalid characters are removed when the article is saved. Auto-suggest makes it quick and easy to enter existing tags. 

The new Tags Tree displays all of your tags along with the articles associated with each tag.

Tags Tree

  You can also manage your tags here using the Tags Tree context menu.

Tags Tree context menu

Tags can be renamed and merged with existing tags, deleted and new tags added.

You will notice that the sample Tags Tree above includes some Tags nested below the top level tags. These are tags which are in the articles in the top level tag. For the tag Borneo, one or more articles with this tag also include tags Asia, Sabah and Travel. In other words the nested tags form an and relationship. Their articles contain Borneo and Asia, Borneo and Sabah and Borneo and Travel respectively. This lets you easily see and navigate to interesting relationships between tags. The best way to understand this is to use it.

In addition to the inclusion of these related article tags, I have been thinking of enabling you to specify  Tag search expressions, which would appear as virtual Tags in the tree. For example you could specify “car and ford and not 2006″ and all matching articles would be displayed. This may well be added in the future, but first I want see what folks think of the current implementation.

I know many Surfulater users have been eagerly awaiting the ability to Tag content and I very much look forward to hearing what you think of this first release with tagging.

Full release notes are in the Surfulater Help and a new topic: The Basics | Tags and Tagging Articles has been added. Known problems with tagging are in the release notes. Note that some keys have changed in this release. See the release notes for details.

Click here to download this pre-release and when you have used it for a while do let us know how well it meets your needs, or doesn’t!

Tagging and the new Tags Tree

This is a quick update on how the new Tagging system is coming along, and to show you the new Tags Tree. Without further ado here it is:

The Tags Tree

The first thing to note is the new Tags Tree button on the Knowledge Tree bar. The Tags Tree presents each Tag as a Folder, which in turn contains the Articles which include that Tag. Like the Knowledge Tree you click on a Folder and see all the articles in that folder in the content window, or select and display specific articles.

Next you can see the same article tagged into multiple folders. For example the article titled CodeProject: CppSQLite … is tagged with C++, Database, Library and SQL as shown in the next screen shot. If you look back at the first screen shot you will see three of the Tag folders expanded and this article in them. The fourth tag Library, is collapsed.

Example Article Tags field 

Editing an articles Tags in the content window, updates the Tags Tree accordingly. For example if you delete the tag SQL for this article, the article will be removed from the SQL folder. Similarly adding new tags to the article, will make it appear in the folders for those tags.

You can also edit the Tags themselves, either in the Tree or via. their Folder in the content window. When you rename a tag one of two things happen. If the new name doesn’t already exist, the tag simply changes to the new name and the tree is updated. If the new name does exist then all of the articles with the original tag are moved to the folder with the new name, and the original tag is deleted. Where an article has both the new and the original tag, the original tag is deleted from the articles tags field. A prompt is displayed allowing you to Cancel a rename where the new name already exists, preventing the articles from being moved and merged.

The ability to rename and merge tagged articles is an important one. For example if you had created the tags cattle and cow, used these these in lots of articles and then realized this was a mistake and you should have only used cattle, then all you need to do is rename the tag cow to cattle.

Tags can also be deleted via. the new Tags context menu.

The design of the the Tags system is such that rename and deletion of tags happens very quickly. In the case of  renaming a tag to a non-existing name, the entire knowledge base is updated instantly, even if that tag is used in a large number of articles.

As mentioned in recent posts the new tags system has been implemented using the a new SQL Database Engine and so far, I am very pleased with how this has come together and is how well it is working. But it is early days and so far only Tags use the new database. The design work for moving all existing Knowledge Base content to the SQL Database Engine is progressing smoothly.

There is still a bit more code to write and more testing to be done, but a release with Tagging isn’t far away now.

Tagging Surfulater Articles, a sneak peak

It is time to do a bit of show and tell about the new Tagging capability being added to Surfulater. The ability to add tags or keywords to articles and then locate articles for specific tags, has been a reasonably common user request. Tagging of content has become extremely popular in recent times, especially on Web sites. I have done a fair amount of research into tagging, folksonomy, ontology, semantic web etc. over the post few years and it is clear there is a lot happening in these areas and we are in many ways still in the early days.

A problem with tags is that single words on their own, are often ambiguous and have no context. For example what does “disk” mean? Is it a hard disk, a record, a CD, a disk in your back or maybe even a plate.

CamelCase (or WikiWords) offer one solution to this, but one I don’t personally like, not that I’ve actually used it much. To quote Wikipedia

CamelCase is the practice of writing compound words or phrases in which the words are joined without spaces and are capitalized within the compound. ex. HardDisk … CamelCase is rarely used in formal written English, and most style guides recommend against its use.

Hierarchical tags are another way to add extra meaning. ex. hard.disk For some time I thought that the ability to use hierarchical tags would be worthwhile, but have in the end decided against that.

To locate articles using tags, my current plan is to enable expressions to be used to specify tag groups. For example: car AND porsche. A tag hierarchy would use car.porsche for this. The problem here is if someone tags porsche instead of car.porsche, then the former won’t appear under the car.porsche listing. It is also more effort to enter hierarchical tags. Expressions offer endless flexibility here. You can find just “car”, just “porsche” “car and porsche”, “car and porsche and not 911” for example.

A tree will be used to show all Tags (as folders) and their matching Articles as children. The aforementioned expressions can be used to specify virtual folders in the tree, along with the matching articles. This will be a new tree in the Knowledge Tree bar.

Until this is all in place and in use, it is difficult to say how well it will work in practice, but I feel it is a good solid starting point.

The next issue is that the use of Tags is a bit of a mess, everyone does their own thing, and there is little standardization, which of course makes using them to find things is less than ideal.

To quote from Wikipedia again:

There are drawbacks to such tag-based systems as well: no standard set of keywords (also known as controlled vocabulary), no standard for the structure of such tags (e.g. singular vs. plural, capitalization, etc.), mistagging due to spelling errors, tags that can have more than one meaning, unclear tags due to synonym/antonym confusion, highly unorthodox and “personalized” tag schemas from some users, and no mechanism for users to indicate hierarchical relationships between tags (e.g. a site might be labeled as both cheese and cheddar, with no mechanism that might indicate that cheddar is a refinement or sub-class of cheese). Services which allow both tags and folders for organizing bookmarks (such as Netvouz) make this less of a problem though. 

I’ll add Surfulater to that list. It goes further by enabling an article to be in many folders at once and letting you add links between articles, to build a web of related information.

In this situation all that folks like me can do is provide the best tools we can and hope they are used wisely. To this end it is important to use a well defined set of tags (see controlled vocabulary), instead of any old ad-hoc words. To help ensure consistent use of specific words I’ve implemented an auto-suggest list which displays words matching the characters typed so far, which you can then pick from. The first image shows the auto-suggest list with matches for the letter d, along with the matching characters bold and underlined as a visual cue. The second image shows the selected word entered as a tag.

Tag auto-suggest list  Word chosen from list

You can also press the Down Arrow key to access a list of all defined tags, as shown here.

Complete auto-suggest list

 

When you enter a tag word that isn’t present in the tags list, it is automatically added. Next a window opens showing the newly added tags, enabling you to correct or delete these tags as required, as well as add a description. If you are happy with the newly added tags just click “Close” to continue. The design here is to try and impinge as little as possible on your work-flow. An alternative approach would be to prompt you each time you typed a word that didn’t exist and ask if you wanted to add it. This could be quite tiresome, especially during the early stages of building your list of tag words.

As I mentioned on the blog recently the inclusion of tagging has dictated extensive changes to the underlying database engine that Surfulater uses, as  well as several other fairly major framework enhancements. This means that the time to the next release will be a bit longer than usual, but hopefully well worth the wait.

New Year – New Release

The first release for 2008, Version 2.52 Build 10.0 is now available for download. This is primarily a maintenance update to address some issues with the new Web KB Publishing capability. It also includes two new, user contributed, article templates, “Texts and Authors” by Edwin Relf and “Quotation” by Ed Taylor. Full release notes are in the Help and online.

Looking ahead the plan is to immediately commence work on implementing Tags, as I mentioned in my last blog post and to incorporate a new SQL Database Engine. Tags will be the first use of the new database, with other areas to follow.

Tags and the move to SQL are both very interesting new developments for Surfulater, which I’m sure will hold us in good stead for important and impressive new releases during 2008. Thanks to everyone for your continued great support and I look forward to working with you all to continue to evolve Surfulater in the year ahead.

10 slick and cool IE Extensions and Tags

What a great way to start 2008 with Surfulater included in 10 slick and cool IE extensions by By John Fontana, Network World, 01/04/08. We certainly are in good company along side Microsoft Silverlight. Click on Next in the article to get to slide 2 and you’ll see:

Surfulater

What it is: Sure there’s lots of information on the Web, but sometimes you just want to keep those little nuggets you find on your system for safe keeping. Surfulater lets you permanently save selected text, images, and complete Web pages, then edit, annotate, cross-reference, organize, and search for information in your offline personal and portable knowledge base.     

Why you should use it: Ever find a dead link in your Favorites folder? Or discover a piece of information has been moved onto the “subscription only” part of a Web site?

Where to get it: www.surfulater.com

Surfulater is indeed a great addition to IE, but of course it also works with Firefox and does much more than just make it easy to capture web content. But you most likely already know this.

I hope everyone had a safe and happy Xmas + New year break, we certainly did. I’m back at work in earnest now, after cutting back to a support only role over the break.

Tagging. Right now it looks like the next big new feature for Surfulater will be tagging. I’ve been thinking about this for quite some time and have locked down an initial design over the past week or so, which looks good, at least on paper.

I’ve re-read everyones posts on the forums, gone over the notes I’ve been taking for some time now and digested and distilled these into the initial design specification.

In order to deliver the proposed tagging system as well as other future capabilities, it looks like I’ll be replacing the fairly simple database engine Surfulater has successfully used to date with a far more powerful SQL Database engine. This will require code to convert your existing KB’s to the new database, as well as the new code for the tagging system, so it may turn into an even more substantial task than I had expected. That said the end result will be well worth it and put things firmly in place for even more interesting future developments.

As soon as I’ve got something to show you and talk more about I’ll post here on the blog.

PS. Thanks for all the great comments re. Web KB’s in my last blog post.