I currently use a custom-tailored DJ system I developed for myself in Python scripts (which also provides a base for a similar system I use for my personal, waking-life diaries). It's a bit unconventional, but maybe describing it a bit could give you some ideas (if very abstract ones).
The system mainly just reads entries I write in a special format in a plain-text file, sorts and organizes them, and outputs a nice set of static HTML documents on disk for convenient viewing. It automatically generates navigation pages by date and for tags, as well as some simple statistics charts. The files are static HTML only, even though dynamic web systems might at first glance seem more appropriate, because I don't want to set up and configure a local web server just to view my DJ. This isn't necessarily something I want to publish online; I just wanted a set of files I could copy to any device's disk and browse conveniently in an ordinary web browser.
The text syntax is designed to be very simple and easy to type, as I have to write the entries directly in this format, and any DJ should be as simple and effortless as possible to keep up with if I'm going to want to keep doing it. The entry starts with a few lines listing info the script needs to parse, like date, title, and tags. This block ends with a blank line, and then I just write the entry in simple HTML. (It could have technically been any other markup or formatting language, but since the target for viewing was HTML documents, this choice seemed to make the most sense).
The plain text file also means that I can use my favorite text editor to edit, even if that changes someday; I don't need to use specialized, possibly OS-specific software (which may stop being maintained and eventually lose compatibility with modern systems). If I lose the HTML documents, I can simply rerun the script to regenerate them. If I lose the scripts, the text file with the entries is human-legible enough by itself to be readable. I could even print it out for safekeeping if I wanted to (and could somehow afford the ink and paper, as my DJ is massive right now!).
My system does some preprocessing of the HTML text I write. This allows for simple linking from one entry to another (I can give a particular entry or passage a name and use just that in the link target, and the script converts it into a valid link, even if the final HTML location would change due to my rearranging entries or whatever). It also allows me to mark sections or entire entries as “private”. If I want to share my DJ, I can generate a version that automatically excludes all the private parts and omits them from contents pages and all navigation.
Although my system supports tags, I try to keep their use to a minimum. I mainly use them to track really important events like lucid dreams or other non-REM stages of sleep. If I more than a handful, I've found, I start to have trouble remembering that they exist and applying them consistently, and it also gets confusing which tags to use where. So my maxim is to keep it simple. A good search function might be better than using tags in terms of finding particular content, but at the moment, the only tool I have for that is searching the source text document itself in a text editor. Perhaps someday I'll make something more sophisticated, such as a tool that can search just entries with specific tags (LD, etc.).
My system works entirely offline. I've never been much of a fan of cloud-based or online services. I prefer to be in control of my own data and take care of it myself. Online services inherently have some risks, such as security breaches, and data loss if the company/organization goes under. Those that offer a full export of all your data anytime in an easy-to-use, universal file format are much better; I wouldn't consider using anything that doesn't provide at least that.
My program is pretty lacking in the UI department, though, as in, it pretty much doesn't have one beyond running it from a command shell. I don't seem to enjoy doing UI programming so much these days, especially when I just want code that does a job for me as soon as possible. I essentially “configure” the program by editing the code itself. That obviously wouldn't be a good “feature” for causal users.
I hope I didn't go totally off track from the thread topic. But in case you are curious and want to know more, just let me know.
|
|
Bookmarks