summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/gnosis.info435
-rw-r--r--doc/gnosis.org26
-rw-r--r--doc/gnosis.texi423
3 files changed, 880 insertions, 4 deletions
diff --git a/doc/gnosis.info b/doc/gnosis.info
new file mode 100644
index 0000000..a96d4c1
--- /dev/null
+++ b/doc/gnosis.info
@@ -0,0 +1,435 @@
+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 And 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.1.5, released on 2023-01-29.
+
+ • Official manual: <https://thanosapollo.org/user-manual/gnosis>
+ • Git repositories:
+ • main: <https://git.thanosapollo.org/gnosis>
+ • sourcehut (mirror): <https://git.sr.ht/~thanosapollo/gnosis>
+
+* Menu:
+
+* Introduction::
+* Installation::
+* Adding notes::
+* Note Types::
+* Customization & Extension::
+
+-- The Detailed Node Listing --
+
+Installation
+
+* Using straight.el: Using straightel.
+* Installing manually from source::
+
+Note Types
+
+* Cloze::
+* Basic Type::
+* Double::
+* MCQ (Multiple Choice Question)::
+* y-or-n::
+
+Customization & Extension
+
+* Adjust string comparison::
+* Creating Custom Note Types::
+* Customizing Gnosis Algorithm::
+
+Customizing Gnosis Algorithm
+
+* Gnosis Algorithm Initial Interval::
+* Gnosis Algorithm Easiness Factor::
+* Gnosis Algorithm Forgetting Factor::
+
+
+
+File: gnosis.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+Gnosis is a spaced repetition note taking and self testing system, where
+notes are taken in a Question/Answer/Explanation-like format & reviewed
+in spaced intervals.
+
+ Gnosis can help you better understand and retain the material by
+encouraging active engagement. It also provides a clear structure for
+your notes & review sessions, making it easier to study.
+
+
+File: gnosis.info, Node: Installation, Next: Adding notes, Prev: Introduction, Up: Top
+
+2 Installation
+**************
+
+Gnosis is not currently available in any ELPA, the recommended way to
+install gnosis is via straight.el:
+
+ <https://github.com/radian-software/straight.el>
+
+* Menu:
+
+* Using straight.el: Using straightel.
+* Installing manually from source::
+
+
+File: gnosis.info, Node: Using straightel, Next: Installing manually from source, Up: Installation
+
+2.1 Using straight.el
+=====================
+
+If you have not installed straight.el, follow the instructions here:
+
+ <https://github.com/radian-software/straight.el>
+
+ Once you have installed straight.el, you can install gnosis using the
+following emacs lisp snippet:
+
+ (straight-use-package
+ '(gnosis :type git
+ :host nil
+ :repo "https://git.thanosapollo.org/gnosis"))
+
+
+File: gnosis.info, Node: Installing manually from source, Prev: Using straightel, Up: Installation
+
+2.2 Installing manually from source
+===================================
+
+Gnosis depends on the ‘compat’ & ‘emacsql’ libraries which are available
+from MELPA. Install them using ‘M-x package-install RET <package> RET’
+or you may also install them manually from their repository.
+
+ • Clone gnosis repository
+
+ $ git clone https://git.thanosapollo.org/gnosis ~/.emacs.d/site-lisp/gnosis
+
+ • Add this to your emacs configuration
+
+ (add-to-list 'load-path "~/.emacs.d/site-lisp/gnosis")
+ (load-file "~/.emacs.d/site-lisp/gnosis/gnosis.el")
+
+
+File: gnosis.info, Node: Adding notes, Next: Note Types, Prev: Installation, Up: Top
+
+3 Adding notes
+**************
+
+Creating notes for gnosis can be done interactively with: ‘M-x
+gnosis-add-note’
+
+ Advanced/Power users may prefer to use ‘gnosis-add-note--TYPE’
+
+ Example:
+
+ (gnosis-add-note--basic :deck "DECK-NAME"
+ :question "Your Question"
+ :answer "Answer"
+ :hint "hint"
+ :extra "Explanation"
+ :image "Image displayed before user-input" ;; Optional
+ :second-image "Image displayed after user-input" ;; Optional
+ :tags '("tag1" "tag2"))
+
+ By default, the value of image and second image is nil. Their value
+must a string, the path of an image, from inside ‘gnosis-images-dir’.
+
+ 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.
+
+ Every note type has these values in common:
+
+ • ‘extra’ string value, extra information/explanation displayed after
+ user-input
+ • ‘image’ Image displayed _before_ user input
+ • ‘second-image’ Image displayed _after_ user input
+
+ The following sections will cover the important differences you have
+to know when creating new notes.
+
+
+File: gnosis.info, Node: Note Types, Next: Customization & Extension, Prev: Adding notes, Up: Top
+
+4 Note Types
+************
+
+* Menu:
+
+* Cloze::
+* Basic Type::
+* Double::
+* MCQ (Multiple Choice Question)::
+* y-or-n::
+
+
+File: gnosis.info, Node: Cloze, Next: Basic Type, Up: Note Types
+
+4.1 Cloze
+=========
+
+A cloze note type is a format where you create sentences or paragraphs
+with "missing" words. Almost all note types can be written as a cloze
+type in a way. Ideal type for memorizing definitions.
+
+ To get the most out of gnosis, you have to become familiar with cloze
+type notes.
+
+ 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.
+
+
+File: gnosis.info, Node: Basic Type, Next: Double, Prev: Cloze, Up: Note Types
+
+4.2 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: MCQ (Multiple Choice Question), Prev: Basic Type, Up: Note Types
+
+4.3 Double
+==========
+
+Double note type, is essentially a note that generates 2 basic notes.
+The second one reverses question/answer.
+
+ Ideal for vocabulary acquisition, creating vocabulary/translation
+notes for a foreign language.
+
+
+File: gnosis.info, Node: MCQ (Multiple Choice Question), Next: y-or-n, Prev: Double, Up: Note Types
+
+4.4 MCQ (Multiple Choice Question)
+==================================
+
+MCQ note type, consists of a "stem" part that is displayed, and
+"options" for the user to select the right one.
+
+ Answer must be the index NUMBER of the correct answer from OPTIONS.
+
+ Ideal for self testing & simulating exams
+
+
+File: gnosis.info, Node: y-or-n, Prev: MCQ (Multiple Choice Question), Up: Note Types
+
+4.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 & Extension, Prev: Note Types, Up: Top
+
+5 Customization & Extension
+***************************
+
+To make development and customization easier, gnosis comes with
+‘gnosis-dev’ module, that should be used to create a custom database for
+testing.
+
+ To use ‘gnosis-dev’, first you have to ‘(require 'gnosis-dev)’ & run
+‘M-x gnosis-dev-test’. This will create a new directory 'testing' with
+a new database.
+
+ To exit the testing environment, rerun ‘M-x gnosis-dev-test’ and then
+enter ‘n’ (no) at the prompt "Start development env?"
+
+* Menu:
+
+* Adjust string comparison::
+* Creating Custom Note Types::
+* Customizing Gnosis Algorithm::
+
+
+File: gnosis.info, Node: Adjust string comparison, Next: Creating Custom Note Types, Up: Customization & Extension
+
+5.1 Adjust string comparison
+============================
+
+You may 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: Creating Custom Note Types, Next: Customizing Gnosis Algorithm, Prev: Adjust string comparison, Up: Customization & Extension
+
+5.2 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-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
+
+
+File: gnosis.info, Node: Customizing Gnosis Algorithm, Prev: Creating Custom Note Types, Up: Customization & Extension
+
+5.3 Customizing Gnosis Algorithm
+================================
+
+* Menu:
+
+* Gnosis Algorithm Initial Interval::
+* Gnosis Algorithm Easiness Factor::
+* Gnosis Algorithm Forgetting Factor::
+
+
+File: gnosis.info, Node: Gnosis Algorithm Initial Interval, Next: Gnosis Algorithm Easiness Factor, Up: Customizing Gnosis Algorithm
+
+5.3.1 Gnosis Algorithm Initial Interval
+---------------------------------------
+
+‘gnosis-algorithm-interval’ is a list of 2 numbers, representing the
+first two initial intervals for successful reviews.
+
+ Example:
+
+ (setq gnosis-algorithm-interval '(1 3))
+
+ Using the above example, after first successfully reviewing a note,
+you will see it again tomorrow, if you successfully review said note
+again, the next review will be after 3 days.
+
+
+File: gnosis.info, Node: Gnosis Algorithm Easiness Factor, Next: Gnosis Algorithm Forgetting Factor, Prev: Gnosis Algorithm Initial Interval, Up: Customizing Gnosis Algorithm
+
+5.3.2 Gnosis Algorithm Easiness Factor
+--------------------------------------
+
+‘gnosis-algorithm-ef’ is a list that consists of 3 items.
+
+ The first item is the increase factor, used to increase the easiness
+factor upon successful review.
+
+ Second item refers to the decrease factor, used to decrease the
+easiness factor upon an unsuccessful review.
+
+ The third item is the initial total easiness factor, used to
+calculate the next interval.
+
+ The basic's of how this is used is that it's being multiplied with
+the last interval upon a successful review, e.g if you last reviewed a
+note 6 days ago, and the easiness factor of this note is 2.0, your next
+interval would be 6 * 2.0 & the total easiness factor would be 2.0 +
+increase-factor as well.
+
+ Example:
+
+ (setq gnosis-algorithm-ef '(0.3 0.3 1.3))
+
+
+File: gnosis.info, Node: Gnosis Algorithm Forgetting Factor, Prev: Gnosis Algorithm Easiness Factor, Up: Customizing Gnosis Algorithm
+
+5.3.3 Gnosis Algorithm Forgetting Factor
+----------------------------------------
+
+‘gnosis-algorithm-ff’ is a floating number below 1.
+
+ It's used to calculate the next interval upon an unsuccessful review,
+by being multiplied with last interval.
+
+ Example:
+
+ (setq gnosis-algorithm-ff 0.5)
+
+ For a note with a value of last-interval of 6 days and a ff of 0.5,
+upon an unsuccessful review the next interval will be 6 * 0.5
+
+
+
+Tag Table:
+Node: Top246
+Node: Introduction1397
+Node: Installation1877
+Node: Using straightel2246
+Node: Installing manually from source2758
+Node: Adding notes3447
+Node: Note Types4863
+Node: Cloze5087
+Node: Basic Type6060
+Node: Double6338
+Node: MCQ (Multiple Choice Question)6684
+Node: y-or-n7093
+Node: Customization & Extension7519
+Node: Adjust string comparison8223
+Node: Creating Custom Note Types9019
+Node: Customizing Gnosis Algorithm10154
+Node: Gnosis Algorithm Initial Interval10470
+Node: Gnosis Algorithm Easiness Factor11061
+Node: Gnosis Algorithm Forgetting Factor12065
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/gnosis.org b/doc/gnosis.org
index 28b9cf9..29c4188 100644
--- a/doc/gnosis.org
+++ b/doc/gnosis.org
@@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 0.1.4
-#+macro: release-date 2023-01-19
-#+macro: development-version 0.1.4-dev
+#+macro: stable-version 0.1.5
+#+macro: release-date 2023-01-29
+#+macro: development-version 0.1.6-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -175,7 +175,7 @@ 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.
-* Customization & Development
+* Customization & Extension
To make development and customization easier, gnosis comes with
=gnosis-dev= module, that should be used to create a custom database for
@@ -187,6 +187,24 @@ database.
To exit the testing environment, rerun =M-x gnosis-dev-test= and then
enter =n= (no) at the prompt "Start development env?"
+** Adjust string comparison
+You may 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:
+#+begin_src emacs-lisp
+(setf gnosis-string-difference 1)
+#+end_src
+
+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."
** Creating Custom Note Types
Creating custom note types for gnosis is a fairly simple thing to do
diff --git a/doc/gnosis.texi b/doc/gnosis.texi
new file mode 100644
index 0000000..f2762af
--- /dev/null
+++ b/doc/gnosis.texi
@@ -0,0 +1,423 @@
+\input texinfo @c -*- texinfo -*-
+@c %**start of header
+@setfilename gnosis.info
+@settitle Gnosis User Manual
+@documentencoding UTF-8
+@documentlanguage en
+@set MAINTAINERSITE @uref{https://thanosapollo.org,maintainer webpage}
+@set MAINTAINER Thanos Apollo
+@set MAINTAINEREMAIL @email{[email protected]}
+@set MAINTAINERCONTACT @uref{mailto:[email protected],contact the maintainer}
+@c %**end of header
+
+@dircategory Emacs misc features
+@direntry
+* Gnosis (γνῶσις): (gnosis). Spaced Repetition System For Note Taking And Self-Testing.
+@end direntry
+
+@finalout
+@titlepage
+@title Gnosis User Manual
+@author Thanos Apollo (@email{public@@thanosapollo.org})
+@end titlepage
+
+@ifnottex
+@node Top
+@top Gnosis User Manual
+
+Gnosis (γνῶσις), pronounced ``noh-sis'', @emph{meaning knowledge in Greek}, is
+a spaced repetition system implementation for note taking and self
+testing.
+
+@noindent
+This manual is written for Gnosis version 0.1.5, released on 2023-01-29.
+
+@itemize
+@item
+Official manual: @uref{https://thanosapollo.org/user-manual/gnosis}
+@item
+Git repositories:
+@itemize
+@item
+main: @uref{https://git.thanosapollo.org/gnosis}
+@item
+sourcehut (mirror): @uref{https://git.sr.ht/~thanosapollo/gnosis}
+@end itemize
+@end itemize
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Introduction::
+* Installation::
+* Adding notes::
+* Note Types::
+* Customization & Extension::
+
+@detailmenu
+--- The Detailed Node Listing ---
+
+Installation
+
+* Using straight.el: Using straightel.
+* Installing manually from source::
+
+Note Types
+
+* Cloze::
+* Basic Type::
+* Double::
+* MCQ (Multiple Choice Question)::
+* y-or-n::
+
+Customization & Extension
+
+* Adjust string comparison::
+* Creating Custom Note Types::
+* Customizing Gnosis Algorithm::
+
+Customizing Gnosis Algorithm
+
+* Gnosis Algorithm Initial Interval::
+* Gnosis Algorithm Easiness Factor::
+* Gnosis Algorithm Forgetting Factor::
+
+@end detailmenu
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+Gnosis is a spaced repetition note taking and self testing system,
+where notes are taken in a Question/Answer/Explanation-like format &
+reviewed in spaced intervals.
+
+Gnosis can help you better understand and retain the material by
+encouraging active engagement. It also provides a clear structure for
+your notes & review sessions, making it easier to study.
+
+@node Installation
+@chapter Installation
+
+Gnosis is not currently available in any ELPA, the recommended way to
+install gnosis is via straight.el:
+
+@uref{https://github.com/radian-software/straight.el}
+
+@menu
+* Using straight.el: Using straightel.
+* Installing manually from source::
+@end menu
+
+@node Using straightel
+@section Using straight.el
+
+If you have not installed straight.el, follow the instructions here:
+
+@uref{https://github.com/radian-software/straight.el}
+
+Once you have installed straight.el, you can install gnosis using the
+following emacs lisp snippet:
+
+@lisp
+(straight-use-package
+ '(gnosis :type git
+ :host nil
+ :repo "https://git.thanosapollo.org/gnosis"))
+@end lisp
+
+@node Installing manually from source
+@section Installing manually from source
+
+Gnosis depends on the @code{compat} & @code{emacsql} libraries which are available
+from MELPA@. Install them using @code{M-x package-install RET <package> RET}
+or you may also install them manually from their repository.
+
+@itemize
+@item
+Clone gnosis repository
+
+@example
+$ git clone https://git.thanosapollo.org/gnosis ~/.emacs.d/site-lisp/gnosis
+@end example
+
+@item
+Add this to your emacs configuration
+
+@lisp
+(add-to-list 'load-path "~/.emacs.d/site-lisp/gnosis")
+(load-file "~/.emacs.d/site-lisp/gnosis/gnosis.el")
+@end lisp
+@end itemize
+
+@node Adding notes
+@chapter Adding notes
+
+Creating notes for gnosis can be done interactively with:
+ @samp{M-x gnosis-add-note}
+
+
+Advanced/Power users may prefer to use @samp{gnosis-add-note--TYPE}
+
+Example:
+
+@lisp
+(gnosis-add-note--basic :deck "DECK-NAME"
+ :question "Your Question"
+ :answer "Answer"
+ :hint "hint"
+ :extra "Explanation"
+ :image "Image displayed before user-input" ;; Optional
+ :second-image "Image displayed after user-input" ;; Optional
+ :tags '("tag1" "tag2"))
+@end lisp
+
+By default, the value of image and second image is nil. Their value
+must a string, the path of an image, from inside @code{gnosis-images-dir}.
+
+Each note type has a @samp{gnosis-add-note-TYPE} that is used
+interactively & a ``hidden function'' @samp{gnosis-add-note--TYPE} that handles
+all the logic.
+
+Every note type has these values in common:
+
+@itemize
+@item
+@code{extra} string value, extra information/explanation displayed after user-input
+@item
+@code{image} Image displayed @emph{before} user input
+@item
+@code{second-image} Image displayed @emph{after} user input
+@end itemize
+
+The following sections will cover the important differences you have
+to know when creating new notes.
+
+@node Note Types
+@chapter Note Types
+
+@menu
+* Cloze::
+* Basic Type::
+* Double::
+* MCQ (Multiple Choice Question)::
+* y-or-n::
+@end menu
+
+@node Cloze
+@section Cloze
+
+A cloze note type is a format where you create sentences or paragraphs
+with ``missing'' words. Almost all note types can be written as a cloze
+type in a way. Ideal type for memorizing definitions.
+
+To get the most out of gnosis, you have to become familiar with cloze type notes.
+
+You can create a cloze note type using @samp{M-x gnosis-add-note} and
+selecting @code{Cloze}, the question should be formatted like this:
+
+@quotation
+@{c1:Cyproheptadine@} is a(n) @{c2:5-HT2@} receptor antagonist used to treat @{c2:serotonin syndrome@}
+
+@end quotation
+
+You can also format clozes like Anki if you prefer; e.g @code{@{@{c1::Cyproheptadine@}@}}
+
+@itemize
+@item
+For each `cX`-tag there will be created a cloze type note, the above
+example creates 2 cloze type notes.
+
+@item
+Each `cX` tag can have multiple clozes, but each cloze must be a
+@strong{UNIQUE} word (or a unique combination of words) in given note.
+@end itemize
+
+@node Basic Type
+@section 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.
+
+@node Double
+@section Double
+
+Double note type, is essentially a note that generates 2 basic notes.
+The second one reverses question/answer.
+
+Ideal for vocabulary acquisition, creating vocabulary/translation
+notes for a foreign language.
+
+@node MCQ (Multiple Choice Question)
+@section MCQ (Multiple Choice Question)
+
+MCQ note type, consists of a ``stem'' part that is displayed, and
+``options'' for the user to select the right one.
+
+Answer must be the index NUMBER of the correct answer from OPTIONS@.
+
+Ideal for self testing & simulating exams
+
+@node y-or-n
+@section 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 @samp{gnosis-add-note--y-or-n}, note that the
+ANSWER must be either 121 (@code{y}) or 110 (@code{n}), as those correspond to the
+character values used to represent them.
+
+@node Customization & Extension
+@chapter Customization & Extension
+
+To make development and customization easier, gnosis comes with
+@samp{gnosis-dev} module, that should be used to create a custom database for
+testing.
+
+To use @samp{gnosis-dev}, first you have to @samp{(require 'gnosis-dev)} & run @samp{M-x
+gnosis-dev-test}. This will create a new directory 'testing' with a new
+database.
+
+To exit the testing environment, rerun @samp{M-x gnosis-dev-test} and then
+enter @samp{n} (no) at the prompt ``Start development env?''
+
+@menu
+* Adjust string comparison::
+* Creating Custom Note Types::
+* Customizing Gnosis Algorithm::
+@end menu
+
+@node Adjust string comparison
+@section Adjust string comparison
+
+You may adjust @samp{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:
+@lisp
+(setf gnosis-string-difference 1)
+@end lisp
+
+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.``
+
+@node Creating Custom Note Types
+@section Creating Custom Note Types
+
+Creating custom note types for gnosis is a fairly simple thing to do
+
+@itemize
+@item
+First add your NEW-TYPE to @samp{gnosis-note-types}
+
+@lisp
+(add-to-list 'gnosis-note-types 'new-type)
+@end lisp
+
+@item
+Create 2 functions; @samp{gnosis-add-note-TYPE} & @samp{gnosis-add-note--TYPE}
+@end itemize
+
+Each note type has a @samp{gnosis-add-note-TYPE} that is used
+interactively & a ``hidden function'' @samp{gnosis-add-note--TYPE} that handles
+all the logic.
+
+Refer to @samp{gnosis-add-note-basic} & @samp{gnosis-add-note--basic} for a simple
+example of how this is done.
+
+@itemize
+@item
+Create @samp{gnosis-review-TYPE}
+@end itemize
+
+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 @samp{gnosis-review-basic} for an example of how
+this should be done.
+
+@itemize
+@item
+Optionally, you might want to create your own custom @samp{gnosis-display} functions
+@end itemize
+
+@node Customizing Gnosis Algorithm
+@section Customizing Gnosis Algorithm
+
+@menu
+* Gnosis Algorithm Initial Interval::
+* Gnosis Algorithm Easiness Factor::
+* Gnosis Algorithm Forgetting Factor::
+@end menu
+
+@node Gnosis Algorithm Initial Interval
+@subsection Gnosis Algorithm Initial Interval
+
+@samp{gnosis-algorithm-interval} is a list of 2 numbers, representing the
+first two initial intervals for successful reviews.
+
+Example:
+
+@lisp
+(setq gnosis-algorithm-interval '(1 3))
+@end lisp
+
+Using the above example, after first successfully reviewing a note,
+you will see it again tomorrow, if you successfully review said note
+again, the next review will be after 3 days.
+
+@node Gnosis Algorithm Easiness Factor
+@subsection Gnosis Algorithm Easiness Factor
+
+@samp{gnosis-algorithm-ef} is a list that consists of 3 items.
+
+The first item is the increase factor, used to increase the easiness
+factor upon successful review.
+
+Second item refers to the decrease factor, used to
+decrease the easiness factor upon an unsuccessful review.
+
+The third item is the initial total easiness factor, used to calculate
+the next interval.
+
+The basic's of how this is used is that it's being multiplied with the
+last interval upon a successful review, e.g if you last reviewed a
+note 6 days ago, and the easiness factor of this note is 2.0, your
+next interval would be 6 * 2.0 & the total easiness factor would be
+2.0 + increase-factor as well.
+
+Example:
+
+@lisp
+(setq gnosis-algorithm-ef '(0.3 0.3 1.3))
+@end lisp
+
+@node Gnosis Algorithm Forgetting Factor
+@subsection Gnosis Algorithm Forgetting Factor
+
+@samp{gnosis-algorithm-ff} is a floating number below 1.
+
+It's used to calculate the next interval upon an unsuccessful review,
+by being multiplied with last interval.
+
+
+
+Example:
+
+@lisp
+(setq gnosis-algorithm-ff 0.5)
+@end lisp
+
+For a note with a value of last-interval of 6 days and a ff of 0.5,
+upon an unsuccessful review the next interval will be 6 * 0.5
+
+@bye \ No newline at end of file