Tool
a tool can be thought of as some set of edges of a dependency graph
example using nails is required for building a chair. a hammer is a tool that drives nails; it allows the use of nails for building a chair
Scope
notice that many tools match one of the following scopes
- tool does something for something
- tool does something for everything
- tool does everything for something
- tool does everything for everything
examples
- a hammer drives nails for everything
- vim does text editing for everything
- Visual Studio does everything for c++ development
- IntelliJ does everything for java development
- VS Code does everything for everything
- Obsidian does everything for conceptual note-taking
- GDB does debugging for everything
- Unity does everything for video game development
- LibreOffice Writer does everything for word processing
learning to use a tool is an investment; understanding a tool's scope is essential for deciding whether investing in learning to use it is worth it. type-0 and type-3 tools are relatively uncommon. type-1 and type-2 tools are common and worth contrasting. skills with type-1 tools are generally transferable, and type-1 tools are composable but potentially less efficient. conversely, skills with type-2 tools are generally not transferable, and type-2 tools are specialized but potentially more efficient
note
I prefer type-1 tools over type-2 tools because I highly value composition and transferability; efficiency I make up for through practice and customization
Obsidian is a type-2 tool that is great at some things and not so great at others --- https://youtu.be/nz99I7apNLI. regardless, from my point of view, none of this matters because most of the features it has (or lacks, for that matter) are solved problems:
- Obsidian has good search---but search is a solved problem; grep and find are great at it
- Obsidian has great autocomplete---but autocomplete is a solved problem; vim and VS Code are great at it
- Obsidian has first-party file syncing---but file syncing is a solved problem; Git and Syncthing are great at it
- Obsidian has a paid markdown-to-web service---but markdown-to-web is a solved problem; mkdocs and hugo are great at it
- Obsidian lacks support for team collaboration---but team collaboration is a solved problem; Git and GitHub are great at it
- Obsidian is good at text manipulation---but text manipulation is a solved problem; vim bindings are great at it
- Obsidian is phenomenal for linking---but linking is a solved problem; markdown with wikilinks are great at it
note type-0 and type-1 tools appear to correspond to the Write programs that do one thing and do it well. part of the Unix philosophy