Web: Tag Clouds 
With the arising of web 2.0 concept - where the user is no longer a passive consumer but rather an active content producer - new ways of categorising content start being widely used.
Among those ways there's a very popular which is present in some of the so called "web 2.0 sites", such like
flickr,
del.icio.us or
technorati. I'm talking about
tags.
A tag is nothing more than a label created by the user that is inserting new contents and it's used to help content categorisation with keywords. A website then starts containing a large amount of tags. This system is similar to a
Taxonomy, although it has differences:
- Normally there are no hierarchy on a tag system
- The tags are created on demand by the user
We call this systems a
Folksonomy.
It's a really flexible and simple system but, if there is no way to navigate in it, it's pointless.
This is where the concept of
Tag Cloud shows up.

A tag cloud is nothing more than the presentation of the agglomerate of existing tags in the system, with one interesting detail, the frequency of each tag is visually identified by the font size or sometimes by its colour.
The generation of such cloud might look trivial, but it as a few tar pits. I know because I had to develop such system to classify uploaded files on the FenixEDU application.
The first question that arises is, while creating the size algorithm, how should the size be distributed. There are two simple ways that can be chosen, use a linear function to represent it or a logarithmic function. In my opinion the logarithmic works better because it better represents the frequency differences.
An interesting
article can be read in Kentbye's blog.
The algorithm developed for our tag cloud isn't the one suggest by kentbye's since it has the need for more variables such as the popularity count, which acts as a growth delayer until the tag reaches a certain frequency - in other words it's a multiplier to the logarithmic effect.
Another interesting concept that was request for the our tag cloud was a multiple tag search option. Everyone that used a tag cloud knows that by clicking on the tag the contents categorised by such tag usually will be presented. But what if, someone wants to see the contents with
tag1 and
tag2?
The idea used was simple, each tag on the tag cloud can be clicked to be turned on or off - depending on the state - and tags will be used as filters. Simple solution, that can actually improve user experience.
The management also asked for another requirement, which we called
neighbour tags. The concept of neighbour tags can be defined by the following:
- When no tags are selected there are no neighbour tags.
- When there is at least one selected tag, neighbour tags are the ones that aren't selected and the intersection with the already selected tags returns a non-empty set of contents.
Such feature acts as a navigation suggestion when using the tag cloud, sort of a look-ahead when applying multiple filters.
But even with these interesting - and I think I can also say useful - concepts if the interface doesn't work well it's totally useless. Gladly all the problems that came up on the presentation of such interface were solved by our web designer, the following rules were followed:
- Only one single font colour was used.
- No monospace font was used to increase readability.
- The bigger the font was, the bigger the padding was to isolate it better from other fonts.
- When a tag was selected its background would be darker.
- When a tag was a neighbour the background was still the same colour as a non-selected tag, although its border was darker.
- Any tag on hover will show the background after being clicked.
It really was an interesting experience to develop such interface and back-office to support it, and in the end we managed to achieve an usable and useful tag cloud interface.
Any questions or remarks regarding the topic are more than welcome.