There are a lot of fancier note taking tools but I keep going back to Zim. Been using it for years for private offline note-taking for work. I use quick notes and journal shortcuts many times a day to quickly jot down a followup note/idea/question in meetings. It's also my GTD system with tasks plugin. Love that it's just text files so I can manually edit them, version control, sync in private cloud service, etc. Never worry about losing my data.
There are a few quirks I've gotten used to over the years though:
- Pasting code will be garbled or auto-create tags unless you use the source view plugin or paste verbatim.
- Takes a little configuration out of the box to get just right, system dependencies, links opening in right browser, plugins, shortcuts, fonts. But once you get streamlined it just works.
- The syntax feels a little strange to me but I rarely need to edit raw files. I could also export to Markdown if I ever wanted to migrate.
My last tip, templates are awesome. I have ones for all kinds of things, like interviewing, 1-1s, and architecture design outline.
I used it for years for writing a daily journal. I'd press a shortkey such as Alt+D and I'd get an entry for the day and write. Simple useful tool with an awesome author.
Hijacking this comment, I use Horst Schaeffer's MemPad[0] for this. Super lightweight, super simple, super fast. Also great for tracking freelance work with one file per client. Alas, Windows-only.
> Pasting code will be garbled or auto-create tags unless you use the source view plugin or paste verbatim.
I had used Zim extensively in the past, I absolutely love it. The dev is responsive and terrific and terrific as well. But I've lost quite a lot of code snippets due to the auto-formatting and auto-linking. If you are interested, these are two of the bugs that I filed on the subject:
FYI you can create a key binding to "<Actions>/inserted_objects/insert_code" from Preferences. I've bound Ctrl-Shift-C and it's faster than hunting for it in the menus.
The syntax selection dropdown isn't great though. I wish I could type-to-search in it.
1. Data is saved in SQlite. I am at 33k notes and it springs open instantaneously.
2. Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree. (Think soft-links)
3. WYSIWYG support (CKEditor)
4. Tags, advanced scripting features
5. Other ususal wiki stuff like backlinks, note-map etc
Cons:
1. Electron.
2. Data is saved in SQlite, not plain text.
It supports various types of file stores for syncing between devices. I've used OneDrive and WebDAV. The project has also recently launched a cloud service for people who want to sync between devices but don't want to set up a network file store.
Having a proper database for note systems isn't necessarily a bad idea. For large knowledge bases, it lets you do arbitrary queries at least somewhat efficiently. Many apps just limit the kinds of searches/queries you can do, but eventually you end up needing to have an ad hoc query optimizer and planner or for users to have control over query evaluation so they can do the optimization themselves.
However, you could probably still use sqlite for analytic queries by just creating an in-memory or temporary database at startup then watching for file changes to keep the database consistent. Creating this database probably won't take that long unless you are trying to store all of Wikipedia in your knowledge base.
I love trilium, in fact I think I'm going to start a hosting service for it (built-in syncing mechanism). For a few reasons: 1. Sync to allow the sharing of notes publicly, which allows you to create simple websites very quickly. 2. Instant access as long as you have a browser. 3. As a backup. It's an incredible application and I'm proud to have contributed to it in the past no matter how little.
As a rule, I try to minimize the number of electron applications. Suppose I am reading something in my web browser and want to jot down something. Be it firefox and chrome, the demands on RAM is considerable at this point. An electron note taking app and VSCodium are also usually open side by side. God forbid if I have to open a fourth application and that is also electron, my system will start to mildly grumble. Note here, my system while not exactly a gaming behemoth, ain't no potato either.
I am not blind to the advantages electron brings to a developer. Including electron as a con is in no way a critic of the developer but a expression of disbelief that the developer world has not yet managed to agree upon and popularize a reasonable electron alternative.
PS: Webview hoards memory in linux for some reason.
Let me add something here; Zim feels the most personally extensible (except for, of course, org-mode, I must admit)
I see a bunch of people here with laundry lists of requirements, and when I see them, I'm like -- yes, a lot of those seem reasonable, but I've also had the same, and I've just built them myself, with some very hacky Bash. But any language will work.
Examples..lets see. I add todo items from anywhere (including phone) with email. I use Blitzmail on the phone and an IMAP script on the computer to send myself a tagged email, then I have another script to check and parse and add them to Zims "Journal"
My personal website is in Zim. I have a short one-liner to update it to my server; but I also teach at a college. I learned just enough of the Canvas API to also update certain pages of it to my class webpages. Also another one to update the Slides I make in Zim as well.
I've been using Zim for at least 10 years for notes, todo's, etc.
Recently I updated my setup to use syncthing for syncing between my desktop, laptop, and my Android phone. On my phone I use Markor, an open source app that supports the Zim markup format (along with Markdown and some others). I've been pretty happy with this setup.
Wow, I left Zim for a Markdown based setup because I wanted to have an Android client. Settled on Markor, and I never knew it actually supported the Zim syntax. I'll be converting back asap!
Markor is how I came to know of Zim. I read the changelog (for the app) at first as "Vim Wiki support" and got excited, then realised it actually said "Zim Wiki".
ha, that's interesting to know. Actually not being able to see or edit my notes on a phone was the dealbreaker for me and the biggest reason I stopped using ZIM and only using a bunch of markdown files nowadays.
How happy are you with Markor on the phone? Is it good enough to edit your Zim files on the go or are there any bigger down sites?
I used to edit the Zim markup directly in a very basic text editor, so Markor is a big improvement. It offers syntax highlighting, some menu items for things like formatting, and a preview mode. So not wysiwyg, but still pretty nice. It also allows you to easily create new notes from scratch, which is kindof a pain if you're just using a generic text editor.
I do have some issues making nested check box lists (maybe I need to review the Zim syntax) and it's not clear if you can add images. Mostly I review and update my todo items, read notes, and write small notes. For that I've been pretty happy with it.
I'm also using it for few years, the only complain I got so far is a lack of proper version for Mac OS and any mobile client. Obviously Python+GTK work on Mac OS, but few times either updates of Python, Mac OS or Zim itself, broke it for me. For mobile the only option is either to view files directly, or use built-in web server (though no editing is available in this case).
Always gonna plug Maggie Appleton's seminal work on digital gardening whenever conversations about personal knowledge systems come up. It has some great resources in there
It has the hackability of emacs but can run anywhere a browser can ( both online and offline ). And of course, an active community and ecosystem built around it.
Tiddlywiki is neat technology, but the fact that you have to choose a method of saving and are presented with ~13 different options just gives me decision fatigue.
I don't care to evaluate which plugin will actually _save_ my data. That's a pretty fundamental operation in my opinion, and the fact that I have to evaluate and choose from one of 13 options does not instill a lot of faith that my data will not be lost.
>> but the fact that you have to choose a method of saving
AFAIK there is a single default. Just use that. If you need more features you can go down that rabbit whole but I think tiddlywiki is very usable without any modifications like you're describing.
Last time (a few weeks ago) I tried rclone with WebDAV. I do what the instructions say, I get a local web site where I can open the empty.hmtl, I do the basic setup, write a tiddler, it says "Saved" and the empty.html is still pristine and never gets written.
The times before that I tried several other ways documented on their web site, but failed with all of them. git? Only GitHub (and GitLab) seem to be supported, not my own git repo. Or SourceHut.
Cloud connectors? Which of the three? I've tried at least one of them, didn't work.
I wrote this[1] because I wanted something that didn't require any setup and I didn't want all kinds of features getting in my way. Just run the server and have it save the wiki to my hard drive. I guess you do have to install a D compiler in order to compile it, which might be classified as setup.
I hear you on this problem and it took a while to find a solution I like. Ultimately, I went with https://github.com/Jermolene/TiddlyDesktop and file syncing tool of my choice. It seems to work well, but you can have issues if you simultaneously edit.
I had the some problem, and several months ago (8?) I put together a small python script that I run that handles saving for me seamlessly. It also keeps around a handful of backups for each wiki, and provides an index page so I can swap between different wikis as I need to. I'm now all-in on TiddlyWiki and I've never been happier. I manage about a dozen or so wikis this way.
I haven't yet gotten around to properly hosting the source code publicly, but it's just a single python file that I run locally. To actually replicate the wikis between my devices, I use Syncthing. I'll be happy to put the source code up if folks are interested...it'll probably take only an hour or so.
I've been using Tiddlywiki for my technical notes. Before I was using Evernote and Notion, both would format my code blocks and it was just easier to use Tiddlywiki with a desktop app for saving.
But my concern with Tiddlywiki is extracting the data if needed, there was a time when my wiki had some file issues and lucky that I was able to recover without sorting the files manually.
It's been a while since I've actively used tiddlywiki, so I don't have actual code snippets at hand - but extracting "tiddlers" should be the least of your concerns (at least, that was my experience when I used it).
Just open the tiddlywiki in your text editor. All your tiddlers are neatly filed away at the bottom. It's that simple.
In fact, I had a folding expression in vim which folded everything neatly, and allowed one to just navigate between tiddlers, all in vim.
If its that simple to interactively browse through the data without running the javascript "engine", then you can see how trivial it is to pull out any or all tiddlers, on demand, out of the tiddlywiki.
> It has the hackability of emacs but can run anywhere a browser can
Needing a browser is definitely not a positive. The website taking two seconds to load even when in cache while zim is absolutely instant even on potato PC neither.
I think being able to view your wiki from any browser is a positive. I don't need a separate app for my phone, I just access my wiki website and everything works the same.
Using ZIM on a daily basis for more than 10 years. I use some of it's features more often than others:
- check lists as todo lists
- daily log
- drafting slides for presentations (using export to Presentation option and S5 option)
Primary way of syncing to other devices - shared nextcloud folder.
Pro: plain text files - can be edited by any available text editor in case I want to edit notes on an unsupported devices.
Cons: I don't like when it automatically creates notes for all phrases written in CamelCase. It is a wiki, but i don't use it as a true wiki, but as a bunch of notes.
> Cons: I don't like when it automatically creates notes for all phrases written in CamelCase. It is a wiki, but i don't use it as a true wiki, but as a bunch of notes.
There are a few quirks I've gotten used to over the years though:
- Pasting code will be garbled or auto-create tags unless you use the source view plugin or paste verbatim.
- Takes a little configuration out of the box to get just right, system dependencies, links opening in right browser, plugins, shortcuts, fonts. But once you get streamlined it just works.
- The syntax feels a little strange to me but I rarely need to edit raw files. I could also export to Markdown if I ever wanted to migrate.
My last tip, templates are awesome. I have ones for all kinds of things, like interviewing, 1-1s, and architecture design outline.
0. https://www.horstmuc.de/wmem.htm
"Do not parse input as wikicode" https://bugs.launchpad.net/zim/+bug/585300
"Option to disable all autolinking" https://bugs.launchpad.net/zim/+bug/585301
The syntax selection dropdown isn't great though. I wish I could type-to-search in it.
Pros:
Cons:https://joplinapp.org/
It supports various types of file stores for syncing between devices. I've used OneDrive and WebDAV. The project has also recently launched a cloud service for people who want to sync between devices but don't want to set up a network file store.
However, you could probably still use sqlite for analytic queries by just creating an in-memory or temporary database at startup then watching for file changes to keep the database consistent. Creating this database probably won't take that long unless you are trying to store all of Wikipedia in your knowledge base.
Sounds like you're happy with the performance though, why a con?
I am not blind to the advantages electron brings to a developer. Including electron as a con is in no way a critic of the developer but a expression of disbelief that the developer world has not yet managed to agree upon and popularize a reasonable electron alternative.
PS: Webview hoards memory in linux for some reason.
I see a bunch of people here with laundry lists of requirements, and when I see them, I'm like -- yes, a lot of those seem reasonable, but I've also had the same, and I've just built them myself, with some very hacky Bash. But any language will work.
Examples..lets see. I add todo items from anywhere (including phone) with email. I use Blitzmail on the phone and an IMAP script on the computer to send myself a tagged email, then I have another script to check and parse and add them to Zims "Journal"
My personal website is in Zim. I have a short one-liner to update it to my server; but I also teach at a college. I learned just enough of the Canvas API to also update certain pages of it to my class webpages. Also another one to update the Slides I make in Zim as well.
Etc.
Recently I updated my setup to use syncthing for syncing between my desktop, laptop, and my Android phone. On my phone I use Markor, an open source app that supports the Zim markup format (along with Markdown and some others). I've been pretty happy with this setup.
How happy are you with Markor on the phone? Is it good enough to edit your Zim files on the go or are there any bigger down sites?
I do have some issues making nested check box lists (maybe I need to review the Zim syntax) and it's not clear if you can add images. Mostly I review and update my todo items, read notes, and write small notes. For that I've been pretty happy with it.
And syncthing is great.
I wrote about it some years back on my ugly blog: https://www.tidbitsfortechs.com/2013/12/tech-tool-tidbit-zim...
[edit. It said I turned many people into it which assumes that there are people out there who are Zims. Space invaders notwitstanding.]
https://maggieappleton.com/garden-history
It has the hackability of emacs but can run anywhere a browser can ( both online and offline ). And of course, an active community and ecosystem built around it.
[0] https://tiddlywiki.com/
I don't care to evaluate which plugin will actually _save_ my data. That's a pretty fundamental operation in my opinion, and the fact that I have to evaluate and choose from one of 13 options does not instill a lot of faith that my data will not be lost.
AFAIK there is a single default. Just use that. If you need more features you can go down that rabbit whole but I think tiddlywiki is very usable without any modifications like you're describing.
Last time (a few weeks ago) I tried rclone with WebDAV. I do what the instructions say, I get a local web site where I can open the empty.hmtl, I do the basic setup, write a tiddler, it says "Saved" and the empty.html is still pristine and never gets written.
The times before that I tried several other ways documented on their web site, but failed with all of them. git? Only GitHub (and GitLab) seem to be supported, not my own git repo. Or SourceHut.
Cloud connectors? Which of the three? I've tried at least one of them, didn't work.
https://github.com/bachmeil/tiddlyd
[0] https://tiddlywiki.com/static/Installing%2520TiddlyWiki%2520...
I haven't yet gotten around to properly hosting the source code publicly, but it's just a single python file that I run locally. To actually replicate the wikis between my devices, I use Syncthing. I'll be happy to put the source code up if folks are interested...it'll probably take only an hour or so.
Also see https://tiddlywiki.com/#WebServer and https://www.npmjs.com/package/tiddlywiki
But my concern with Tiddlywiki is extracting the data if needed, there was a time when my wiki had some file issues and lucky that I was able to recover without sorting the files manually.
Just open the tiddlywiki in your text editor. All your tiddlers are neatly filed away at the bottom. It's that simple.
In fact, I had a folding expression in vim which folded everything neatly, and allowed one to just navigate between tiddlers, all in vim.
If its that simple to interactively browse through the data without running the javascript "engine", then you can see how trivial it is to pull out any or all tiddlers, on demand, out of the tiddlywiki.
Hope that helps
Needing a browser is definitely not a positive. The website taking two seconds to load even when in cache while zim is absolutely instant even on potato PC neither.
- check lists as todo lists
- daily log
- drafting slides for presentations (using export to Presentation option and S5 option)
Primary way of syncing to other devices - shared nextcloud folder.
Pro: plain text files - can be edited by any available text editor in case I want to edit notes on an unsupported devices.
Cons: I don't like when it automatically creates notes for all phrases written in CamelCase. It is a wiki, but i don't use it as a true wiki, but as a bunch of notes.
There's a preference to ignore CamelCase:
https://i.imgur.com/88SZTY9.png