magnet
Magnet is a modulare client/server software system capable of visualizing similarities between entities in any structured dataset, but in particular for media libraries. Some use cases, a first prototype and a usability evaluation of it has been conducted as part of my computer science degree dissertation (“Diplom Informatik FH”, a master equivalent). Have a look at the written part (German version only, sorry).
major aspects at a glance
- Magnet visualizes entities of any kind and their similarity among each other
- When launching the prototype, you will be asked to choose a movie. Please chose one your like and are familiar with.
- The data set in use is based on data from IMDb.com
- Entities are ordered and positioned according to their similarity to each other
- The user can interfere the similarity calculation process lively by adjusting weightings of each facet/criteria, causing the visualization to represent the changes instantly, introducing the weighted multi-faceted browsing paradigm
- The system is kept modular and should be usable for any kind of data, though it was intended for media libraries and social network applications
- An intuitive interface allows users to look “behind” the data by seeing — without the need of studying large data tables — coherences between data set or entities.
problem, idea and solution approach
unmanageable size and diversity of my media collection
First ideas about magnet came up, having my personal media collection in mind. The problem, I have been facing, was due to the unmanageable size and it’s diversity. As, for example, I have been listening to an album I liked, I do not want to hear it again, but something related or similar would fit my mood. Now that I do not know all of the artists and their music styles in my collection by heart, I will most probably miss some good choices and maybe be unsatisfied.
This is a very typical use case as one can find situations like this everywhere, e.g. searching new movies by telling which kind they should be, or by comparing them to known movies.
- I would like to see a movie like “Forest Gump”, because Tom Hanks is great and I am in the mood for this kind of movie.
- I listened to Louis Armstrong for the first time and I really loved it, is there something else like that out there? Maybe same genre, from same time or also played with trumpet. (Depending on the available meta information.)
- I found a nice picture of mine taken in Berlin, where else have I been at that time? Have I taken some other pictures of this place on other trips to Berlin?
generalization: an interactive data coherence visualization
As soon as I began to develop use-cases, it turned out to be generalizable to some kind of interactive data coherence visualization. This finding has been proven by statements from participants of the usability study (see below). Google Maps con be considered a visualization of geographical metadata of entities. Magnet is supposed to be a widget, too, that can be embedded as easy as Google Maps, but it is not bound to a single information dimension. Instead, it is capable of visualizing any kind of relation on-the-fly and is furthermore adjustable to the needs of the user by him– or herself.
Using magnet follows four basic steps:
- Pick something I know, like or have interest in
- Browse/review the results
- Optional: adjust weights of criteria if the results are not suitable yet by deciding which criteria are more or less important to me
- Review changes, maybe pick one of the results, if interested, and continue the browsing experience from point 1.
See a short essay (in german) briefly describing the idea of magnet.
modularity and flexibility
Major fact concerned by setting up the server side architecture was to keep magnet versatile usable and integrable.
separated server application
The architectural choice of providing a standalone server application brings three advantages. First of all, the application to become magnet enabled can be written in any language and it does not need more dependencies. By making use of the Data Access Object pattern, the data providing application can be connected by WebServices or any other standard like JSON (JavaScript Object Notation) or AMF (Action Message Format) over TCP connection. And finally the magnet application can be run easily on a different machine, which for sure makes sense for big data bases and/or high workload. Future developments should also allow magnet to be a distributed application.
Additionally magnet has been equipped with an open client interface. To use the visualization as described below, an AMF service interface is provided as default, but could be replaced or extended by additional services for custom build client applications.

The magnet server architecture, showing core (green) and the interfaces plus data exchange objects (yellow)
The green part is the heart of the server application of magnet and can be perceived as black box, the yellow parts are shared to the outside world. To the left, there is the client interface, which could be implemented by a Web Service, AMF gateway or directly by any kind of GUI, if magnet is run on a local machine. The application interface is shown on the right, allowing magnet also to connected directly to an application or requesting any kind of service, additionally this approach makes it possible to use e.g. LDAP for user authentication. All components share the same data exchange objects given in the data package.
skinning
The visualization part as described below features most broad skinning features to make magnet integrate seamless into any web application. The final version of a GUI should be modular, so that the three different parts can be placed as required.
visualization
goals
- reduce space for controllers and detail view
- give more space for entity visualization
- make user find controllers easily
- and make her or him understand their function without extensive explanation
My mayor goal was reduce space for controllers and detail view and give more space for entity visualization, where the user can get a “feeling” of the data, he or she is dealing with. That is why the entities are moving around, pulling each other closer or pushing away. This animation the user an immediate understanding of similar and dissimilar entities as shown in the test below. By reducing distraction and putting the elements in places typically hit by the user eye by scanning the GUI, the user realized the controllers at the lower left very quickly, which he or she needs to ajust the weightings.
Some summarized information about an entity can be placed in the info box on the right side, but any further, detailed information should be presented outside. The compact variant can be used to make magnet become a navigational overlay.
graph visualization
Collecting similarities between entities and storing this information ends up in a form of a graph, where each entity is connected to each other and the length of each edge equals the reciprocal similarity between the two entities connected. This reveals two issues.
The more entities contained in the graph, the less is the chance to find a situation, where the defined edge lengths hold for all entities in a two or three dimensional visualization. Therefore I utilized the spring graph paradigm, where each edge is flexible. Additionally, each entity gets a weight assigned which influences its gravity, i.e. the force that tries to make every edge exactly as long as desired. The weight can be defined by the data providing application, e.g. to make some entities stand out more. As the user starts from a specific entity, the weight of this entity gets multiplied with a constant factor (ten by default), which makes the other entities position themselves around and keep the “important” entity always in focus.
A second issue is the square correlation of the amount of entities and the edges to be calculated. The prototype implemented so far is therefore restricted to 10 entities at the same time. The version, I am currently working on, is using an modified version of the spring graph framework for flex by Mark Shepherd, which itself is based on the TouchGraph implementation for Java, instead of my own implementation, hoping to improve performance. As a next step I will also make use of clustering algorithms to reduce the number of edges in the graph.
UI development
The first interface has been developed for the demo application. Currently a second version, implementing findings of usability and target user group studies, is about to be set up, see “interface improvements paragraph” below for details.
usability test
procedure of testing
- The participant have been introduced to the test itself and the speak aloud method, as many of them did such a kind of test for the first time and therefore usually tend to be shy. Hence I tried to make clear, that the software is about to be tested, not the participant and thus all errors in handling it are due to software errors and not any kind of insufficiency of him or her and therefore can speak out load, what ever they are thinking. Though they have not been prepared in using magnet in any kind, just have been informed, that it is some kind of movie database.
- A profile had to filled, asking for e.g. age, what kind of movies they like, how they get informed about new ones and finally, they had to pick one of three highly different movies (“Forest Gump”, “The Matrix”, “Shrek”) which they know and like most.
- They had to fulfill representative tasks and in the meanwhile telling what there first impression was, what they liked/disliked at first sight or what they would have liked to do first. Each task has been placed on a different page and the participant was instructed to only turned the page after finishing it completely or giving up. It has been tested whether the textual information about each movie is recognized, whether they can tell which movies are most similar (without telling that similarity is represented by showing movies closely to each other). Finally they should find 10 movies staring the same actor, therefore they needed to find out how to set up the correct weight for the facet “cast” and turn down the other facets, additionally they needed to switch focus by double clicking a different movie, to see more movies.
- Concluded by a post test talk.
Have a look at the questionnaire (german).
results
The seven participants had an average age of 27 (min. 23, max. 32), five have been male, two female and they answered to watch 7 movies per month in average (min. 3, max. 10). Six of seven participants told to use Internet resources to inform themselves about new movie releases and/or read movie reviews.
All participants could instantly tell which movies shown, are similar to their selection, i.e. they automatically associated correctly the closeness of two entities relates to their similarity.
While trying to find movies with the same lead actor, six out of seven found out the meaning of the slider controls to adjust weightings of the criteria, four of them by directly trying the sliders first of all. However, six of the participants mentioned in the post test talk, that they missed labeling for the sliders explaining their meaning, which was the most common negative statement, by contrast, four commended the clarity of the interface in general.
Please try the demo application yourself first, before seeing the test recording highlights (german).
interface improvements
The strongest and most promising suggestions by test participants have become future requests and part of the current development.

A dustbin in the lower right can be used to throw away entities via drag and drop, causing this entity not to appear again.
First efforts have been made towards developing a new, target user group focused graphical user interface as you can see below. The extensive user statistics of IMDb.com have been used as a basis for an potential magnet user, i.e. 90% male, aged between 20 to 45. Therefore the interface should be appealing for young and for older people, finding a compromise of a bit way-out style and reduced, discreet design focusing on readability and conveying information. The screens to follow show drafts helping to find ways to visualize entities in a clear and space saving manner, same holds for controller elements in the upper right and lower left corner.

Colors and improved readability. Showing ideas about how to handle long captions by hover effects on the right side and inline information presentation as an entity gets selected in the lower right corner.
using magnet — a wide variety of ways
suggesting media to customers
- in a video rental store
- for online music platforms like last.fm or iTunes
- using magnet on basis of the user’s own music or video collection on a pc
After finishing my thesis, youTube.com launched a visualization looking partial similar to magnet. It showed at the end of a clip, visualizing the current video and its related videos by a thumbnail in a circle positing themselves around the current one. But no controllers allowed to infer the selected related movies and the visualization was missing any information like title or rating, additionally, the animation was quite uneasy and did therefore not really help the viewers. I assume that have been the reasons that led to the removal of it in the end.
visualization for data mining or networking portals
- e.g. finding customers with the same hobbies to define new target groups for marketing campaigns
- a human resource manager might like to view people with the similar skills, about the same age on xing.com
- or I would like to find photographers on flickr.com using the same camera located close to my town to share lenses
work done so far
- computer science degree dissertation
- prototype/demo application
- usability evaluation of the client interface prototype by seven participants — test recording highlights (german)
- several interface improvements based on dominating statements given by test participants
- new target user group focused user interface
- improved server performance by replacing the cost intensive precomputation of a triangular matrix of all similarities between all entities with an linear algorithm fast enough to be perform this calculation on-the-fly within the database, thus saving space and preparation time
- re-engineered prototype as basis for further development
future work
Right now, a dummy server implementation is serving a file to the client, which includes a fixed set of 300 entities and their similarity. It will be replaced by a PHP prototype with an AMF interface using amfphp as fast comunication channel between server and client. Amfphp has been chosen, as its source is open, free and stable, easy to install and to extend, well documented though, does not have any dependencies and supports direct object transfer in a binary form which is therefore smaller and faster than XML or JSON, but JSON is anyway supported in parallel by this framework, which would allow to create an AJAX client as well.
Also the work on the skinning part needs to be continued by realizing the proposed drafts, which will also include extending the skinning capabilities of the client prototype.
With new server and skinning done, it would be time to set up another user test, to verify the new interface on the one hand and to find directions for further improvements on the other.
As Flash and Flex still depend upon the proprietary Adobe Flash Player, I will continue searching for adequate alternatives. I am especially hoping to make use of the new HTML canvas object, but I will not put effort into developing an AJAX solution unless the Microsoft Internet Explorer starts supporting it, too.








