Keep a Log
bruno-oliveira.github.io
bruno-oliveira.github.io
https://www.sciencedirect.com/science/article/abs/pii/S22113...
I remember finishing a complex math test in high school and checking my calculator's memory to find that I had done some rather simple single digit multiplication that I had no recollection of. Ever since then I've tried to be conscious of what I offload and what the long term consequences might be. For example, I'm confident that my ability to spell has decreased as spellcheck technology had advanced.
I'm not recommending against keeping a log. In fact I keep several myself. I use google keep for simple things that I eventually want to forget. I use anki flash cards for spaced repetition study of short concepts that I want to remember. I use oneNote for sprawling interconnected datasets. And lastly, I used waldenpond.press to print and bind stories and articles that I want to remember and revisit.
I just think that there is a risk to haphazardly externalizing more and more of your cognition. I started a new carrier 5 years ago, and found that many of my skills had atrophied over the years. I think I spent more time in my first 6 months relearning abilities I had taken for granted 10 years earlier than my new job duties.
I on the other hand am a prolific notetaker because my recall isn’t eidetic as it was when I was younger and I need the crutch to operate at the level I became accustomed to.
Anyway, I don't think the crutch model is correct, even at the risk of disagreeing with Socrates. I think we just learn some way to learn, and part of that is a memorization ritual. Socrates learned to load things into his long term memory by discussing them. The vast majority of over-30 (at least) American who learned to load things into long term memory learned to do so by the ritual of writing them down with pen and paper. I'm sure there'll be a contingent who learn a ritual of typing notes.
A picture, and typing, is the same action regardless of the substance being captures. There is not enough uniqueness to the process to help memory. But writing I believe is.
Crossword puzzles and memorizing lists won't stave off dementia either.
Of course not. My only statement was that the person who doesn't have to look it up will be (all else equal) more effective.
I keep a key list of links, but more importantly a strong basic reference knowledge of everything I've read, to be able to quickly find the more in-depth knowledge when needed.
No, it actually will, since your brain will have more connections so it will take longer for it to degenerate to the point of dementia. So as an example, someone would develop dementia at 85, but the brain activities will push it to 20 years later, probably beyond the death point.
In terms of computing, it was only stored on ram, and not going to hdd / ssd, and later will be flushed to be replaced with other info.
Which is not a bad thing if that information isn't crucial for long term.
But on the other hand, concepts you're building up in interconnected data sets (one-note etc), or anki cards you author _yourself_ are likely forging new neural pathways via the 'generation effect'. They are more a case of 'note making' than 'note taking'. In these cases, when you're reviewing, you're likely not just recollecting random unrelated facts, but re-experiencing the understanding you built up whilst authoring.
Perhaps thats a nuance to the risk that you're highlighting: whatever the medium (anki, org-mode, etc), there are risks to our cognitive abilities atrophying over time if we skip that generation phase.
Task relevant context residing in an [intermediate-term memory](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6596466/) is built up over time as you gain expertise, it's more durable than working memory but impermanent, unlike long term memory. According to this model, fine details are unfolded in working memory and details not relevant to current attentional focus shift into latent intermediate storage.
Those structures locate the expert at a point where they are quicker and more effective in solving domain relevant problems but also bias which paths are taken in problem solving (such as not noticing you're using a calculator for trivial arithmetic). It's loss is why the same person can write complex algorithms or mathematical proofs and come back months or a year later and be unable to make heads or tail of it.
It's quite likely that long term memory does not store at the same level of detail as intermediate context, relying on inference in recovering into WM. Keeping a notebook of detailed derivations of unintuitive or complex workings reduces the complexity of inference during recall and helps for more successful and reliable recovery of desiccated memories. Notes are also important for things you expect to fall out of intermediate context due to rare use but caused a great deal of headaches to solve.
Tools do have a cost but good tools are net positive. Good tools will be pivotal in an era of exponentially expanding knowledge, fixed human capacities and slowed population growth. From oral stories to books, from the abacus to computers, humans are unique among all animals in how much we extend our cognition beyond our brains.
This makes me sad when I try to remember seeing him for the first time, I can only remember a few things and lots of photos. Now to mitigate that, I still take photos but avoid reviewing them immediately. I would rather go through them later when trying to recall. When I review immediately, it feels like the photo overrides the visual memory of the real event.
I think the important part here is that the “log” isn’t the goal nor something we are explicitely asked to do, but a step that comes after we experienced the work. I would compare it to taking photos of your own painting: arguably you wouldn’t be remembering a piece less because of the photo, you’ve been staring at it for hours/days in the first place.
I don't really use any Obsidian plugins. Obsidian has good builtin navigation, search, and markdown processing (e.g. LaTeX, code syntax highlighting). It's just as easy as opening a new file in $EDITOR, except its a markdown renderer & synced across all my devices.
There are also a lot of bells and whistles like graph viz, export to website, etc. that haven't gotten in my way.
[1] - https://obsidian.md/
[2] - https://syncthing.net/
Although, it is a perfectly good environment for drafting such manuscripts.
It's organised around blocks rather than pages. So you tend to organise your thoughts in packages.
And you can reference blocks in your current page so you have a direct link. Though I think Obsidian does this to.
The differences are quite subtle but profound.
For the use-case of a professional developer employed at a company with more than two poeple, it is $50.00 / year [1]
[1] https://obsidian.md/eula "Get a commercial license for each user" -> https://obsidian.md/pricing
Foam (Bubble) is an open source VScode plugin inspired by Roam.
Foam in VScode is what I use daily as my second brain:
Totally works fine for a knowledge log when you're streaming high level details from your brain into text. I still use it today. The repo hasn't been updated in 2 years because it's a ~20 line script with a simple API that hasn't failed yet.
But when you want to really go all-in with in-depth notes on 1 semi-broad subject it's tricky because in 1 month's time if you're hardcore deep in the woods of learning, applying and using something you're going to end up with hundreds of concepts from an assorted set of tools and it kind of stinks to have all of that info sitting in 1 file. Think about using something like Kubernetes. That's really Kubernetes, Kustomize / Helm, EKS, various cloud hosting details (networking, etc.), Terraform and ton of super useful commands / context. Details you for sure want recorded for later.
For this type of info I've been building up a personal knowledge base with https://obsidian.md/. It's really nice and I highly recommend it. It's been working well for keeping things reasonably categorized without wasting a lot of time on the details around keeping links and tags up to date. It also has Vim mode that's good enough where day to day writing feels natural.
The zero-effort part is key in my IME: if it's not zero effort, it won't stick. And if it doesn't stick, you won't reap the nonlinear long term benefits. There's the obvious benefit of magically reaching into the past and remembering things. But the hidden power that surprised me was the day-to-day experience of clearing cognitive clutter by typing things out in a place that I trust won't get lost.
Shameless plug: two years ago I hacked together a little node script to give my pile of markdown files a more friendly UI than grep: it would pass them through pandoc and massage the DOM and slap a a bit of JS on it. I've been using it everyday since and it's become my favorite productivity hack. I'm currently in the process of rewriting that ole hack in Go to make it more stable and easy to distribute (and to learn Go!): https://github.com/amirkdv/codex
You could probably just change to #!/bin/sh without issue.
As for using #!/bin/bash instead of #!/usr/bin/env bash, that was an oversight from 2 years ago. I addressed that too in the above patch by using #!/usr/bin/env sh.
[1] https://github.com/zsoltika/hacknot/blob/master/hacknot.md#f...
I think of it as more of a daily diary though, I mix random notes of things I've done, thought of doing, or interesting links and/or command-lines I've found useful so I don't have to reinvent them as often in the future.
It has proven to be immensely useful for myself. Can highly recommend!
My way is mainly org-mode files through Emacs over the years. Now having switched primarily to VScode I use a simplified org-mode version to get similar feeling, and it works pretty well. Everything is mostly text anyways!
Writing can take different forms (written words or code), but in both cases, it makes ideas clearer, helps me create mental models, and help me shape my thoughts.
I heavily recommend journaling and PKM in general. I recently wrote a few articles on the subject:
https://dsebastien.net/blog/2021-10-07-periodic-journaling-p... https://dsebastien.net/blog/2021-10-07-periodic-journaling-p... https://dsebastien.net/blog/2021-12-03-personal-knowledge-ma...
https://whatgotdone.com/michael/2021-12-03
The code is all open source if you're interested in playing around with it:
How it works: From any file, in any project, in VsCode just press CMD + SHIFT + J, select 'Today' and it will plop you into the journal page for today with today's date at the top.
I think the only other QoL I have for it is the markdown snippet I created that creates the current day's date and other boilerplate data when you type 'td'. It works really well for me, and I back up to a private git repo.
- Daily notes as roots
- Local storage
- Plain text storage
- "wiki-links"
- Backlinks and easily traversing notes
- Hierarchical format for notes (with folding, so I can "tuck away" a bunch of text and screenshots when I don't want to look at them)
For things where I absolutely want to remember something, it goes into Anki. While reading books, I make time to go over the chapters and extract key ideas into Cloze deletions. Helps with recall, and the Cloze format helps with recall since you're given far more context. And perhaps useful for search.
For shell / computer stuff, keeping history around helps a lot. In theory important commands could become aliases or functions and kept around via git, but this is more rare.
I do have a gnote / tomboy setup that I use mostly for long form writing, but that's less about journaling experiments & discoveries for later reference and more about getting plans and ideas out of my head so I can stop thinking about them, and drafting the occasional blog post.
# Open Personal Logfile at end, optionally appending log entry for today if it doesn't exist
function ed ()
{
local _cur_date _most_recent_date;
_cur_date=$(date +%m/%d/%Y);
_most_recent_date=$(grep --color -o -E "^# [0-9]{2}/[0-9]{2}/[0-9]{4}" ~/${LOG_FILE_NAME} | tail -n 1 | cut -d' ' -f2-);
if [[ "${_cur_date}" != "${_most_recent_date}" ]]; then
echo -e "\n#\n# ${_cur_date}\n#" >> ~/${LOG_FILE_NAME};
echo "Command Comments" >> ~/${LOG_FILE_NAME};
printf "%0.s-" {1..81} >> ~/${LOG_FILE_NAME};
echo >> ~/${LOG_FILE_NAME};
fi;
$EDITOR +$(($(wc -l ~/${LOG_FILE_NAME} | awk '{print $1}')+1)) ~/${LOG_FILE_NAME}
}
>>>
#
# 12/03/2021
#
Command Comments
---------------------------------------------------------------------------------
<some cmd> # My description of what cmd does, in my own wordsEach of my projects has issues. If I'm fixing a bug or working on a feature I open an issue for it, then I post a stream of comments as I figure out the details, make decisions, find examples of code that I need to use and so on.
I have my own private notes repository which I just use for this for things that don't relate to a current project and that I don't want to publish yet.
I add a "research" label to my repos, and open research issues for ideas or for things that I want to explore that are relevant to the project in some way. Recent example: https://github.com/simonw/sqlite-utils/issues/344 - researching STRICT mode that was just added to SQLite, and seeing if it would make sense to support it in my sqlite-utils library.
GitHub's issues API is comprehensive, so I have a cron that exports all of my issues and comments into a SQLite database that I can access with Datasette. I have a private one with all of my projects, and I also run a public one at https://github-to-sqlite.dogsheep.net/github/issues with just the issues from my public Datasette-related projects.
I use search against these often. I occasionally even re-discover old notes from Google searches, which include the ones from my public repositories.
Many of my issues have dozens of comment replies, all from me. It's a great way of keeping a log.
Sometimes decisions get revisited and it’s nice to have all of your context, particularly if you are having to defend a choice that was made.
Eventually I settled on Word documents, shared over Resilio Sync. It's the easiest option to also allow images to be included, and to keep control over my own files. And the desktop and mobile editors are both equally reliable.
Word for Mac is pretty slow, though. Takes 3-5 seconds to open a document after I hit the Karabiner shortcut for it.
So maybe a way to narrow your history scope?
I wrote more about my system here: https://news.ycombinator.com/item?id=25302365
I really hate the antique-mindset, amateurish shops where they don't use DVCS, wikis, or configuration management. "Oh yea, only Jim knows how that works" is one signal of intense knowledge hoarding.
For example, I keep separate Notion pages for each programming language I use. I also recently started learning Rust and have built up a page that includes even basics like how to declare a variable. The idea was it can exist as a beginner guide and someone can run through it relatively quickly and get a jist for the language.
But if I keep using the language, that information may eventually become obsolete (since I'll have it memorized) and will probably be a waste of space. Then as I advance through the language, I'll want to take note of more advanced concepts and maybe even some specific use cases of problems/solutions to code I'll have written.
I guess that's the beauty of editing a knowledge base over time. You can edit it to conform what's in currently in your head right now. So maybe in a few years from now, having those simple variable declarations will be a waste of space and I'll just want advanced topics covered.
Or maybe I'll walk away for a few years and need to look up basic syntax again.
I keep all my work-related knowledge in just a single flat text file, which after four years at my current company is just under 20,000 lines long and ~750 KB. It's easy to grep and so I can find virtually anything quickly.
I think trying to get too fancy with organization could lead to troubles. A badly-organized knowledge base is hard to fix.
Most of the time I'm just kicking myself that I didn't write down something that I was sure was in there.
I can't claim to do it "regularly" in the sense that I do it every day, but I guess I do something like it in that almost every one of my projects has one or more PlainTask documents (i.e., documents that use org-mode-alike PlainTasks extension for Sublime Text).
These documents usually start one day as a scratch space to remind me what I was doing before I take a break, or to plan out the next few steps. In any non-trivial project, it'll tend to grow to at least a few hundred lines, and almost all of them accrue a top-level section, at the top, titled KNOWLEDGE, where I (my better self, at least) try to record slippery or hard-won technical details I picked up along the way (even if I'm not smart enough to note them the first time or two I have to bang my head against them).
I may not consult most of them again, but they can be a huge help when I get a chance to return to something that I had to back-burner 2 or 3 years earlier, and all of the critical detail has been displaced by newer ephemera...
- KISS
The only big feature I really wish it had besides non-apple device access (if the bear devs are reading this PLEASE finish the web version!!) is a map view similar to the iOS photos app since it turns out I almost exclusively remember the things I write based on content or location.
Interestingly I almost never remember WHEN I wrote something so the timestamps are pretty useless for content recall.
I have made a few things, like a url-rest thing that's encrytped at rest where the entire website page body is a textarea element. Authenticated and unauth (local) versions. Desktop app. Phone note widget. One I'm working on is a chrome extension one since I use Chrome everyday.
The main thing is it has to be made by me, ego. I used to use One Note but now I'm scared/cringe to look back at my younger self's thoughts ha.
I realized some month ago, that the log is provided for free by git. If I run gitk, I can access all the history of task completion.
Over the last few years I have tried many applications for this and many have failed.
I really liked boost, but the whole paid/free/app/webapp mess with whole backups disappearing freaked me out.
That's a great upside? Any text editor has search. Any text area on any operating system has ctrl+f. I really don't understand why sometimes stories like this make it to the frontpage of HN.
Yes, keep notes, write down those hard to remember commands somewhere so you can look them up later.
reaction: agreed. best practice and known as such for a long time
I write notes in a plain text file for every project I work on. As I start to see things accumulate around a particular tool, technology or service (or any other common or cross-cutting concern), I eventually carve those note portions out of my per-project notes, clean them up and merge them into a notes file dedicated to that thing.
I also look for portions of my notes worth extracting and transforming into executable scripts, complete with variables or templates where makes sense.
Plain text notes are also easy to search, version and replicate around. Can upgrade some to Markdown or another structured text format where yields net value. Rinse and repeat.
These habits yield increasing ROIs over one's life and career.
But of course you'd have to have bought into the Emacs ecosystem. Then again, Org-Mode may be a good first step!
Also, Elegant[1] is an attractive and simple config. It would probably be worth packaging it or something very similar up with CUA bindings and marketing it as just a standalone notetaking app with Emacs just being an implementation detail.
1) Loads in under 5 seconds
2) Is searchable, and can hyperlink to other entries
3) Syncs across devices
The app that I'm using is Joplin. Open source and you can use it in any platform
This is mostly to facilitate daily updates in lieu of stand ups.
Another thing I do along side my todo.txt is log important team changes, team switches, people encounters, side projects and any major project milestones that might be useful to point out in my 6 month reviews.
It's really amazing to search back and find links to things you did months ago when search won't pick it up.