Reorganizator – Let Your Files Find Their Families.
Reorganizator is a small Java program that I did as a course project at Drexel. It’s a proof-of-concept application that demonstrates the dynamic reorganization of a file system based on useful criteria. The requirements for the project were very open: Come up with a UI design pattern and implement it. So that’s what this is.
Background
Before web-based search, there was little or no way to competently navigate the internet. There were millions of virtually inaccessible bits of information scattered across the globe on servers, hiding in plain sight. Then Google introduced a seemingly simple web application that did the impossible: It found you what you were looking for, every time you looked. Since then, search has become the most important and powerful web-based tool, ever, and a huge business, using an advertising revenue model to pull in billions of dollars.
A search engine works by constantly scouring the web using robots that traverse link after link after link, building an index of every page they come across and the relationships between them. The results of these traversals are used by an algorithm to rank each page based on pages that link to it, and their respective ranks1. It obviously works well.
In this system, the actual physical location of the results is irrelevant. The first two results for any given query may contain links to pages that reside on web servers on different sides of the earth. For the user running the query, though, the results are right next to one another.
A user conducting a web-based search might not know about the material the query will return before it is returned. And more importantly, they don’t need to know. The search is purely contextual, with the best keyword match returned first. Or at least close to first.
Desktop search, on the other hand, is different. A user executing a desktop search is looking for something they know they already have. Instead of having a general idea, the user is querying for a specific result. A desktop search is like walking into a messy bedroom and looking for a particular CD. It’s not something that may or may not exist, and not something that can exist in many places in different ways. There are no implicit contextual clues that make it the best result. It is explicitly the desired object, no other results matter.
A Working Case
Let’s examine a possible approach to the bedroom CD search, one which will minimize our search effort and maximize our potential for a good result by combining the capabilities of a computer with our own knack for problem solving. We’ll implement an example of “cognitive divide and conquer.”
I walk into a bedroom with clothes strewn about, books, CDs, DVDs, magazines, and miscellaneous objects all clustered into small aggregations here and there. I’m looking for a Radiohead CD (for the sake of this example). Not quite able to remember its name, I’m sure I’d recognize it if I saw it. I haven’t listened to it in a while, though I’m not sure how long it’s been.
Luckily for me, I have a magic way to reorganize the entire room however I need to.
“Type.”
No sooner have I completed the command than is everything grouped discretely by type throughout the room. I walk over to the stack of CDs, which is now a collection of every CD I own.
“Name.”
Quickly the pile of CDs is broken up into alphabetical groups.
“Date.”
Finally, as I walk over to the ‘R’ group, noting that the stack is sorted in reverse chronological order, I tap the stack and the order reverses. Voila! It’s the CD I’m looking for.
Imagine if you could really do that with your physical belongings. Wouldn’t life be grand? Well, in the digital world, life is grand. All of this magic is the description of a file explorer application that implements dynamic, on-the-fly reorganization.
In the bedroom example above, the bedroom is analogous to a directory in a file system. Within the directory are all the subdirectories and files that make up every piece of content in the room. In a perfect world, or more aptly, on a perfect hard drive, everything would already be organized meticulously into directories and subdirectories. In reality, though, what exists is an ad hoc organizational structure exhibiting a certain degree of randomness and corruptness. A messy bedroom.
The beauty of the method applied above is that the underlying organizational structure is completely unimportant. Every artifact in the domain will be reorganized on the fly in a meaningful way, virtually.
How It Works
Figures 1 and 2 are screen shots of the sample application that demonstrates this process.
A file system is a tree, its directories are branches, and its files are leaves. This process is only concerned with leaves since each leaf represents a file that could be the search target.
Since directories are unimportant, they are eliminated initially to create a single bin that contains every file. From this bin, virtual subdirectories are created that will serve to group the files in meaningful ways. These subdirectories are like the piles in the earlier bedroom example. For each virtual subdirectory, the process repeats, creating further virtual subdirectories using different organizational criteria.
|
|
| Figure 1 |
In figure 2, notice a bunch of subdirectories under a root directory called Reorganizator. Not one of these directories actually exists in the file system itself. A directory full of files and other subdirectories full of files was opened by the application, under the static virtual root Reorganizator. Using right click options, this mess of files was first reorganized by file type, creating the virtual directories Documents, Text Files, PDFs, and so on. Then Documents was further reorganized by date last modified, creating the virtual directories 1 day ago, 3 weeks ago, etc. Finally, the More than 10 weeks ago directory was reorganized alphabetically.
|
|
| Figure 2 |
The application otherwise functions similarly to any other mainstream file explorer. Folder contents are shown in the list view on the right, and each file can be opened by double-clicking it. The user can open any file in any virtual directory, control the directory structure in a meaningful and easy-to-use manner, and open, close and delete files without ever actually needing to know where the files exist in the underlying static directory structure.
Conclusion
Desktop search has a special property that lends itself towards active user interaction: The user often has a better idea of the desired result than the engine does. The user is also able to easily make semantic links that are difficult for a computer algorithm.
Although this sample application is limited, a full blown version might offer the user the ability to dynamically modify the criteria, naming conventions, and general behavior via an intuitive interface designed to present them with every option available to the system as potential organizational criteria.
This is one simple attempt to find a middle ground between the creative and keen inference abilities of the human mind, and the speed and autonomous power of a machine.