To achieve this, I need a way to support these two different phases of notes:
* The first phase is "get-it-down."
* The second phase is "refine."
The "get-it-down" phase needs to be fast. It's important for me that I don't need to think about where to write. The "refine" phase is where you can delete, organize, edit, and build off of what you've written. It should also be fast.
I always had to use two tools to satisfy these needs. I needed one place where I could write fast/loose, and one place that's more organized and structured. This resulted in me writing to the "organized" knowledge base less. So I was less likely to get the most out of the things I was learning.
That's why I built bytebase.io.
With Bytebase, you jot things down into a temporary space called "No Man's Land." Then you organize your notes using keyboard shortcuts. If you want to check out our closed beta, email me at cara@bytebase.io. Would love any feedback.
The other category, which is quite under-served in my biased[1] opinion, is the Knowledge Base that grows automatically and is maintained for you.
You learn by spend time on various different articles, some of them you upvote on Hacker News. You do a number of such things all day everyday. Wouldn't it be great if a tool compiled all that information automatically, "your history" if you will, and made it easily available to you? That's https://histre.com/
[1] biased because I'm solving this problem by building Histre.
https://github.com/senorprogrammer/til
I spend most of my day in the command line, so having a fast, simple way to capture things is the goal.
I made the conscious decision to optimize for ease of use, so that the friction/effort to write something down is minimized.
At the same time, I also made a decision to not to adopt any organization system -- anything that increases the friction of use is eschewed. Search was all I needed. I've been using this system for the past 5 years or so, and it's been very productive.
To extract ideas from it, I routinely re-read stuff (it's in log format, so it's very easy to read) and use the Fieldstone approach (Weinberg) to coalesce similar and interesting thoughts and rewrite into larger thoughts. I've gotten a lot of actionable ideas this way (that I actually go on to execute on).
So it's a system optimized for postprocessing rather than pre-processing. I find that pre-processing systems are unsustainable over the long term unless you're exceptionally disciplined. I try to build systems that don't rely on sustained human discipline.
I can do a ctrl + f for "_git_" and get to my git section straight away.
_git_
- git checkout $deleting_commit^ -- $deleted_file
- git checkout develop .circleci/scripts/feature_branch_deploy.sh
- git clean -f
- git reset HEAD~
But, I do get good ideas to explore further when I am learning something new. Once I finish learning, such ideas don’t come back to me again. So, I use Mindmap to record such ideas and references to the material, I was learning from, when the idea came. These ideas become the basis for the projects that I pursue to further solidify the learnt material or a side project or a hobby project etc.
Hierarchical structure of notes, which are either plain text or rich text. Supports unicode. Can store notes "one file per node" or "the entire structure in one file". Works on Windows and Linux. Is free and open source. There are no magic characters, so you can copy-paste code without further editing. (This is the part that I dislike about most alternatives; the need to add backslashes before dozens of characters whenever you make notes containing code.) Supports encryption.
How to organize the nodes? I'd say, adaptively... start with one huge file for everything, and optionally separate the parts that grow too large. Or by access rights, e.g. "this needs to be encrypted" or "this I also want to use at work, but this is private". Refactoring is simple.
Right now I have two files I use at home: "Everything" and "Private" (password-protected). One file called "Computer science", which is shared between my private and company computer. And one file I only use on the company computer, containing company-related stuff, including the projects I work on. (For example, "how to do X in project Y" would go to the company file, but general "how to do X in language Z" would go to the shared file.)
I built a portfolio / blog with Jekyll + github pages and write notes with markdown. Free was important at the start as I didn't know if I was going to keep using it.
I'd show but funnily enough I'm moving the hosting right now from Github Pages to Google Firebase so the page is down.
If I had today's technology back when I started, I would probably digitally record it with something like an Apple pencil etc. If it was all OCR'ed I would print it with an index in book form.