This is gnosis.info, produced by makeinfo version 7.1 from gnosis.texi. INFO-DIR-SECTION Emacs misc features START-INFO-DIR-ENTRY * Gnosis (γνῶσις): (gnosis). Spaced Repetition System For Note Taking & Self-Testing. END-INFO-DIR-ENTRY  File: gnosis.info, Node: Top, Next: Introduction, Up: (dir) Gnosis User Manual ****************** Gnosis (γνῶσις), pronounced "noh-sis", _meaning knowledge in Greek_, is a spaced repetition system implementation for note taking and self testing. This manual is written for Gnosis version 0.2.0, released on 2023-03-08. • Official manual: • Git repositories: • * Menu: * Introduction:: * Adding notes:: * Note Types:: * Customization:: * Gnosis Algorithm:: * Editing notes:: * Sync between devices:: * Extending Gnosis:: -- The Detailed Node Listing -- Note Types * Cloze:: * MCQ (Multiple Choice Question):: * Basic Type:: * Double:: * y-or-n:: Customization * Image size:: * Typos | String Comparison:: Gnosis Algorithm * Initial Interval:: * Easiness Factor:: * Forgetting Factor:: Extending Gnosis * Creating Custom Note Types::  File: gnosis.info, Node: Introduction, Next: Adding notes, Prev: Top, Up: Top 1 Introduction ************** Gnosis, is a spaced repetition system for note taking & self testing, where notes are taken in a Question/Answer/Explanation format & reviewed in spaced intervals, determined by the success or failure to recall a given answer. Gnosis implements a highly customizable algorithm, inspired by SM-2. Gnosis algorithm does not use user's subjective rating of a note to determine the next review interval, but instead uses the user's success or failure in recalling the answer of a note. Read more on *note Gnosis Algorithm::  File: gnosis.info, Node: Adding notes, Next: Note Types, Prev: Introduction, Up: Top 2 Adding notes ************** Creating notes for gnosis can be done interactively with: ‘M-x gnosis-add-note’ When it comes to adding images, you can select images that are inside ‘gnosis-images-dir’. For adjusting image size, refer to *note Customization::  File: gnosis.info, Node: Note Types, Next: Customization, Prev: Adding notes, Up: Top 3 Note Types ************ * Menu: * Cloze:: * MCQ (Multiple Choice Question):: * Basic Type:: * Double:: * y-or-n::  File: gnosis.info, Node: Cloze, Next: MCQ (Multiple Choice Question), Up: Note Types 3.1 Cloze ========= A cloze note type is a format where you create sentences or paragraphs with "missing" words. A fill-in-the-blanks question. You can create a cloze note type using ‘M-x gnosis-add-note’ and selecting ‘Cloze’, the question should be formatted like this: {c1:Cyproheptadine} is a(n) {c2:5-HT2} receptor antagonist used to treat {c2:serotonin syndrome} You can also format clozes like Anki if you prefer; e.g ‘{{c1::Cyproheptadine}}’ • For each 'cX'-tag there will be created a cloze type note, the above example creates 2 cloze type notes. • Each 'cX' tag can have multiple clozes, but each cloze must be a *UNIQUE* word (or a unique combination of words) in given note. You can remove the _guidance_ string by adjusting ‘gnosis-cloze-guidance’.  File: gnosis.info, Node: MCQ (Multiple Choice Question), Next: Basic Type, Prev: Cloze, Up: Note Types 3.2 MCQ (Multiple Choice Question) ================================== A MCQ note type, as the name suggests, is a multiple choice question. The stem field (question) is separated by the options (choices) via ‘gnosis-mcq-separator’, each option is separated by ‘gnosis-mcq-option-separator’. You can remove the _guidance_ string by adjusting ‘gnosis-mcq-guidance’.  File: gnosis.info, Node: Basic Type, Next: Double, Prev: MCQ (Multiple Choice Question), Up: Note Types 3.3 Basic Type ============== Basic note type is a simple question/answer note, where the user first sees a "main" part, which is usually a question, and he is prompted to input the answer.  File: gnosis.info, Node: Double, Next: y-or-n, Prev: Basic Type, Up: Note Types 3.4 Double ========== Double note type, is essentially a note that generates 2 basic notes. The second one reverses question/answer. Ideal for vocabulary acquisition notes.  File: gnosis.info, Node: y-or-n, Prev: Double, Up: Note Types 3.5 y-or-n ========== y-or-n (yes or no) note type, user is presented with a question and prompted to enter character "y" or "n". When using the hidden function ‘gnosis-add-note--y-or-n’, note that the ANSWER must be either 121 (‘y’) or 110 (‘n’), as those correspond to the character values used to represent them.  File: gnosis.info, Node: Customization, Next: Gnosis Algorithm, Prev: Note Types, Up: Top 4 Customization *************** * Menu: * Image size:: * Typos | String Comparison::  File: gnosis.info, Node: Image size, Next: Typos | String Comparison, Up: Customization 4.1 Image size ============== Adjust image size using ‘gnosis-image-height’ & ‘gnosis-image-width’ Example: (setf gnosis-image-height 300 gnosis-image-width 300)  File: gnosis.info, Node: Typos | String Comparison, Prev: Image size, Up: Customization 4.2 Typos | String Comparison ============================= You can adjust ‘gnosis-string-difference’, this is a threshold value for string comparison that determines the maximum acceptable Levenshtein distance between two strings, which identifies their similarity Let's illustrate with an example: (setf gnosis-string-difference 1) In this scenario, we set ‘gnosis-string-difference’ to 1. This implies that two strings will be recognized as similar if they exhibit a difference of at most one character edit. To demonstrate, 'example' and 'examples' will be recognized as similar, considering that the latter involves just one additional character."  File: gnosis.info, Node: Gnosis Algorithm, Next: Editing notes, Prev: Customization, Up: Top 5 Gnosis Algorithm ****************** Each gnosis note has an ef (easiness factor), which is a list of 3 values. The last value is the total ef for a note, which will be used to determine the next interval upon a successful answer recall, the second value is the ef-decrease value, this value will be subtracted from the the total ef upon failure to recall the answer of a note, the first value is the ef increase, will be added to the total ef upon a successful recall. Each gnosis deck has ‘gnosis-algorithm-ef-threshold’, it's an integer value that refers to the consecutive success or failures to recall an answer. Upon reaching the threshold, gnosis-algorithm-ef-decrease or gnosis-algorithm-ef-increase will be applied to the ef-increase or ef-decrease of note. You can customize deck specific algorithm values using ‘gnosis-dashboard’. * Menu: * Initial Interval:: * Easiness Factor:: * Forgetting Factor::  File: gnosis.info, Node: Initial Interval, Next: Easiness Factor, Up: Gnosis Algorithm 5.1 Initial Interval ==================== The default initial interval is defined at ‘gnosis-algorithm-interval’, you can define a custom initial interval for each deck as well. ‘gnosis-algorithm-interval’ is a list of 2 numbers, representing the first two initial intervals for successful reviews. Example: (setq gnosis-algorithm-interval '(0 1)) Using the above example, after first successfully reviewing a note, you will see it again in the next review session, if you successfully review said note again, the next review will be tomorrow.  File: gnosis.info, Node: Easiness Factor, Next: Forgetting Factor, Prev: Initial Interval, Up: Gnosis Algorithm 5.2 Easiness Factor =================== The ‘gnosis-algorithm-ef’ is a list that consists of three items: 1. Easiness factor increase value: Added to the easiness factor upon a successful review. 2. Easiness factor decrease value: Subtracted from the total easiness factor upon a failed review. 3. Total Easiness factor: Used to calculate the next interval. How this is used: Multiplies the last interval by the easiness factor after a successful review. For example, upon a successful review, if the last review was 6 days ago with an easiness factor of 2.0, the next interval would be calculated as 6 * 2.0, and the next total easiness factor would be updated by adding the increase value 2.0 + . Configuration example: (setq gnosis-algorithm-ef '(0.30 0.25 1.3))  File: gnosis.info, Node: Forgetting Factor, Prev: Easiness Factor, Up: Gnosis Algorithm 5.3 Forgetting Factor ===================== ‘gnosis-algorithm-ff’ is a floating number below 1. Used to determine the next interval after an unsuccessful review. Multiplied with the last interval to calculate the next interval. For example, if ‘gnosis-algorithm-ff’ is set to 0.5 and the last interval was 6 days, the next interval will be 6 * 0.5 = 3 days. Example configuration: (setq gnosis-algorithm-ff 0.5) You can set a custom ‘gnosis-algorithm-ff’ for each deck as well.  File: gnosis.info, Node: Editing notes, Next: Sync between devices, Prev: Gnosis Algorithm, Up: Top 6 Editing notes *************** • Currently there are 2 ways for editing notes: • You can edit a note after review by pressing ‘e’ • Open ‘gnosis-dashboard’ with ‘M-x gnosis-dashboard’, find the note you want to edit and press ‘e’  File: gnosis.info, Node: Sync between devices, Next: Extending Gnosis, Prev: Editing notes, Up: Top 7 Sync between devices ********************** Gnosis uses git to maintain data integrity and facilitate synchronization across devices. You will need to configure your remote manually. Example: cd ~/.emacs.d/gnosis # default location for gnosis git init # After completing your first review session, a git repo should have been initialized automatically. git remote add git push --set-upstream origin master You can interactively use ‘gnosis-vc-push’ & ‘gnosis-vc-pull’. As the name suggests, they rely on ‘vc’ to work properly. Depending on your setup, ‘vc’ might require an external package for the ssh passphrase dialog, such as ‘x11-ssh-askpass’. To automatically push changes after a review session, add this to your configuration: (setf gnosis-vc-auto-push t) (gnosis-vc-pull) ;; Run vc-pull for gnosis on startup  File: gnosis.info, Node: Extending Gnosis, Prev: Sync between devices, Up: Top 8 Extending Gnosis ****************** To make development and customization easier, gnosis comes with ‘gnosis-test’ module, that should be used to create a custom database for testing. To exit the testing environment, rerun ‘M-x gnosis-test-start’ and then enter ‘n’ (no) at the prompt "Start development env?" * Menu: * Creating Custom Note Types::  File: gnosis.info, Node: Creating Custom Note Types, Up: Extending Gnosis 8.1 Creating Custom Note Types ============================== Creating custom note types for gnosis is a fairly simple thing to do • First add your NEW-TYPE to ‘gnosis-note-types’ (add-to-list 'gnosis-note-types "new-note-type") • Create 2 functions; ‘gnosis-add-note-TYPE’ & ‘gnosis-add-note--TYPE’ Each note type has a ‘gnosis-add-note-TYPE’ that is used interactively & a "hidden function" ‘gnosis-add-note--TYPE’ that handles all the logic. Refer to ‘gnosis-add-note-basic’ & ‘gnosis-add-note--basic’ for a simple example of how this is done. • Create ‘gnosis-review-TYPE’ This function should handle the review process, displaying it's contents and updating the database depending on the result of the review (fail/pass). Refer to ‘gnosis-review-basic’ for an example of how this should be done. • Optionally, you might want to create your own custom ‘gnosis-display’ functions  Tag Table: Node: Top244 Node: Introduction1209 Node: Adding notes1851 Node: Note Types2220 Node: Cloze2432 Node: MCQ (Multiple Choice Question)3350 Node: Basic Type3846 Node: Double4149 Node: y-or-n4415 Node: Customization4817 Node: Image size5002 Node: Typos | String Comparison5288 Node: Gnosis Algorithm6063 Node: Initial Interval7099 Node: Easiness Factor7764 Node: Forgetting Factor8712 Node: Editing notes9320 Node: Sync between devices9712 Node: Extending Gnosis10740 Node: Creating Custom Note Types11195  End Tag Table  Local Variables: coding: utf-8 End: