# why I found `org-drill` recently for `emacs`. This helped me realise that **active recall** and **spaced repetition** can be done out of a text-file. This is good news for me because I already spend a lot of time in `emacs` for taking my /Turing-complete notes/: [https://abaj.ai](https://abaj.ai). Plug aside, I started to realise that some of my favourite programs are based on client-server architectures: - neoVim and $\LaTeX{}$ - org files and Hugo Well perhaps not client-server per-se, but definitely _compiled_: - .c files and gcc It is the asymmetry that is excellent -- from waiting for compilation (slow) to having a beautiful output that is often blazingly fast. # architecture I already maintain [tools.abaj.ai](tools.abaj.ai) and [wiki.abaj.ai](wiki.abaj.ai) which have Go backends. `pm2` keeps them running on the main `abaj.ai` server. I also have experience with `SvelteKit`; having had built the [mathmap](https://abaj8494.github.io/math-map/) and the [shrine](https://abaj8494.github.io/shrine/). As such, I have chosen this for the front-end. Considering the CORS dependency of this app, a Github pages static site is not going to work for this app. ## use-case the use-case will be to mimic (loosely) the format of the `org-drill` source files: ``` #+STARTUP: showall * Spanish questions ** Greetings *** Greeting 1 :drill: :PROPERTIES: :ID: 9C4A6789-50AB-4CCB-B2A5-83E588C4E45F :END: Translate into Spanish: What is your name? (formal) **** Answer ¿Cómo se llama usted? **** Notes llamar = to be named ``` I shall aim to populate 5 or so `.org` files with: 1. `math.org` 2. `soft-eng.org` 3. `machine-learning.org` 4. `quant.org` 5. `stats.org` which will reside in this repository. after having updated my cards as required, I would then compile my site with `hugo server ...`, so as to essentially copy out this submoduled repository into the `static` folder, and then from there run the usual `rsync` to copy everything over to `abaj.ai` ultimately, the front-end (which will just be a compiled `index.html` with corresponding `*.js` and `*.css` files) will be placed in a `/docs` folder. the backend should sit in the backend branch and will be checked out on the Vultr VPS for the front-end to interact with. I am expecting to build this backend in Go. # design ultimately the confusing part will be implementing the spaced-repetition algorithm and exposing a good, useful API to the front-end. If we consider that I just want to keep adding questions to org-files with $\LaTeX{}$ syntax and potentially even tikz syntax, how can we create a persistent back-end that keeps track of the progress of each question and allows robust pause/play of active recall sessions? I would also obviously like to select a current deck out of a drop-down menu, and have the entire web-app be mobile friendly. # features because my webserver already contains a robust `tikzjax.js` implementation with UML diagram and algorithms2e package support, we can just load that up in the header of the `index.html`.