I am learning programming (/languages) , new things and I think that I should take notes so that i can quickly revise/remember things if i forget.
Are cheatsheets helpful? How should i do it? Any suggestions?
Features i find are actually helpful:
- keep a link to the source where you found the information summarized in the note. A url, a DOI and an equation number, whatever.
- when you can, physically recopy the data in the note. Retype the code, write ideas out long-form.
- ELI5 (explain it like i’m five) or up-goer [0] the contents of a collection of notes. Or at least write summaries or abstracts about a collection of them. Recapitulating information instead of blindly saving it makes you digest it better.
- Rubber ducking works. Go pester your partner, your pet, the potted plant, whatever.
https://github.com/nikitavoloboev/knowledge/blob/master/SUMM...
On mobile, I take quick notes with Telegram's Saved Messages.
This kind of question has been asked many times before on HN and elsewhere. Here are some links I collected around note/wiki management.
https://wiki.nikitavoloboev.xyz/other/wiki-workflow#links
Oh and for effortless sharing of notes, I use my tool gitupdate to automatically push changes made to my folder of notes. i.e. here is a commit where I add this very thread to my wiki under `wiki-workflow.md` topic. To do it, I pressed two buttons (`+v) (https://github.com/nikitavoloboev/dotfiles/blob/194d8453b2af...) which runs a KM macro (https://i.imgur.com/fmXgUYv.png).
https://github.com/nikitavoloboev/knowledge/commit/cfaab75dd...
- For programming, you can use org-babel to write short snippets that you can then run directly in your note (a la IPython notebook, but for pretty much any language). Super-useful if you are learning a new programming language. Alternatively, you can add an org link to specific files/functions inside a code base.
- To promote recall by generating flashcards directly from your notes, add anki-editor to sync with Anki, or org-drill. With Anki you can do reviews from your phone.
- To quickly incorporate a screenshots, use M-x org-download-screenshot (useful while taking notes off an online video or presentation)
- To refer to sources: file links (e.g., PDFs) and web links work out of the box; for academic papers, use org-ref and BibTeX files; if you are on macOS, you can also link to emails (useful to keep track of projects); I am still figuring out the synchronizations with PDF annotations.
- If you need math equations, use LaTeX snippets inside your org file and org-fragtog to automatically render them inside your notes (without having to export/compile the entire file as LaTeX).
- Use ag or pt to search through all your notes using fuzzy searching.
Notes are just text files all in the same directory, so you can use git/Dropbox/Google Drive to sync. If you use Dropbox and have an Android phone you can use Orgzly to edit your notes. The most useful feature is that from any app you can "Share" with Orgzly, and add it to one of your notes (I use it to add notes related to podcasts).
I concur with other commenters about making your note taking as frictionless as possible (I have Emacs opened all the time, so org-roam was an easy choice for me)
1. The Cornell note-taking system
First, divide the page into three parts: one narrow column on the left side, one wide column on the right side, and one section at the bottom part of the page.
Write your notes in the right column of the page. That’s your note-taking column.
As soon as possible after the lecture is over, use the left column to create questions for every part of the notes. That’s your cue column.
When this task is completed, write a short summary in the bottom section of each page.
That’s it! Congratulations!
2. T-notes method
Just divide a page into 2 parts. One part is for writing down terms, equations, formulas and theories. The other part is for definitions, examples, evidence and proof.
3. Mind map method
Write down the main idea in the center of the page. Then draw “branches” every time you need to add a sub-topic or a detail to your scheme. At the end of the lecture you’ll have a detailed flow chart of the content you listened to.
4. Flow note-taking method
A flow-based note-taking method is the most effective way to take notes if you are a fast learner.
The principle of the flow note-taking technique is to represent the ideas you hear using textual and visual information recorded on the page.
The flow note-taking method includes a lot of tables, schemes, arrows, points, offshoots – anything that helps you to represent your “mental model.”
More details and examples are here https://ivypanda.com/blog/everything-you-need-to-know-about-...
This and many more tricks were learned by reading "Make it Stick: The Science of Successful Learning" -- https://www.amazon.com/Make-Stick-Science-Successful-Learnin...
Consider taking notes by hand instead of using a computer. I found one study from some time ago that suggested handwritten notes are better: https://journals.sagepub.com/doi/abs/10.1177/095679761452458... I personally find taking notes by hand better for me. Since I can't find any studies replicating the result of the one I cited, I suggest trying it out and see if it helps!
When I was taking notes for class lectures, I would split sections of notes by date, titling subsections in a given day as appropriate. This sort of chunking will help you remember the notes better, rather than writing in one continuous stream. If you're taking online courses to learn some programming languages, I think this method will work! If not, I would suggest keeping a notebook per programming language and just organize your notes by day.
When taking notes, you do NOT want to copy what's on screen or what's being talked about verbatim. You want to capture just the highlights, so that they'll jog your memory later. I generally write tons of bullet points instead of complete sentences, and I end up with more of an outline at the end than paragraphs of information. If you need the finer details, it's better to go back and review the source material itself.
Once you have your notes, you can review them by going day-by-day. For your case, if you need to refer to previous sections quickly, consider bookmarking them with sticky notes. (Not sure how you would do this digitally.) You might be surprised to find that the act of writing down the notes was enough to keep them in your head, and you may not actually need to review your notes often.
Hope this helps!
If you're into apple ecosystem, nothing beats Apple Notes - seamless access right from the spotlight search, you can paste images or files right into notes (surprisingly few apps have that feature - it's a must for me), to-do lists that just work, cloud-sync, so on. And it all comes built-in, for free. I've tried all major alternatives and I always come back.
Paper notebook for daily plans and short-term notes. I don't expect to refer back to those notes in the distant future, so I choose to optimize for writing experience, and nothing I've tried beats paper.
A personal blog for anything worth sharing. In my case it's a bunch of markdown files in a static site generator.
As other commenters have pointed out, don't worry too much about sticking obsessively to one system. Just try one out, and if it works well (enough) for you stick to it.
There are several old threads that are pretty helpful covering this topic as well:
https://news.ycombinator.com/item?id=20101911
https://news.ycombinator.com/item?id=21419478
https://news.ycombinator.com/item?id=22473209
https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
[Creation date] [Subject]
So if I'm taking notes on, for example, Regex use in Python, the text file is titled:
2020-07-15 Python Regex
The notes themselves are loosely formatted with markdown, including code blocks for code.
I have about 3k of these files at this point, all in one folder and easily searchable.
I've found this is the best way to take short notes, for me at least. Even if you can't remember what you would have titled a note, it's always pretty easy to remember about how long ago you took it.
There are a variety of text editors with interfaces that designed for this style of note taking, displaying the text files in a searchable list with syntax highlighting for Markdown and the internal code blocks in the notes. Here are some (on Mac, but there are others):
- Notational Velocity (ancient and outdated)
- nvAlt (old)
- nvUltra (in eternal closed beta)
- Ulysses
Currently I use Ulysses and it works pretty well. The syntax highlighting for Markdown and internal code blocks is decent, with a great UI. It does tend to get bogged down with super long files, so you need to break those up.
Before this system I tried many alternatives over many years. But eventually every program becomes outdated, and then you are dealing with incompatible file formats etc. The good thing about this system is that in the end it's just a folder of text files, and there will probably always be good text editors.
- It suggests appropriate tags you. #python etc. This lets you review things by topic.
- Tags are inlined in your notes. You don't have to create them first
- If you want to publish some of these notes, you just add #pub
- You can also publish notebooks (collections of notes). You can think of it as lightweight super fast blogging. This will help you get a following on a subject, without having to spend a lot of time doing it.
Examples: SaaS Pricing https://histre.com/notebooks/03lt8gml/saas-pricing/ ; New Project https://histre.com/pub/notebooks/x6rfhtd5/links-for-starting...
- Highlight sections in the web page you like to review later
I tried replacing it with onenote, chery tree and others. It's just not the same.
Things I write down by hand seem to be burned in my brain much easier than when I mindlessly type them on the keyboard.
Learn what a Zettelkasten (https://en.wikipedia.org/wiki/Zettelkasten) is, how it can help you and make yourself familiar with its concept.
You can always refer to the flash cards like regular notes, but by memorizing the information instead of just jotting it down you greatly increase the speed at which you learn new things.
Most people's notes have two phases [0]:
1) Jot-down
2) Organize
In the jot-down phase, you write down thoughts and gather any raw resources that are useful to you (code snippets, links, etc.). These notes are messy.
In the organize phase, you pull notes from your jot-down that are worth keeping and refine/categorize them. These become your reference notes.
Usually people use two different tools - one for jot-down and one for organize. This leads to lots of copy-paste and things being more difficult to find later. Working on a tool [1] for fast jot-down and organize in one place,
--
[0] over 90% of people surveyed used Apple Notes, Google Keep, or raw text files for their notes.
Try to avoid getting into rote learning. I learned that way as a kid, I'll find myself writing squiggly notes just because somehow it makes me remember stuff the act of writing something.
For coding stuff I don't really have notes about "coding" more on random neat tricks/concepts(like about Git/Systemd), which means store them somewhere eg. an app that has a global search like OneNote/Evernote/Notes(Mac).
For general fast learning I recommend crash courses on YouTube eg. by Traversy Media/others.
Also using sandboxes where some code is already setup so you can have something to work from.
Generally though I think practice is what will make it stick and personal desire to achieve/build something that you want.
I find I memorise concepts well when there’s some kind of physicality to them, and I’ve therefore repeatedly gone for the “serial killer wall” method of note taking - in my case, it tends to be multiple A4 sheets with handwritten notes or printed reference sheets plastered on every visible surface around my workspace, using cork pinboards for more space, with an arrangement of information that makes sense to me - I like a four coloured biro for splitting out either dimensions or topics of information, and sharpie or string to link disconnected areas together. This translates well for digital applications, like coding and electronic engineering, physical applications, and more abstract learning efforts, like cramming a masters in physics, or learning a language.
Yes, you can replicate this with a wiki or hyperlinked whatever, and I sometimes do for pocket guides, but being able to fetch information at a glance is key to making that recall just happen without looking, for me.
The structuring of the notes takes an effort in understanding, in creating a landscape of interconnected information - and the structure of the notes becomes the physical representation of the structure of the information framework. I then, later, when referring to some part of some knowledge acquired this way, find my mind’s eye using that same structure to identify the relevant information.
Anyway. It really is whatever works for you, and trial and error will get you there - for me, it’s paper, pen, and somewhere to put it all.
1) Use paper and pencil/pen to write down everything. You can use a computer based tool later for transcribing it into electronic form(weekly/monthly). Studies have shown that writing by hand engages the whole mind/body and helps in retention.
2) Use a simple system like the "Cornell Note-taking System"(http://lsc.cornell.edu/study-skills/cornell-note-taking-syst...) or anything else of your choice. It should not be too complex so as not to unnecessarily distract from the object of the study.
3) As you take the notes mix both textual and graphical methods to express and amplify the idea/concept as required. The key is to use whatever feels natural to express clarity and facilitate understanding. Use precise mathematical notation/graphs as much as possible eg; Venn diagrams, Tree diagrams, X-Y co-ordinates, Statistical graphs etc (the book Mathematical Notation: A Guide for Engineers and Scientists is helpful to gain fluency in mathematical notation). I suggest writing text on the vertical left half-side of the page and pictures/graphs on the other half similar to how some Maths texts show their graphs on the margin next to the text (think also "Literate Programming"). Take a look also at Leonardo da vinci's notebooks for inspiration.
- Links that I find interesting which I'd like to archive: https://bollu.github.io/todo.html
- Short pieces that are accessible to folks with background. This goes on the blog: https://bollu.github.io/. Visualizations of theorems, which are far scarcer than I like on the internet, also go up on the blog.
- Long form notes from books and courses goes into a notes repo where I write up stuff in latex: https://github.com/bollu/notes/blob/master/algebra/main.pdf [This is an example of the notes I've been taking while attending AGITTOC: Algebraic geometry in the time of covid]. The latex file: https://github.com/bollu/notes/blob/master/algebra/main.tex
- The blog and links are powered by latex-enabled markdown. (i) blog https://github.com/bollu/bollu.github.io/blob/master/README.... (ii) todo: https://github.com/bollu/bollu.github.io/blob/master/todo.md
All of these tools are motivated by a principle of being fast and easy to edit; Otherwise, I literally can't take notes because it doesn't feel as fluid. So I have symlinks to README.md and todo.md in my home folder, and similarly for whatever course I am attending currently. I edit very little, I write down the idea I am interested in and then git push.
I feel this system works well for me. I'm able to go back and review ideas that I had seen before and polish them up. It's fast, easy to write, upload, and share.
I've tried using other elaborate methods [org-mode, evernote, ...] but none of them had the simplicity of:
1. Open a plaintext file, wherever you are [I am always in a position to open a plaintext file, whether from my IDE or from the command line]. 2. Start writing 3. $$$
So I strongly recommend some system that is as simple as "open a file and start writing".
Hope this hepls.
- Samsung Note device using an S-Pen to either draw diagrams, rough sketches, or jot notes and then later convert them to saved image files.
- Fountain pens and individual notebooks for meeting notes, book excerpts, quotes, etc. I find that writing down things and having no structure just leads to confusion and a mess of notes that's more time consuming to find when needed. Having sections or just dedicated pages for topics makes it manageable.
- Jotlin app for extensive note taking on a particular topic/interest that wouldn't fit neatly into a couple of handwritten pages.
- Apple Notes/Google Keep rarely but it does serve its purpose if there's nothing else available.
- I type faster than I write and when taking notes or highlighting captures from a book, Google Books has a very useful way of creating a doc file from everything highlighted: book page, page number, relevant highlighted section.
I've tried the whole Bullet Journal techniques and found that it's just an obsessive methodology of note taking with a steep learning curve, it didn't serve my purposes though and I don't knock it if others find it valuable.
He goes through study techniques and backs up their effectiveness by discussing research experiments conducted around them.
Chapter 3 is on academic reading and note taking. It's very good.
Penn recommends the read, recite, review method. @Yvonne_McQ comment gave you some really cool ways to do this like The Cornell note-taking system.
Penn's main point is your memory doesn’t work like a camera, so stop studying as if it did. He says you don’t reproduce information with your memory, you reconstruct it.
Penn also argues that repetition is not the most effective means of committing information to memory. Thinking is the key to memory so he says if you want to remember something, work on explaining it.
He cautions the reader with how we summarise. Not all summaries are equal. He gives an example by asking you to try summarise the story of batman the dark night. You could talk about Harvey Dent and the Joker being the pillars of good and evil and how Harvey becomes two face or you can summarise the film as 'Wealthy man assaults the mentally ill'.
Finally he says to treat everything your trying to learn like 50 shades of grey.
As in people picked up the book with an idea of what they want to get out if it before they started. They skiped over the content that didn't match what they were looking for. They extracted the good bits. When they put the book down it's the good bits they remembered.
Read, recite, review. Check out the Cornell note-taking system mentioned by Yvonne_McQ and Check out 'The psychology of effective studying' by Paul Penn.
The vast majority of my note-taking is in paper notebooks. I personally use a leuchterm notebook, zebra sarasta pens and a system of my own design that is similar to the "bullet journal" system but modified a bit to suit my needs a little better. I personally find if I'm attending a meeting, taking notes in a paper journal makes me more 'present' and able to concentrate than using a laptop (even though I've been using computers for ever, can touchtype fluently etc). I also find a paper system helps me with recall compared with typing. Obviously a lot of people prefer a digital format. I use a completely standard pen and notebook so all my notes and notebooks look exactly the same, and put every note on a separate page (eg if I have several meetings the notes each start on a separate page). I have also find this combination works well for ocr when I need to, so it's very easy for me to just take a snapshot of a page in my notebook if I need to send it to someone, put it in something like evernote or OneNote or whatever.
I second the comments a few people have made around retyping/rewriting notes etc. I find "curation" activities of this kind incredibly helpful as they are a forcing function to think again about things, helping me with recall and conceptual clarity. So would strongly recommend you try this.
//Couple of updates about process
Having said that I have in the past captured a Syntax file for a programming language I was learning e.g: https://github.com/harveytoro/TIL/blob/master/go/syntax.md
But more recently if I just want to refresh my knowledge on the syntax of a language I use: https://learnxinyminutes.com which has syntax cheatsheets for a lot of languages
I tried just writing things down free-form, making flashcards while I was in the lecture, drawing mind maps, drawing one continuous mind map that would be compressed over the weeks of the class.
They all had benefits and draw backs. Flash cards were kind of fiddly and distracting to make. Freeform notes were slightly disorganised.
Whatever I did, I found it helps. For note taking, the act of taking notes is more important than what remains at the end. Be honest, how often do you really go over your notes?
For things you absolutely have to know, I really do recommend flashcards. That said, I think they are quite difficult to produce when you are are learning something new. Flashcards aren't really for learning, they are for not forgetting.
Writing things down doesn’t aid my recall and distracts me from whatever is going on.
My goal is to memorialize important items and provide anchor points so that I can reconstruct memory or effectively use a reference source. It’s a system that works for me, but I’m not an attorney or someone who is pulling information from a person or some source that is gone forever once the conversation is over.
I would recommend not futzing around with apps. Come up with something that works on paper with pencil. Then if you need to, find an app. Productivity porn is a huge time suck.
I'm a little biased with this workflow because I wrote an iOS client that lets you manage notes as GitHub gists. If this flow sounds attractive you can check OctoNote out here: https://apps.apple.com/us/app/octonote/id1433164731
- data structures
- boolean
- array
- hash
- ...
- control flow - for
- if
- ...
- io - read/write
- ...
I use https://dendron.so to actually take my notes. Its a markdown based, hierarchical note-taking application built on top of VSCode (disclaimer - i'm the author)
- It's helpful to quickly get something out of your brain
- You can easily link related files together or use VScode search to find something. No need for a bunch of categories and nested folders.
I dont think cheatsheets are helpful personally. Unless you are just talking about syntax.
Also specific methods might be worth a look down the line, but initially I dont think it makes sense.
1. Long term notes - in your website - non blog - just a website, keep them small, cheatsheet but long term.
2. Short term notes - where you dump your stuff into - for this you can use tiddlywiki.
Quick tutorial: https://www.youtube.com/watch?v=bzZ09dAbLEE
Everything else goes into Notion.
Maybe your notes will suck and you'll never read them, but it will still help to have written them.
Maybe you'll read your notes and think they suck, and you'll know what you wish you'd written.
I don't think you can "remember everything in notes" in a one-shot process, though.
I don’t take any notes until the end of the session, when I do an informal debriefing to summarize what I learned, which isn’t necessarily what I set out to learn.
Or, to abuse language horribly, rubber duck like they're five.
This forces you to not only remember, but understand, what you're trying to learn.
It's the reason plain pencil and sheet of paper may be much more beneficial if we focus on the goal but not on the path.
----
#!/bin/bash
## create personal log file for tracking tasks
vi logfile_$(date +%m%d%y_%j)
---------
This creates a logfile date stamped so I can reference what I was doing that day.
It's just incredible how much can be done with it.