Tools for thought
Guide that includes some of the following tools: https://nesslabs.com/how-to-choose-the-right-note-taking-app
Lots of amazing tools. EOD I believe in the File over app and am choosing Org mode as my go-to solution. Open question on how to best integrate this with academic sources.
Roam research
Backlinks: Tana
An "OG" tool for thought. Proprietary database. A lot of clones!
Logseq
Backlinks: Tana
Open source version of Roam, basically.
Tana
Backlinks: 2024-12-07
Closed format, all online. Feels a lot like Roam, but with AI integration.

It imports from roam, logseq, and workflowy.

Tried the free trial briefly on 2024-12-07.
Academic / bibtex tools
Backlinks: Productivity
Many tools exist more focused on managing references for academic writing. I've personally had a lot of good use of BibDesk. It's pretty basic but gets the job done for managing a .bib file.
Some other popular tools include zotero, jabref, etc. Love for bibdesk on the zettlekasten forum (web).
If we are taking notes and making links between academic articles, integrating that with LaTeX so these references can be pulled into a document/paper is something I'd like to be able to do; one of my core goals.
ObservableHQ
Inspired by File over app.
We use this extensively for the Berkeley iSchool MIDS course.
Notion
Backlinks: 2022-08-21
This seems like a pretty neat tool: databases + pages. Can link between the two. Is it possible to write JS? Maybe not plain, but you can really tie things together. Like the visual basic of our day…people can build nice look apps in it!
- TimeOS
- Zapier notion automations
- Notion todo system, link dead
- Gamify your Habit Tracker
- Youtube - The Second Brain by Ali Abdaal
- Your Second Brain, ENTIRELY in Notion by Thomas Frank
- Early-Stage OS - All-in-one workspace to manage and grow your startup
- Stoic mornings
- Rad Reads Notion templates, 11 of them
Obsidian
Uses markdown as the backend format. This is really great!
- https://rossgriffin.com/tutorials/15-obsidian-plugins-that-i-cant-live-without/
- https://www.reddit.com/r/ObsidianMD/comments/wt67gd/what_is_your_favorite_obsidian_plugin_obsidian/
- https://medium.datadriveninvestor.com/the-only-10-obsidian-plugins-i-need-to-have-the-best-and-simplest-pkm-of-my-life-c3a3b9d1ebda
- https://notes.nicolevanderhoeven.com/Obsidian+Plugins
The iOS app and ease of syncing seem like huge wins.
MCP servers for Obsidian
There's an "official" one and some dude's server that has more functions:
- Unofficial: https://github.com/MarkusPfundstein/mcp-obsidian.
Many tools:
- listfilesinvault: Lists all files and directories in the root directory of your Obsidian vault
- listfilesindir: Lists all files and directories in a specific Obsidian directory
- getfilecontents: Return the content of a single file in your vault.
- search: Search for documents matching a specified text query across all files in the vault
- patchcontent: Insert content into an existing note relative to a heading, block reference, or frontmatter field.
- appendcontent: Append content to a new or existing file in the vault.
- deletefile: Delete a file or directory from your vault.
- Official: https://github.com/smithery-ai/mcp-obsidian. Just two tools, read and search.
Org mode
Backlinks: 2022-08-21 | 2024-07-05 | Instuctions
Emacs, the OG.
- Headings (and navigation)
- Tasks (heading with special keywords like TODO)
- Time tracking (via timestamp entries in the "drawer" of tasks)
- Linking
- Tagging
- Tables
- Exporting
- Open/close section: TAB
Links are case-sensitive (easy to try and check, just link to this heading Org mode).
- GTD in org
- Talk about org from creator
- Written tutorial
- https://karl-voit.at/2020/01/20/start-using-orgmode/
- https://blog.jethro.dev/posts/how_to_take_smart_notes_org/
- https://github.com/jkitchin/org-ref
Backlink to
when I started coming back to org mode. From the docs on tables/todos/tags:- 3. Table editor
- Create a table from region: C-c |
- Format row C-c C-c
- New Hline: C-c - or C-c RET from end of previous
- Sum a column: C-c +
- 5. TODO basics
- Cycle status: C-c C-t
- Show all todos in current document: C-c / t
- 6. Tags
- Format is :tag:
- How to show a sparse tree?
Linking
- Switch link display: C-c L (refresh/switch buffer to see result)
- Follow link: C-c C-o (or ENTER)
- New link: C-c C-l
Linking: all links us [[][]]
syntax.
The docs (4. Linking) describe it.
To link between files,
we can either use an automatically generated ID, a custom ID,
or link to the heading directly (within-file or cross-file).
With ID-based links, emacs will read all of our local, matching, files (.org
files) and build an index.
Using file name in the link is more brittle.
Example links using ID
and CUSTOM_ID
:
- Heading in same document: Obsidian
- Custom ID: Obsidian
- Heading via filename: Obsidian
- Auto ID (the parent heading): Org mode
A SO post talks about using CUSTOM_ID
instead of ID
but I'm not sure that
org-id
itself will use the custom IDs in it's index.
I tested this breifly and it didn't work (put the above custom id link into a
different file and tried to follow it - didn't resolve).
I like the human readability of the custom id,
but doesn't seem like it's as well supported (maybe a flag in org-id
could
fix?).
- Exploring super links / back linking
It seems possible to auto back link with super-links, but it's either broken or not behaving how I'd expect it to.
The steps I want are
- Convert a heading to linkable (create id - ideally this is a nice slug), heading A
- Don't need to relate it to itself, or backlink it to itself (though, don't care so much if it does)
- Insert a link to that on another heading B
- Automatically have insert the backlink on heading A from heading B
Is this all parent-child? No - you can webs or things linking to each other, or being related.
Publish some subset of things as a personal wiki. Some subset of those are blog entries.
Two spaces: (1) blog and (2) wiki. They can link back and forth.
Super links is close.
So manually, my steps are:
- On heading A: org-id-get-create
- On heading A: org-id-store-link
- In heading B: org-insert-link
- On heading A: org-super-link-store-link
- On heading B: org-super-link-link
Note that step 5 actually put the link from 3 in the related section of B.
Let's try just doing 4 + 5. Maybe we can then snag it out of the related?
Step 5 didn't work, having only done step 4. Let's try doing the get-create first. It's like it didn't store it?
It worked with 1, 4, and org-super-link-insert-link. It worked with just 4 + org-super-link-insert-link. I think for 5, needs to be in the buffer.
See also How to publish Org mode blog to HTML.
You cannot continue headings after subheadings: https://stackoverflow.com/questions/30997099/in-org-mode-how-to-break-current-section-and-escape-to-upper-level
- How to link in Org mode with automatic backlinks using org-super-links
Backlinks: 2022-08-21 | 2024-07-05
- On the target copy the link "C-c s l".
- Where you want the link: "C-c s C-l".
This creates the backlink as well in the drawer of the target.
This uses org-super-links like
(require 'org-id) (setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id) (use-package org-super-links :straight (org-super-links :type git :host github :repo "toshism/org-super-links" :branch "develop") :bind (("C-c s s" . org-super-links-link) ("C-c s l" . org-super-links-store-link) ("C-c s C-l" . org-super-links-insert-link)) :config (setq org-super-links-related-into-drawer nil org-super-links-link-prefix nil)) ;; Set markdown style for links (setq org-link-make-description-function 'org-link-make-string) ;; Toggle link display (global-set-key (kbd "C-c L") 'org-toggle-link-display)
Online versions of org mode
- https://beepb00p.xyz/cloudmacs.html Run emacs in a container on the cloud - it has a web interface!!
- https://github.com/200ok-ch/org-parser Also https://github.com/200ok-ch/organice/ The latter is a progressive web app designed for mobile use and supporting as many pure org mode features as possible. Very very cool. How to sync files?
- https://www.orgzly.com/ Android only
- https://github.com/mooz/org-js Interpreter for org written in JS
- https://www.reddit.com/r/orgmode/comments/hle3z7/looking_for_orgmode_in_a_web_page/ They recommend organice (above).
iOS versions:
- Plain org iOS app did not work well for me.
- Beorg
- A few more in the app store, I haven't tried
- Org mode files on iOS
If using Git - Working Copy is really nice. The files are copied fully onto the iOS device, so they work with Plain Org.
Could just use iCloud to sync.
I put my files on my Synology NAS, and turned on WebDAV. This works well with beorg, but only within the network… beorg doesn't go through tailscale.
Using the SMB connection in the iOS Files app, then connect beorg to that. Seems to work! I'm editing these files right now via emacs on mac, through synology drive (with pinned files, this is faster than SMB or WebDAV).
Timestamps in org mode
https://emacs.stackexchange.com/questions/10504/understanding-scheduled-in-org-mode
there are three ways to attach a date to an Org entry:
A plain timestamp, C-c .: This is used for things like appointments where the entry occurs at a specific date/time. Such an entry will show up in the agenda on the specified day, and will not show up after that day has passed. Note that an appointment in the past won't keep showing up on your agenda regardless of whether you mark it DONE: if you didn't go to your doctor's appointment yesterday, that doesn't mean you still have one today!
A SCHEDULED timestamp, C-c C-s: This is used to indicate when you intend to do the task. It will show up on the agenda on the scheduled day. If you don't complete the task at that time, it will continue to show up on the agenda on the following days to show you that you have not completed something that you planned to do.
A DEADLINE timestamp, C-c C-d: This is used to indicate when something must be completed. Typically you want to see deadlines ahead of time, so that you can do whatever it is that must be done to meet them. Like a scheduled entry, if you miss a deadline it will continue to appear on the agenda as past due.
(Strictly speaking there is a fourth option: an inactive timestamp, C-c !. This is when you want to attach a date to an entry but do not want it to show up in the agenda at all. Inactive timestamps have no special behavior.)
Org-roam
Org-roam, while a cool idea, introduces a sqlite database to work! While I also like sqlite, this makes org-roam an app, not just a file (File over app): it would be a lot of work to properly process this db to rebuild the "app". We can use Datasette to take a look at some testing, where we got 3 files with 2 nodes, populating 5 rows in 2/7 tables:



The structure in 1 – 3 isn't crazy, but it's more than we need.
Org-brain
Drawers
Store things like properties, todo state (metadata, broadly).
Apparently they can be in the middle of an entry:
:EXISTS: true
With stuff after them.
Code
Added python to org-babel in org startup.
print("hello")
But this doesn't work because I don't have plain "python" as a global on my system. The above results are empty because there was an error. Need to invoke a venv for it to work.
Org babel
Backlinks: Atuin Desktop: Runbooks That Run
HN suggests org-babel from discussion of Atuin desktop (see backlink): https://osem.seagl.org/conferences/seagl2019/program/proposals/664
Demo:
Org attach
See file list by executing:
(org-attach-file-list (org-attach-dir))
Automatically include a list of attached files with
(defun org-attach-save-file-list-to-property (dir) "Save list of attachments to ORGATTACHFILES property." (when-let* ((files (org-attach-file-list dir))) (org-set-property "ORGATTACHFILES" (mapconcat #'identity files ", ")))) (add-hook 'org-attach-after-change-hook #'org-attach-save-file-list-to-property)
See correspondence: https://list.orgmode.org/87sg70vsvy.fsf@localhost/
Example of using it here: How to Be a Happy 85-Year-Old (Like Me).
Cahier
Cahier is a desktop application that enables advanced note-taking and bibliography management in the same tool.
Craft
This looks pretty great:
Digital Gardens
I haven't gone as crazy as some of these:
- https://www.jonashietala.se/blog/2024/07/09/microfeatures_in_my_blog/
- How I tend to my digital garden | Max Stoiber (@mxstbr) (https://mxstbr.com/notes/digital-garden)
- Tree of Knowledge (https://tree-of-knowledge.org/)
- Personal computing paves the way for personal library science | Hacker News (https://news.ycombinator.com/item?id=40192359)
- Bram Adams (https://www.bramadams.dev/)
- https://jstonge.vercel.app/on-note-takings
- https://rishikeshs.com/
- Simon Willison's blog: https://simonwillison.net/
- Buster Benson: https://paper.dropbox.com/doc/Rough-Notes-Loosely-Organized-IGamgYXatsECbpKVEuBiG Even has values in github: https://github.com/busterbenson/public/blob/master/book-of-beliefs.md#Changelog
- Karli Coss: https://beepb00p.xyz/hpi.html and https://github.com/karlicoss/HPI
- https://notes.andymatuschak.org/Spaced_repetition_memory_system
- Conor Dewey: On digital gardening
Citation management
See thoughts on Archiving solutions.
Archivebox could be interesting as a local complement to archive.org.
I'm using the Chrome singlepage plugin to download copies of sources, along with org-attach to create directories to host things.
Things
Docs
Znote
- Another tool for thought
- Blog post on 3 year development: https://blog.znote.io/2024/side-hustle-journey/?utm_source=tldrnewsletter
Docmost, open source Notion
- Tools for thought
- mermaid for charts
DIY Your PKMS
Blog post Ditching Obsidian and building my own.
Nice write up of the history and context of PKMS. Basically a markdown editor and a database, which is cool.
https://amberwilliams.io/blogs/building-my-own-pkms
HN: https://news.ycombinator.com/item?id=44022448
Dataview in Obsidian is a lot like the agenda of org mode: https://obsidian.rocks/dataview-in-obsidian-a-beginners-guide/
Writing as thinking
This is generally accepted. Forced clarity.
Maybe paper is different than keyboard.
- https://lopespm.com/notes/2023/07/02/writing-as-a-form-of-thinking.html
- https://www.henrikkarlsson.xyz/p/writing-to-think
- Paul Graham has written quite a bit about how writing helps: https://paulgraham.com/words.html
- He has other essays on this same topic too:
- https://paulgraham.com/writing44.html
- https://paulgraham.com/simply.html
- https://paulgraham.com/think.html
- Paul Graham on writing as thinking (again)
I don't think anyone disagrees.
Stripe has a "famous" writing culture too.
File over app
Backlinks: 2022-08-21 | 2024-07-05 | ObservableHQ | Some Love For Interoperable Apps
> File over app is a philosophy: > if you want to create digital artifacts that last, > they must be files you can control, > in formats that are easy to retrieve and read. > Use tools that give you this freedom. > > File over app is an appeal to tool makers: > accept that all software is ephemeral, > and give people ownership over their data.
He's working on Obsidian, but this applies to Org mode.
This even applies to ObservableHQ's static site builder, and Mike Bostock says as much on their HN launch.