4 ms·
Tiddlywiki is underrated for personal notetaking, I think. Like sqlite, it can come across as a toy, but the more you study it, the more possibilities emerge.
by rpdillon 4y ago
Tiddlywiki is underrated for personal notetaking, I think. Like sqlite, it can come across as a toy, but the more you study it, the more possibilities emerge.
I come from Emacs and have worked in Org Mode for years, but I use Tiddlywiki every day to manage my work and personal notes. One of the most notable aspects of Tiddlywiki is that its interface is built from tiddlers, so, as a user of the wiki, you have full access to customize not just themes and content of the wiki, but everything about how it works. In this way, it reminds me very much of Emacs: a toolkit from which you build a system that suits you.
In addition, because it is self contained, it is not tied to today's software ecosystem. I can take a Tiddlywiki from years ago and open it on any machine with a browser...there's no install and no dependencies that might go stale. This takes the loqseq/Obsidian/Joplin philosophy of "I can take my notes with me to any system" and extends it to the system itself: "I can take my system to any computer, both now and later". I use Tiddlywiki to generate my website as well, but this requires using the npm module. Notably, even the npm module is dependency-free[0].
Personal example: I found that I think in terms of logs: recurring meetings are kept as a log, my daily notes are kept as a log, and projects I work on are kept as a log. Even my TODO items are logs of my efforts and findings as a work through the task. To support this more seamlessly, I've built a log-centric extension to Tiddlywiki that allows me to turn any tiddler into a logging tiddler. It has a text box that I type into at the top of the tiddler, and every time I press Ctrl-Enter, a log entry is added to the body of that tiddler. Because this system uses tag-based aggregation, a log entry can belong to multiple logs (the day it happened, the project it was related to, the recurring meeting where the idea was mentioned, etc.)
I don't think my system is for everyone, but that's kind of the point: Tiddlywiki is a system that allows you to build the system that suits you best.
[0]: https://www.npmjs.com/package/tiddlywiki https://www.npmjs.com/package/tiddlywiki
- copperx 4y agoTiddlywiki is exactly what I want as a note-taking system, except for one detail: image handling. I have heaps of screenshots that I want to store along with my notes, and Tiddlywiki either: 1) embeds the image into the wiki itself (not sustainable); or 2) requires you to create image tiddlers with a _canonical_uri pointing to an external image file (which makes the Wiki not self-contained). This works but it's not as simple as drag and drop like in, say, Obsidian. This small friction is the only reason I've picked a different tool for note-taking.
- rpdillon 4y agoAgreed. I'm working on an extension that allows pasting of e.g. screenshots. It requires two components: a change to the wiki itself to trap the paste event and detect an image and call the backend to store it, and a server that can accept a POST that stores the images alongside the wiki. I needed the backend to support seamless saving via WebDAV anyway, so this was a small update to that code. I've finished the backend portion, but I'm still working on the frontend; I want it work in both the normal tiddler editor as well as my log-based extension. I'm excited to get it working, but it does break the "all in one HTML file" aspect. I'm OK with that: I can archive the directory of images alongside the wiki, but it might not be for everyone.
- Datagenerator 4y agoGood to hear, please keep the number of possibilities high by storing the images just as files. Do you have public code to test or follow for interested TW5 users? Thanks!
- rpdillon 4y agoYes, the images are just files in a directory called "s" (for static) that sits alongside my wikis. I've describe this system a few times, but this is the first time I've gotten some interested replies. I have a long weekend this weekend; I'll take a stab at cranking through the frontend code and making it available publicly.
- saqimtiaz 4y agoYou might find the FileUploads plugin of interest. Every time it detects an image in TiddlyWiki that meets a specified filter, the image is uploaded to a storage backend. Demo: https://talk.tiddlywiki.org/t/image-imports-in-tw-5-2-0-and-fileuploads-plugin/122 https://talk.tiddlywiki.org/t/image-imports-in-tw-5-2-0-and-... The choice of backend is pluggable via Uploader modules. There is already an experimental PUT Uploader that is WebDAV compatible. The version currently published is very simple though there is an advanced PUT uploader that I need to polish up and publish that allows for things like creating directory structures if needed when uploading an image and sanitizing tiddler titles to ensure that they are valid file names. Installation is via a plugin library: https://saqimtiaz.github.io/SQPL/ https://saqimtiaz.github.io/SQPL/ Discussion: https://talk.tiddlywiki.org/c/plugins/file-uploads/8 https://talk.tiddlywiki.org/c/plugins/file-uploads/8 If you are working with TiddlyWiki and WebDAV, you might find this writeup of interest as well: https://saqimtiaz.github.io/sq-tw/webdav/ https://saqimtiaz.github.io/sq-tw/webdav/
- anthrospeak 4y agoWould you be willing to share an empty version of your TiddlyWiki with the log extension and example content?
- rpdillon 4y agoFor sure. I'm all about open source and sharing code with community, but always feel like it's not ready yet. =) I'll carve out time this weekend to push something up and share it publicly.
- rpdillon 4y agoJust to follow up, here's a quick example[0] I threw together. I really need to turn this into a plugin, but because it somewhat depends on things like how journal tiddlers are titled and tagged, it's currently more of a distro. I hope it's interesting! [0]: https://rpdillon.net/NotedeckExample.html https://rpdillon.net/NotedeckExample.html
- gsinclair 4y agoI’d like a feature whereby you optionally give pieces of information an expiry date (preferably in abbreviated natural language, like 2w for “in two weeks). After that has passed it can be presented differently: minimised, greyed out, disappeared, whatever suits. Is TiddlyWiki extensible enough to handle that?
- rpdillon 4y agoYes. Tiddlywiki supports arbitrary fields, and has one by default called 'created' that stores the creation time. It also has a filter mechanism that is central to how it presents information. Filters can be modified to block or pass tiddlers with a certain age. If you want this by default, you can inject these filters into the view template to modify the default presentation of all tiddlers.