Is you wish programmability in your notes system, you should consider Trilium notes[0]. It is FOSS, pretty fast(even though it is electron-based), has pretty good feature-set and is very programmable(no mobile app, though, but self-hosted web version isn't that bad).
Hmm I wish the author would have mentioned the name of the relevant Obsidian plugins, since their plugin site is pretty bad to navigate, no sorting, can't open links in background tabs and stuff.
Beside that, I find these features pretty intriguing, but I wonder if I would want that inside a tool, or rather externally. Like a set of individual scripts, that operate on defined folders of text files, and then make use of the OS notification system to communicate, or along these lines.
The blog itself is also very interesting imo, subscribed to the feed.
I think shell scripts and plaintext (maybe markdown) files is the way to do it if you're on a unix-y OS. I already have a system similar to the article but not as advanced/developed.
Any chance of at least a summary of your complaint? Having listened to the first the if service of the videos they don't seem relevant to a general point, more that you just don't like Emacs which I'm not something 45 minutes on YouTube to confirm (I don't like Emacs either, but that doesn't make all Unix software limited nor limiting).
My complaint can be summarized in: I'm a human, my desktop must be my digital companion. Since I have a single brain, that do anything, without compartments, my very same hand caress, steer my car, take a fork, use a hammer, type on a keyboard etc, I do not want a "compartmentalized" tool.
For instance I want to take notes about a contact, for instance a colleague with whom I have work and friendship relationships, so I want to have in a single place contacts details like phone numbers, addresses, perhaps birthday and other anniversary reminders in my agenda, projects we are involved included eventual reports, mails, with some relevant/on-the-table easy reachable/highlighted etc. For what masochistic reason I can't have all those things together on my desktop? For what masochistic reason I can't have also others views of similar information together on my desktop, like see grouped all issues of a project coupled with relevant peoples involved, personal notes etc? Why I have to find "dedicated" apps for anything, non integrated, sometimes almost impossible to integrate, with duplicated and separated contents if for me, for what I do, for my brain all information are the same?
That's my complaint. An OS must be a single "application", under it's own user control, flexible, moldable, easy to bend to our desire without demanding a gazillion SLoC for anything. Emacs offer that. Classic SmallTalk workstations the same, modern systems do not. They are just cargo ship for individual containers, because that's positive to sell individual container, service etc, while depriving the user to handle and manage his/shes own personal information.
Unix already offer a small flexibility, thanks to CLI/scripting composability of individual simple commands, but graphic systems on unix have essentially a sole IPC: manual cut&paste. Nothing more, so even early unix GUIs violate unix principles. That's why unix is limited and limiting respect of classic Xerox workstations or LispM or modern Emacs. Emacs itself is a GUI, but being text based that GUI can be manipulated as the user want, easily, at runtime, modern widget-based GUIs or WebUIs can't, WebUIs can be customized a bit injecting js/css etc but that's not that "easy" nor "live", nothing a casual user can do.
While I'm not an Emacs person, I do agree with you to an extent. Make no mistake, I'm no unix evangelist; I like Plan 9, especially its rejection of unix's horrendous TUIs.
I used shell scripts because I was already very familiar with them. I use Linux because I find it to be the OS that's the least terrible of the big three that are usable for everyday tasks. It could be a lot better, but I'll still take it any day over Windows.
I appreciate the integration of Emacs, but I don't know Lisp, and dislike the idea of living inside a single monolithic program. I prefer to create my own (usually graphical and text-oriented) tooling where I can even if it's very hacked together and limited, because I'm very opinionated on how I want things to behave and present.
Emacs is not the paradise, in the sense that have many issues, but I use it because even with them it give so much back that's worth it, the real point is the concept: an operating system as a single, graphical environment where anything is reachable and moldable by the end user.
Personally I'm born on unix, I'm still far more familiar and quick scripting things in zsh than in elisp, still using zsh on a real terminal emulator for many things, because of habits, but Emacs have completely change for good my digital life and that in a super-short period of time.
A stupid personal example: for more than a decade I've kept my files in a hyper-curated home taxonomy with relevant symlinks, even TMSU as an experiment, in just few months (and with big hesitations) I wipe out that taxonomy for a cache-like storage accessed via org-mode (org-attach + linkmarks at firs, then org-roam), now accessing (almost) anything is just hit-a-key, type something, tab/enter to open. Not only: thanks to the fact that org-mode notes, accessed normally via search&narrow UI (like modern "dash-like" menus / google search in the end) act as a kind-of metadata super-rich directories I can select them via org-ql queries constructing different views of my files like putting paper files on a physical desk in a snap. Anything is integrated, now I open my landline provider note and there I have all monthly bills BUT also recorded bank transactions, longs (for instance about outages) so I immediately see why a month have an unusually high or low price, I can easily craft things like a quick graph of price evolution etc. Being on mostly textual storage means being on a kind-of data lake more or less easy to process in countless forms.
Another example: for many years (unfortunately not anymore) few utilities have sent me invoices as pdf attachments, they are auto-paid by the bank so normal procedure is just archiving and casually check that anything is ok. With Emacs (and a bit of scripting) my MailDrop pipe those utilities messages to uudeview that extract the attachment, save it with a proper name in a proper place (that's the unix part) AND add an entry to my org-agenda witch are my entire note collection, that means adding in the relevant heading in for instance my electricity utility an entry like:
* WAITING month X, amount Y, invoice xxxxxxxxx
Received via mail on <yyyy-mm-dd>, due for <yyyy-mm-dd>
the "mail" is an actual notmuch: link to the relevant message I can open in a click, forward it, reply to if (ok, are all noreply but you get the idea), dates are "active dates" that means my org-agenda show the entry at that date in log mode.
A day after the due date if the relevant transaction does not appear in my ledger an entry get automatically added to my agenda "something is wrong" with all details. That's automatic. In Emacs is easy to do since anything is exposed, accessible and moldable in unix the easy part is mostly limited to extracting and archiving the attachment. At maximum I can craft a check script with ledger (CLI version) that update my motd on a certain day but it's not the same thing and not as easy.
Slides? Well the linked videos in my precedent post show how easy they are, no need to work with modern GUIs for hours just to get something nice and inside the presentation I have my fully integrated environments, for instance adding a link that change my windows layout, run some software, ... it's immediate and simple, no need to "switch app" and "switch back" etc. And I can go on for long.
That's why we need a single, graphical, open and fully moldable environment for end users.
Is this feasible for people who have families and things to attend to outside of a life in technology? It seems to me that there is a lot of time and effort that is expended into note-taking and note-keeping. This is generally something only University Professors or professional research people do. Practicing software engineers have some overlap, but rarely need to keep such notes or have spaced repetition etc. for work.
I'm a lawyer. Notes are absolutely crucial to my workflow, as there are literally millions of legal cases, and precedents, and you don't want to repeat yourself or repeat unnecessary research. I'd see it no differently than programmers who keep gists or repositories of useful configs.
Sure, I can see notes being very important for lawyers. But I don’t see that for software engineers and programmers. For a programmer, the facts are the code. The end. The code is what gets executed. Anything outside of it is secondary. This is of course besides persistent data that usually lives in some sort of database, and configuration, which falls outside of the other two buckets. None of these items require note keeping. Programmers learn by doing: taking notes is very much a peripheral activity there. So I’m struggling to understand why or how this is a big deal and the brouhaha about org-mode, zettelkasten and the like on HN!
Long time (mostly ex-) org-mode user here. Org-mode is incredibly capable, but it's often not the best tool. The last time I used active code blocks in org-mode, it was for reading headings from the org file's TODOs to create an at-a-glance summary table of completion state.
It's super interactive because you're executing code on the very same file where it's written, but tightly couples the functionality Emacs, and adds irrelevant content (code) into the file. It also requires you debug, which can become a huge distraction from what is a simple goal. You also have to remember to run the sync code block, unless you have a method of auto-running the code or use another mechanism to remind yourself. Auto-sync is a whole other exercise.
The workflow stuff in the OP article looks completely doable in org-mode, but if we can see the difficulty in engineering the workflow system directly in emacs-lisp, and good choices exist for developing the system separately, then all of a sudden you're left wondering if Emacs + org-mode is actually the best client.
So now I mostly write markdown. That said, adding markdown code-fence execution to Emacs is surprisingly simple... you can send it to org's evaluate!
Emacs buffers are just buffers, not canvas, so dynamic information display is limited, but much can be done and it's already there (see Nicolas Rougier's Nano Emacs as a showcase).
you can avoid tags using in-property-drawer kev/value tagging, that's also easy to query with org-ql. A code block is run by a function as pretty anything and a function in Emacs can be called in countless way, like:
- hitting a key
- on file save with a hook
- when certain conditions happens with a hook
And that's in a global or file/buffer-local approach
For a small extent I'm one, while the "programming" is essentially limited to:
- inserting headings click on an org-mode elisp: link, like a note for a retail order, like
* orders (new)
where new is the link
- inserting elisp: links for org-ql queries, like in book notes, a book a note (all org-roam managed), with queries per author, publisher etc using org-mode drawers as key-value meta-info storage
In the past I've done a bit more, but it prove to be too long to maintain: since until recently my ISP was sending regular monthly bill as a pdf attached to a notification email I've crafted a script (run by MailDrop) what extract (uudeview) the attachment putting it in a relevant dir (I have almost all files org-attached) and adding it to the relevant org-mode note. Unfortunately they choose to send just notification emails without attachments just saying "go to your profile page to download it" and at that point automation is simply too long to be maintained. I've tried a bit https://woob.tech but just for a monthly bill it's not worth the effort.
However my notes are not just notes, are the entry point to all my digital information:
- almost all my files are now org-attached, so to access anything instead of traversing a tree with a filemanager I just hit a key (bound to org-roam-node-find) few relevant chars, tab/enter and the relevant org heading link specific files, or are linked inside or I can run org-attach-reveal case-by-case depending on what I'm looking for;
- I access my mails, partially, via notmuch: and notmuch-search: link types, again in org-roam managed "notes", partially in the sense that a single key bring me to notmuch for tag:unread (unified inbox) and shift+the key bring a new mail composition buffer (notmuch-mua-new-mail), in notes I link relevant threads, individual messages etc;
- notes themselves are almost my documents, they act as metadata-rich directories with a search&narrow UI (both org-roam-node-find, org-ql-view, org-agenda views etc) but are also meaningful by themselves, for instance I have a note per contact, that note link relevant files, mails, logs anything else about a contact, inside the note I can compose a new mail to the contact on click (elisp:(message-mail again)
Emacs/EXWM (like the web + a browser) offer the environment, org-mode the textual language (like html+CSS), elisp and countless packages offer the user-programming language (like js) and the mix my desktop, a poor man's modern classic desktop.
I scripted up a button for my Tiddlywiki to open a random note matching certain criteria for processing. It's pretty cool to have an OS for your notes, I gotta say! It does feel like you can take a declarative approach to what you want. But... I wouldn't make the effort in many of these systems which are harder to extend.
Love the examples in this blog (both use cases and prior art). Thanks for sharing.
I'm currently exploring what the ideal end-user-programming environment for this could look like https://www.loom.com/share/6fd5637254584cfea8de315f0f3b532c. I'd love to see end-user programmable applications that can be customized like described in the blog - in an environment that reacts as spreadsheet software (immediate results, no need to fire up an external editor or wait for a build-loop).
Interesting ideas. I'm not sure my note-taking life is programmable enough to benefit from any calendar-based approaches. But something project-based would definitely be helpful.
The problem is that poor/random suggestions are worse than no suggestions, because instead of helping they'll take you out of flow.
The ideal solution would have contextual awareness - not just smart enough to understand what you're working on, but to know you well enough to accurately predict what you're thinking about and the kind of help of you need.
That seems like a tall order with current technology.
Try to see some org-mode Emacs videos on YT and co, you'll discover the real meaning of "notes" and "computer usage" :-)
For instance https://youtu.be/B6jfrrwR10k but also, https://youtu.be/5ViUBaarsbw a bit exaggerated but nice. Notes are just personal documents, text means information, and automation on information means IT. Actually a notes-based computer system/environment is a desktop, is what we need and miss today.
Crappy compartmentalization of modern "apps" is the opposite, is the need for business against the user need and interest. Personally I have in "notes" essentially anything thank to the Emacs ecosystem:
- my files are org-attached, accessed via search&narrow thanks to org-roam
- links in notes point to pretty anything, mails threads, specific messages or mail search queries (all local, locally indexed maildir by notmuch, something better than GMail and under my total control), feeds (posts I decide to keep), bank transactions (any kind, from transfer to stocks passing through grocery expenses)
- notes form my agenda with SCHEDULED, DEADLINE, TODOs meta-information adding to a heading, org-agenda scan all notes to form a view, a single page or more than one, letting me selecting what I want to see (look for) or not
- queries on notes (org-ql) and transclusion means the ability to form/see my web of information "putting on the desk" (screen) just what I want in a semi-automated manner
- notes are also literate programming environments, spreadsheets, slides, all integrated with all meta-information I might want to add, I can place, link-to-execute, pass data from a code block to another, with code blocks of various languages, like pipes in the shell, but in a 2D environment instead of the CLI, I can create a table with all "formulae" I want like a spreadsheet but without the need to open separate tools and with the ability to use any language for them (included the built-in "calc" CAS)
Peoples these days use Google search and the modern web just because they are unable to make their own, collaboration included, notes with desktop computer environments are the tools need to substitute the centralized web of the giants to a web of personal information network shared as we want.
> That seems like a tall order with current technology.
The best way I know to simulate a very complex system is randomness :P. Turn your notes into a fortune file [1] and have those fortunes displayed where you look often (e.g. your browser's new tab page).
I've got a Shortcut which surfaces 10 random links from Pocket (which haven't already been surfaced - they get tagged) to the top because I am woeful at remembering to read things I've bookmarked.
(Unfortunately it also relies on having your Pocket links as a text file because their API doesn't have a way to find out how many URLs you've saved which means you need to download the entire set if you want to make a random selection...)
I think there's a lot of application of this concept to be had in regulated environments. Very often procedures are described as passive documents and then humans have to read them, periodically demonstrate their knowledge (training), execute the process, and then finally track that they did what it said in some kind of audit trail.
A format that lets us do all of those things with just one document (not duplicating things everywhere) would be great.
I love the idea. It’s certainly not easy to write a software to facilitate the vastly different ways people process their informations, especially while they are still in the tacit state. But it gives me ideas for a personal note taking system where I can reconfigure it to fit my needs and my workflow.
[0] https://github.com/zadam/trilium