diff --git a/_drafts/2020-08-23-Notetaking-with-LaTeX.md b/_drafts/2020-08-23-Notetaking-with-LaTeX.md new file mode 100644 index 0000000..9eb9360 --- /dev/null +++ b/_drafts/2020-08-23-Notetaking-with-LaTeX.md @@ -0,0 +1,51 @@ +--- +layout: page +title: "Taking notes with Markdown and LaTeX" +description: "Using a lot of tech to replace a piece of paper" +date: 2020-08-23 10:30:00 +categories: pandoc latex bazel +redirect_from: + - /post/68df02l4/ + - /68df02l4/ +--- + +Recently, I have been on a bit of a mission to improve my school workflow with software. Over the past month, I have built a cleaner [student portal](https://github.com/Ewpratten/student_portal#unofficial-tvdsb-student-portal-webapp) for my school and [written a tool](https://github.com/Ewpratten/timeandplace-api#timeandplace-api--cli-application) for automating in-class attendance. Alongside working on these projects, I have also been refining my notetaking system for school. + +Since 9th grade, I have been taking notes in a private GitHub repository in markdown, and have been compiling them to HTML using a makefile for each course. While this system has worked ok, It has been far from perfect. Recently, I have been working very hard to give this system a much-needed upgrade. Here is the new tech stack: + + - The [Bazel buildsystem](https://bazel.build) + - [Markdown](https://en.wikipedia.org/wiki/Markdown) + - [LaTeX](https://en.wikipedia.org/wiki/LaTeX) + - [MathJax](https://www.mathjax.org/) + - [Beamer](https://ctan.org/pkg/beamer) + - [Tikz & PGF](https://ctan.org/pkg/pgf) + - [Pandoc](https://pandoc.org/) + - [Zathura](https://pwmt.org/projects/zathura/) + - [Starlark](https://docs.bazel.build/versions/master/skylark/language.html) + - [Github Actions](https://github.com/features/actions) CI + +The idea is that every course I take becomes its own Bazel package, with subpackages for things like assignments, papers, notes, and presentations. I can compile everything just by running the command `bazel build //:all`. All builds are cached using Bazel's build caching system, so when I run the command to compile my notes (I love saying that), I only end up compiling things that have changed since the last run. The setup for all of this is quite simple. All that is really needed is a Bazel workspace with the [`bazel_pandoc`](https://github.com/ProdriveTechnologies/bazel-pandoc) rules loaded (although I have opted to use some custom [genrules](https://docs.bazel.build/versions/master/be/general.html#genrule) instead). Using these rules, markdown files can be concatenated, and compiled into a PDF. I also use a modified version of the [Eisvogel](https://github.com/Wandmalfarbe/pandoc-latex-template) Pandoc template to make all my documents look a little neater. + +In terms of workflow, I write all my notes as markdown files with [embedded LaTeX](https://pandoc.org/MANUAL.html#math) for any equations and charts I may need. All of this is done inside of VSCode, and I have a custom `tasks.json` file that lets me press Ctrl + Shift + b to re-compile whatever I am currently working on. I also keep Zathura open in a window to the side for a nearly-live preview system. + + + +![](/assets/images/hs_notes_workflow.png) +*A screenshot of my workspace* + +Now, the question came up of *"how do you easily distribute notes and assignments to classmates and professors?"*. That question got me stuck for a while, but here is the system I have come up with: + + 1. I write an assignment + 2. I push it to the private GitHub repository + 3. GitHub Actions picks up the deployment with a custom build script + 4. Every document is built into a PDF, and packaged with a directory listing generated by [`tree -H`](http://mama.indstate.edu/users/ice/tree/tree.1.html#XML/JSON/HTML%20OPTIONS) + 5. Everything is pushed to a subdomain on my website via GitHub pages + 6. I can share documents via URL to anyone + +This is almost entirely accomplished by a shell script and a custom CI script. + + + +--- + +If you have any questions about this system, want me to write another post about it, or would like me to walk you through setting up a notes workspace of your own, [contact me](/about) \ No newline at end of file diff --git a/about.md b/about.md index 2f97207..b2c14bc 100644 --- a/about.md +++ b/about.md @@ -8,11 +8,9 @@ backing_scalar: "height:90%;" {{site.about}} ## Chat with me -If you want to contact me, you can do so via email (ewpratten @ \). +If you want to contact me, you can do so via email to `ewpratten@`. -I use PGP keys (mt keys and history are listed below), so feel free to sign your messages via GPG. - -My current PGP key fingerprint is: `3D98 479A DE42 85A3 21F6 6DE4 DAB2 7917 6352 D880`. +I use PGP keys (mt keys and history are listed below), so feel free to sign your messages via GPG. My current PGP key fingerprint is: `3D98 479A DE42 85A3 21F6 6DE4 DAB2 7917 6352 D880`. ``` pub rsa4096/0xDAB279176352D880 2019-08-10 [SC] Key fingerprint = 3D98 479A DE42 85A3 21F6 6DE4 DAB2 7917 6352 D880 diff --git a/assets/images/hs_notes_workflow.png b/assets/images/hs_notes_workflow.png new file mode 100644 index 0000000..8cfba14 Binary files /dev/null and b/assets/images/hs_notes_workflow.png differ