My note-taking tools

Here are my notes.

I only have online notes for a few classes. The most thorough notes are for my physics classes. I think the notes themselves are pretty interesting, but here I want to talk more about how they’re presented.

My notes are just a flat collection of pages, manually linked together. I don’t use anything clever like roam or logseq, just a folder that currently has 99 text files in it. I edit them mostly in Text Edit. The flat structure was originally out of laziness but turned out to be a good idea. I have lots of pages that don’t fit squarely into one class or one category. For example, my page on the Fourier transform appears both under differential equations and vibrations and waves.

Each page is generated by my fork of jemdoc, an ancient python script written by some math graduate student. It compiles what is basically markdown to html, with an added menu. The script works by applying a million regex substitutions one after the other, and because of this is extremely slow. But it works.™

The only reason I use jemdoc is because it’s a single python file with no dependencies, so when things break I can fix them.

I modified jemdoc to use KaTeX, a TeX math formatting library written in JS. The cool thing about KaTeX as compared to MathJax is that you can run it server side and generate HTML and MathML without ever having to send a big JS script to the client. As a nice benefit, this means that my site works in just about any browser, including IE 8 (as shown).

Another cool thing I figured out was how to make nice TiKZ diagrams on the web:

I write each of these diagrams in a .tikz file, which then get a bit of TeX boilerplate added, and compiled to .dvi by LuaTeX. Then I use dvisvgm to convert that to an SVG, which is copied to the output directory. dvisvgm actually even supports animations, so you could use this to make nice interactive vector graphics (although I haven’t gotten to that yet).

lualatex -halt-on-error --output-format=dvi whatever.tex
dvisvgm --no-fonts -j --scale=1.5,1.5 whatever

I then use entr to rerun make when anything changes, and live-server to auto-refresh my browser, which gives me a live preview of whatever I’m working on. All in all it ends up being a pretty convenient way to write. The turnaround time is faster than LaTeX, the result is lighter and easier to share than PDFs, and the visual quality is comparable.

As for the educational value… I’m not sure. There’s no doubt that these help me study. I usually write these notes around a week after learning the material, so they’re basically a distillation of what I found most difficult/interesting. This makes them much more useful than reviewing lecture notes or online resources. The downside is I put a lot of time into these, much more time than I would just taking notes in class. Maybe the opportunity cost isn’t worth the gain, and maybe there’s a more efficient way I could be doing this; but for now I think my notes site is both fun to make and a cool way to look back on what I’ve learned in a class.

One thought...

  1. Han Upar says:

    Very cool! This is a wonderful way to take notes 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *