About

Link to Repository

Why This Exists

1. Preservation

“He was going to live forever, or die in the attempt.”
— Joseph Heller, Catch-22

Are all sunk costs fallacies?

It feels incredibly wasteful to learn something and have my notes and memory atrophy after spending the time and effort; so I spend more time and effort on preserving them.

Also, it forces me to explain things to myself, which is good for learning.

2. Open Knowledge

Most organizations with the power to share academic knowledge prioritize selling over sharing, but that doesn’t mean individuals should be apathetic.

\frac{ \text{Ends} }{ \text{Means} } \lt \frac{ \text{Means} }{ \text{Ends} }

3. It’s Fun

It’s fun to do personal librarianship and have the right information in the right place. I like how the continuous improvement of this project allows me to reflect on my learning and myself, rather than just forgetting it all.

Workflow & Architecture

A. Markdown

I take my notes in plaintext (Markdown) during lecture.

In unrelated news, the source of the incessant click-clacking keyboard driving you insane during lecture has yet to be found.

When I want to upload my note(s) to this GitLab repository, I just add them to a folder, like so:

|-cs1300
|--index.md
|--01 - Formal Logic.md
|--02 - Propositional Logic.md
|--etc...
|-cs1400
|--etc...
|-phl2020
|--etc...

B. Conversion

The daemon.sh script can be run with ./daemon.sh, and it’s essentially a wrapper for pandoc that does parallel and selective processing.

Aside: Additional info

daemon.sh has two states:

  1. Running: Any Markdown files that are edited get converted into HTML.
    • Script starts in this state.
  1. Cleanup: All files are converted. <style> tags are replaced with a <link> pointing to a shared style.min.css.
    • Script enters this state when being killed (CTRL+C)

Notedaemon.sh can also be run in oneshot mode with ./daemon.sh -o, where it just does the cleanup process.

Tools Used

Gentoo Dependencies

Aside — All of these dependencies are defined in the CI config, I just have to install these dependencies on my personal devices because I don’t feel like maintaining an ebuild.


  1. Since minify isn’t in the Portage tree, I just built it from source and added ~/go/bin to my $PATH.↩︎