Storing the huge number of data we use everyday become a nightmare.
Passwords, banks accounts, various IDs, not to speak of the growing number of internet links that we use on a daily basis turns to be hard to store and structure.
One of the most useful software I ever used is Keynote from http://keynote.prv.pl. Incidentally, I was wondering to start a development of this organizer software (for my personal use and programming pleasure) three years ago when I stepped on Keynote. As I found in this software everything I wished, I stopped my own project and used it with, I must say, a great satisfaction for three years.
Alas, the author stopped its development a few months ago and some of functions in the current release just don't work (for example, the global search is badly broken, which makes me crazy _the author said that this is related to the Richedit control and I understand this, but, on the other side, a missing global search in this kind of tool is really dramatic)
A number of alternatives started but doesn’t satisfy me, if only they will ever reach production grade software. So, I decided to start working on my own solution…
As I am a pragmatic guy, I will try to use just everything others have developed with success and talent.
Here are my requirements for this kind of software :
- Easy installation, do not need a gigantic runtime (such a .NET !). Must be able to store the software and data on a small USB key.
- Structured database in a single file. Proprietary file format are difficult to process for others.
- Easy search in the whole database ("I remember that I have already found this thingy one time, but…")
- Strong encryption. I don’t want others to see my Visa card pin code
- Various types of data for nodes : rich text, structured tables, pictures, externals links
- Script language. I want to be able to query my data through a script, or automatically update a range of items.
I think that the basic GUI of Keynote is clean and efficient. I will use tabs to sort Sections of informations, each Section having its own tree. In the tree, each node will be able to record a type of data as stated above.
What about the name ?
Well, you know that a palimpeste is a velum where monks wrote text above previous texts. So, as a tribute to Keynote, I will "write" my software above Keynote specs, even if I will not reuse the code.
Here are the components I will use in my software :
- Database: SQLite (www.sqlite.org) is a very strong database engine. And very small, just a 300K DLL. I will use the ADUCOM (www.adumcom.com) free Delphi component to access SQLite.
- Word processing : WPtools (www.wptools.de). A powerfull text editor that will avoid me the headache of Microsoft Rich Text Editor component (which seems to have caused a lot of trouble to Marek, the father of Keynote).
- Script language : the small, syntax elegant LUA script language (www.lua.org) that I used in my applications for near eight years now. Again, a small DLL will be used.
…and the disclaimer…
Since I am very busy running a software company, I cannot be sure I will ever complete this project which will be low on my priority list. However, I will do my best to succeed.
The database diagram will be really simple.
- One table for each item in the organizer
- One table for software parameters
- Custom tables for user needs
One record for each item in the organizer.
Name |
Type |
Comments |
ID |
INTEGER |
Unique ID for this item |
ParentID |
INTEGER |
ID of our parent |
Section |
TEXT |
Section where the item belong |
Title |
TEXT |
Title of item |
Keywords |
TEXT |
Keywords for this item, comma separated |
Type |
INTEGER |
Type of data for this section 1=text 2=structured table : this table will be named usertable[id] in the database |
Attribute |
INTEGER |
Bit field : |
ItemOrder |
INTEGER |
Order in the Section |
Datas |
BLOB |
Associated datas |
Metadatas |
TEXT |
Other datas |
D_created |
TEXT |
Creation date (YYYY-MM-DD HH:MM:SS) |
D_updated |
TEXT |
Update date |
ImageIndex |
INTEGER |
Node
image index |
The parameter table will store user preferences, software datas. The registry will not be used except for the name of the last database file used.
Name |
Type |
Comments |
Name |
VARCHAR(100) |
Name of parameter |
Value |
TEXT |
Value for the parameter |
Name |
Description |
TABSLIST |
Name of all section tabs (could be deduced from the item table but used here to save a request) |
|
|