diff options
Diffstat (limited to 'project')
-rw-r--r-- | project/assets/img/deckconv_screenshot.png | bin | 0 -> 38859 bytes | |||
-rw-r--r-- | project/assets/img/gdeckconv_screenshot.png | bin | 0 -> 14297 bytes | |||
-rw-r--r-- | project/complexity.yml | 1 | ||||
-rw-r--r-- | project/context/articles.json | 6 | ||||
-rw-r--r-- | project/templates/deckconv.html | 67 |
5 files changed, 74 insertions, 0 deletions
diff --git a/project/assets/img/deckconv_screenshot.png b/project/assets/img/deckconv_screenshot.png Binary files differnew file mode 100644 index 0000000..b6c26f7 --- /dev/null +++ b/project/assets/img/deckconv_screenshot.png diff --git a/project/assets/img/gdeckconv_screenshot.png b/project/assets/img/gdeckconv_screenshot.png Binary files differnew file mode 100644 index 0000000..e55242b --- /dev/null +++ b/project/assets/img/gdeckconv_screenshot.png diff --git a/project/complexity.yml b/project/complexity.yml index 6b5d98a..2a93b73 100644 --- a/project/complexity.yml +++ b/project/complexity.yml @@ -12,6 +12,7 @@ output_dir: "../www" unexpanded_templates: - "about.html" - "adapad.html" + - "deckconv.html" - "fltkada.html" - "grasp.html" - "integral.html" diff --git a/project/context/articles.json b/project/context/articles.json index ba5af70..c7dccaf 100644 --- a/project/context/articles.json +++ b/project/context/articles.json @@ -1,6 +1,12 @@ [ { + "title": "Flashcard Deck Converter", + "anchor": "/deckconv.html", + "taglist": ["application", "programming"], + "postdate": "11/11/2021" + }, + { "title": "Sydney Rail Maps", "anchor": "/sydneyrail.html", "taglist": ["maps", "transport"], diff --git a/project/templates/deckconv.html b/project/templates/deckconv.html new file mode 100644 index 0000000..688346c --- /dev/null +++ b/project/templates/deckconv.html @@ -0,0 +1,67 @@ + +{% extends "base.html" %} + + + +{% block title %}Flashcard Deck Converter{% endblock %} + + + +{% block content %} + +<h4>Flashcard Deck Converter</h4> + +<p>Git repository: <a href="/cgi-bin/cgit.cgi/fresh-deck">Link</a></p> + + +<h5>11/11/2021</h5> + +<p>Anki is a sophisticated spaced repetition flashcard program. It also has a codebase going on 15 +years old made of Python and Rust, dependencies that make heavy use of Go, and a +<a href="https://github.com/ankidroid/Anki-Android/wiki/Database-Structure" class="external"> +convoluted deck format</a>, all to produce a desktop program 100-140MB in size depending on +operating system. In short? It's a mess. But since it has been around for so long and is currently +the most used open source flashcard program it is also the one with the most decks people have made +for it.</p> + +<p>The nearest competitor to Anki in my assessment is Fresh Memory. It is a much more compact and +tidy project written in C++ using Qt with similar functionality for spaced reptition using +arbitrarily sided flashcards. On the <a href="https://en.wikipedia.org/wiki/List_of_flashcard_software" +class="external">list of what's available</a> the only other open source options are Mnemosyne, +another massive mess of Python, or OpenCards, which uses Microsoft Powerpoint of all things for the +deck format. Unfortunately Fresh Memory was abandoned shortly after it was open sourced and has a +whole host of minor issues that need working on. I'll get around to doing that eventually.</p> + +<p>In the meantime, here's a utility that converts Anki .apkg decks to Fresh Memory .fmd decks. +Oh, and it can also output to comma separated value format too if you find that more useful. Due to +differences between formats some information does not carry over very well, but for most decks it +should still perform adequately.</p> + +<div class="figure"> + <img src="/img/deckconv_screenshot.png" + alt="A screenshot of the command line deck converter" + height="573" + width="824" /> + <div class="figcaption">Command line utility</div> +</div> + +<p>Aside from the command line there's also a simple graphical interfaces put together using FLTK. +Not the most pretty, but it works.</p> + +<div class="figure"> + <img src="/img/gdeckconv_screenshot.png" + alt="A screenshot of the graphical interface to the deck converter" + height="301" + width="502" /> + <div class="figcaption">Graphical utility</div> +</div> + +<p>Anyone trying to compile this utility or otherwise taking a quick peek at the code or readme may +note there are quite a few dependencies involved. This is due to Anki's aforementioned convoluted +deck format. Digging down through layers of JSON inside an SQLite database inside a zipfile is a +little bothersome. Dealing with Fresh Memory's current XML based deck format is a walk in the park +by comparison, even if it is more unwieldy due to any deck with media not being all one file.</p> + +{% endblock %} + + |