lobotomy
LOBOTOMY PROJECT

hyppocampus
HYPPOCAMPUS PROJECT

Improve Memory with Mnemonics
(v0.1, 20.12.2006)



Abstract
In this document we theorize the introduction of a new type of node into the filesystem, the "mnemonic", which permits to split informations into atomic elements so to free the concepts from the useless abstraction of the traditional "file" and works on really relational data.



Summary:

Introduction
The bookmarks file of your web browser, the contacts file of your mail client, the notes you take with your desktop gadgets, the configuration file for your text editor... All those files are jails. In those jails, informations are imprisoned between formatting rules and useless data used from the generating application to organize the same informations in his preferred way. Those files can be pure ASCII, or XML, or binary blobs, and the only way to access the informations is the way the application's developer decided.
Of course, we cannot pretend all the applications follow the same rules to format their data, just because we would need to rewrite all those applications and someone could at each time decide to break the universal compatibility or prefer his style, but we can steal informations and, with a juggling act, handle them in a more convenient (and, above all, relational) way.

Bricks of Information
What about each single information stored in the, we say, contacts file of your mail client could be singly accessed? Imagine to have a file (or, better, a particular inode, which isn't a file and anything else you know) in your filesystem for each person who appears in the addressbook, with a metadata for each attribute assigned to him: mail addresses, phone numbers (for home, for the office, for the mobile...).
Of course, all those informations could be used in extremely esotic methods, not only those predicted by the original application: you can, for example, scp'd a contact "file" to the your friend's PC, which uses a mail client different from your, or remove a contact rm'd it; all without the "collaboration" of the original mail client.
And, if we consider that all those informations are stored into a relational filesystem, as Hyppocampus, in form of pure, single and tagged metadata, you see that you can construct all kind of relations between the informations and the files into the same filesystem.

MetaFiles
Of course, the original application cannot be rewritten to apply the above descripted way of data storage, but remember that we have the control of the filesystem, so we can decide what show to the program.
Our mail client would probably store his contacts file in a folder as "/home/user/.mail_client/contacts", and asks the filesystem for it; the filesystem can catch the request, recognize her, and, following a particular set of rules dedicated to the application, build a virtual temporary file which contains all opportune informations, and format them as requested by the application herself.
The mentioned "particular set of rules" can be summarized into a plugin to attach to the filesystem, so to have a whole system taillored for the resident applications. This plugin would be nothing but a piece of code which execute a query on the filesystem to retrive the necessary informations, and, when required (e.g., when the user application read the file), fill a buffer with that information, mixing with the formatting bytes; on the other side, when the user application write the file, the plugin can filter the contents and reorganize them into the mnemonic boxes provided by the filesystem.

Crazy Examples
SELECT name WHERE web_source IN ( SELECT url WHERE date BETWEEN NOW AND ( NOW - 24h ) ) AND mimetype = "application/pdf"
Retrieves al PDF's download from the websites visited last day (and not all PDF's downloaded last 24 hours, which is different).

SELECT MAX ( size ) WHERE sender IN ( SELECT email WHERE working_organization = 'Microsoft' )
Get the largest file which was received from a particular group of people with a common peculiarity.

SELECT gpg_key WHERE name IN ( SELECT sender WHERE newsgroup = "it.comp.os.linux.development" AND subject =~ "Hyppocampus" )
Storing the GPG database and the news agent database into an appropriately plugged Hyppocampus, you can merge the informations and build all kind of relations.


Copyright © 2006 - Roberto -MadBob- Guido