Skip to main content

Memium

Project description

Memium

Open in Dev Container PyPI Python Version

When you have to stop and look things up, it breaks up your flow. Adding this knowledge to long-term memory builds fluency, and being fluent at something makes it much more fun! The faster you can get from crawling to running, the more enjoyable it is.

Unfortunately, we forget most of what we read, even stuff we care about.

It turns out that if you ask questions of the texts you read, and ask those questions of yourself in the future, you learn much more! But writing questions and quizzing yourself can feel quite mechanical. What if you wrote questions as part of your notes, and then your computer could quiz you in the future? That's the purpose of Memium. It extracts questions from your notes like

Q. Why can spaced repetition result in more enjoyable learning?
A. It enables faster bootstrapping to proficiency, which is more fun!

And adding them to a spaced repetition service like Anki.

This is an implementation of Andy Matuschak's Personal Mnemonic Medium.

Use as an application

If you want to sync markdown notes to Anki, here's how to get started!

  1. In Anki, install the AnkiConnect add-on

Command line interface

  1. Install Memium in its own virtual environment with pipx,
> pipx install memium
  1. Import your notes!
> memium --input-dir [YOUR_INPUT_DIR]

In Docker container

  1. Install Orbstack or Docker Desktop.
  2. Setup a container
$INPUT_DIR="PATH_TO_YOUR_INPUT_DIR"

docker run -i \
  -e HOST_INPUT_DIR=$INPUT_DIR \
  -v $INPUT_DIR:/input \
  --restart unless-stopped \
  ghcr.io/martinbernstorff/memium:latest \
  memium \
  --input-dir /input/

This will start a docker container which updates your deck from $INPUT_DIR. In case of updated files, it will sync the difference (create new prompts and delete deleted prompts) to Anki. If you want to continuously sync the directory, check out the documentation for the cli.

Use as library

If you would like to build build your own Python application on top of the abstractions added here, you can install the library from pypi:

pip install memium

Pipeline abstractions

The library is built as a pipeline illustrated below. The left path describes the abstract pipeline, defined by abstract interfaces. The right path describes implementation I use, and which is part of this repo.

graph TD 
	FD["File on disk"]
	FD -- Document ingester --> Document
	Document -- Prompt extractor --> Prompt
	Prompt -- Destination --> Card 
 
	MD["Markdown file"]
	 Prompts["[QAPrompt | ClozePrompt]"]
  Cards["[AnkiQA | AnkiCloze]"]
 
	MD -- MarkdownDocumentIngester --> Document
	Document -- "[QAPromptExtractor, \nClozePromptExtractor]" --> Prompts
	Prompts -- AnkiConnectDestination --> Cards

Contributing

Setting up a dev environment

  1. Install Orbstack or Docker Desktop. Make sure to complete the full install process before continuing.
  2. If not installed, install VSCode
  3. Press this link
  4. Complete the setup process

Submitting a PR

Feel free to submit pull requests! If you want to run the entire pipeline locally, run:

inv validate_ci

💬 Where to ask questions

Type
🚨 Bug Reports GitHub Issue Tracker
🎁 Feature Requests & Ideas GitHub Issue Tracker
👩‍💻 Usage Questions GitHub Discussions
🗯 General Discussion GitHub Discussions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memium-0.7.0.tar.gz (60.8 kB view details)

Uploaded Source

Built Distribution

memium-0.7.0-py3-none-any.whl (35.4 kB view details)

Uploaded Python 3

File details

Details for the file memium-0.7.0.tar.gz.

File metadata

  • Download URL: memium-0.7.0.tar.gz
  • Upload date:
  • Size: 60.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for memium-0.7.0.tar.gz
Algorithm Hash digest
SHA256 3db7bd1aa31f2aa81fe9535dc1b3a4f5257320f3335a396453841a23934e5fa4
MD5 685cd24bd70694130f9f15c0413a6454
BLAKE2b-256 8aa3a3f5e0b58a853724e800a65c85c0df00b7d5138ea7cbb3db40d329c5f3d3

See more details on using hashes here.

File details

Details for the file memium-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: memium-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 35.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for memium-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a0b8b20e4cafeea9c16e41b6fec06326056055196ae0d31764a255fc84c925df
MD5 ca60cc066c2533beeffe242058e8841b
BLAKE2b-256 ef9be38a3877ae021b50159c2e9e34981b2c76c4f70383ac066bec45ea278a75

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page