Code Monkey home page Code Monkey logo

fuzzy-anki's Introduction

Fuzzy-Anki

A web-browser-based browser for Anki decks and review logs.

What is this? This does two things: (1) view decks, and (2) analyze review logs, both in the context of Anki, the spaced-repetition flashcard application.

Browse deck contents? The really valuable thing about Anki is the culture of deck-sharing grown around it. Currently, the standard way to check out the contents of a deck seems to be to open it in the Anki computer-based application's built-in deck browser, which presents you with a microscope-level view of the contents.

In contrast, this deck browser runs in your web browser. When you visit http://fasiha.github.io/fuzzy-anki/, your browser downloads the entire JavaScript application. You then either point Fuzzy-Anki to an Anki deck available online or "upload" one from your local disk. (Upload is in "quotes" here because the deck isn't being sent to any server on the internet.)

Don't yet have an Anki deck of interest? I'm convinced you will be able to find several.

Analyze review logs? Anki stores your review performance in a SQLite database. As you can imagine, after months and years, this database becomes very valuable (and we're all glad Anki does cloud-based backup and sync well). While some are happy with Anki's built-in tools for analyzing and visualizing this performance data, it is always nice to have data at your fingertips, ready for your own investigations.

Upload your Anki collections database (usually found in Documents/Anki/<your name>/collection.anki2) to convert it to a CSV spreadsheet, ready to import into Excel-like applications or your data analysis software of choice. (Since I prefer Javascript, the data will be available in a global variable, revlogTable.)

You can also select decks and view visualizations of your progress. Currently, there are four interactive graphs generated. See the Wiki for the juicy, colorful details.

Why, specifically? Nayr posted a community service announcement about a shared Anki deck he made called Nayr's Japanese Core5000, based on A Frequency Dictionary of Japanese by Yukio Tono, Makoto Yamazaki, and Kikuo Maekawa (2013, names in the Western style), which seemed to be getting some positive buzz on the Koohii forum. Ankiweb showed three facts of the thousand(s) on its shared page which did indeed seem interesting, but I wanted to view the other entries in a more wholesale and wholesome way than Anki's deck browser or a spreadsheet program.

For a while, if you uploaded that initial deck, Fuzzy-Anki would recognize it and perform some data processing to enhance its display (see my Koohii forum post for the sordid details). Now that processing is disabled since those edits have been rolled back into the original deck. The world turns, things come to pass.

As for review logs, Koohii forum-goer yogert909 brought into sharp focus the need for Anki review export and analysis in this post.

Can I browse any deck that I have on my computer? Yes. You can have Anki export one of your decks as an APKG file, which you can upload to Fuzzy-Anki. Since this is entirely a client-side application, you're not uploading your deck to anyone's server, it's all contained on your device.

On the subject of privacy, if you provide Fuzzy-Anki with a URL of an online deck, then whoever is hosting that deck will have a log of your browser downloading it.

What is Anki? It's a major player in the spaced repetition software space. Its defining features may include: written in Python, uses PyQT for GUI and SQLite for databasing, a large user-base and active content and plug-in creation community, cloud backup and sync, and cloud quizzing (but as of now no deck importing).

And for introductions to SRS, see paeans by Josh Foer, Khatzumoto, Samuel Alexander, Gwern, Sartak, Derek Sivers, and a profile of SuperMemo's creator in Wired.

Why a client-side JavaScript browser app? Browsers have been the best platform for graphical display of information for some years now, at least since the mid-2000s.

Programmers building custom, stand-alone, native, GUI-based data display applications have to work very hard to make something that they can quickly prototype and that their users can heavily customize. In contrast, with a browser-based application, a programmer can change the software on the server (in this case, one JavaScript file hosted on GitHub.io) for all users to see the new version. And then those users can pop open a JavaScript console to browse the source code, understand the website's elements, and customize it in ways limited only by their programming-fu.

These users can be much more confident that their browsers will secure them against malicious code than they can of stand-alone applications. And they can expect surprisingly smooth, performant applications thanks to the immense resources web-centered entities like Google, the Mozilla Foundation, Apple, Microsoft have poured into making very efficient web browsers and JavaScript engines.

Acknowledgements This application uses

  • D3.js, by Mike Bostock and friends, for a mind-bending experience while mapping data to browser elements
  • sql.js, by Alon Zakai and friends, for a JavaScript version of SQLite through Emscripten goodness
  • zlib.js, by Imaya Yuta and friends, for JavaScript-based ZIP decompression
  • XRegExp, by Steven Levithan and friends, for Unicode-aware regular expression support in JavaScript (regular expressions: they search text)
  • C3.js, by Masayuki Tanaka and friends, a plot-oriented wrapper to D3.js (what LaTeX is to TeX, what C is to assembly)
  • underscore.js, by Jeremy Ashkenas and friends, for functional Javascript candy
  • nice-json2csv, by Matteo Figus and friend: what the name says (edited for browser and Excel CSV style)
  • JQuery, for an embarrassingly small amount of things
  • CORS-Anywhere, not a software library but an internet service, allowing your browser to download decks not hosted by GitHub.io

Because of these fine building blocks, Fuzzy-Anki took a handful of hours to throw together. Many, many thanks to their makers, and to the other makers before them who inspired them to make these.

Koohii Forum-goers, especially Vempele, have offered much in the way of beta-testing. Thank you!

Legal This software is in the public domain. See LICENSE for the Unlicense.

fuzzy-anki's People

Contributors

doplgangr avatar fasiha avatar skeeto avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.