I have been making "mini-journals" of what I learn in specific fields. For instance, my ideas and notes about one school project are in one document, my ideas and notes about martial arts in another. As I want to track more things, the amount of documents grows. Lately, I have been wanting to write a general personal journal, which would be one more document. I have no way to arrange the notes in their totality (across different documents) according to their subjects or time. I also have no way of writing notes which span different subjects because I can't put them in both files.
What I'm interested in now is finding/putting together a system that would unify this mess and do quite a bit of related automated tasks. Let's go through the requirements:
- Must be able to add a note simply. (I'll make scripts to add a note straight from Quicksilver, Vim, TextMate etc.)
- Must be able to tag a specific note with multiple context tags such as "Game Design", "Religion", etc.
- Must be able to boolean search tags, content, etc.
- Must not be tied to OS X except for individual output/input modules and scripts. Only open source, multiplatform tools for the core system.
- Must not push anything into GUI unless I want it to. No scripts hopping in and out of Dock.
- Must not mangle Unicode when saving or retrieving data.
- Must be flexible on the output side. I want to be able to read this stuff as text through SSH connection, generate a web page, etc.
- Must be easy to hook scripts, etc. to. One thing I would like to do is that whenever I submit a note and tag it with "Study", the system automatically spits out reminders (say, using the Unix calendar app "remind") that remind me to review it in one day, one week and in one month. Another periodical script could check for reviewables that are overdue and bug me until I put in a new note or tag that confirms the review done.
- (Optional but very desirable) Must be able to store binary files such as images also.
- (Optional) Invidual notes stored under version control so I can add information to them and fix mistakes in data, yet be able to go back and see the original.
- (Optional) Must have a reasonably easy way to link notes with each other.
I don't expect this to drop in my lap. I'm ready to do a bit of work to get there. Where would you start with this? Some database? XML? One text file per note, parsed with scripts? I have just a little familiarity with all of these, I'll learn more as necessary.