My Note-Taking Setup

Throughout my time in High School and Uni, I've toyed with many note-taking setups. From pen-and-paper, to digital solutions like OneNote and Notion. I think I've finally landed on the ultimate setup. In short, use Visual Studio Code to author markdown files, and use GitHub as version control / notes hosting / syncing between devices.

VS Code

As a lot of the notes I take contain complex mathematical equations and code examples, there are various extensions I've installed to aide with this process:

Workflow

My typical workflow for taking notes for a new project/course
  1. Create a private GitHub repository and clone onto local computer
  2. Open with VS Code
  3. Create the following directory structure
    
        /docs   # This will contain compiled HTML files, to be hosted on GitHub pages
            /assets # This will contain all images for the html files
        /notes  # This will contain raw Markdown files, that can be converted to HTML using Markdown + Math
            /assets # This will contain all images for the Markdown files
    
            
  4. Author markdown in the /docs directory and compile to Markdown using the Ctrl+k, "," command implemented by Markdown+Math
  5. (Optional) move the .html files and all asset files (e.g. images, linked PDFs) to the docs directory if you want them to be deployed. You can add this shortcut to your bash by adding the following line to your ~/.bashrc file.
    alias update="cp *.html ../docs/ 2> /dev/null ; cp assets/ ../docs/ -r; "
    This command writes STDERR of the cp command to /dev/null as we don't want it to warn if the cp command cannot find any HTML files to copy.

Markdown All in One

This extension adds Quality of Life improvements to the markdown authoring process including: Auto-inserting bullet points when you press enter Allowing you to automatically format Markdown (including tables!) using Alt + Shift + F

Markdown + Math

This extension is really the secret sauce - it achieves two key things: A single source of truth for rendering LaTeX I used to use GitHub's built-in LaTeX rendering, and that would randomly break, requiring hacky fixes Convert to HTML (so that the content can be hosted on GitHub pages.)