ir.el - Incremental Reading
The term is orginally coined by Piotr Wozniak and he describes it as:
Incremental reading is a learning technique that makes it possible to read thousands of articles at the same time without getting lost. Incremental reading begins with importing articles from electronic sources, e.g. the Internet. The student then extracts the most important fragments of individual articles for further review. Extracted fragments are then converted into questions and answers. These in turn become subject to systematic review and repetition that maximizes the long-term recall.
This project aims to cover all the useful features of incremental reading. The main features I have implemented so far are scheduling of material and extraction from PDFs.
The current way to create questions and clozes out of the extracts is to write them out using ankifier but I want to improve on this in the future.
- Refactor (ir-start-session).
- Fix issues in the algorithm.
- Add org-roam integration.
- Generalize (ir–check-duplicate)
- 0.6.0: Add session functions (ir-start-session).
- 0.5.0: Add editing function (ir-edit-update-column).
- 0.4.0: Add function (ir-add-bibtex-entry).
- 0.3.0: Add basic view by due functions.
- 0.2.0: Add basic persistent highlighting functions.
- 0.1.0: Initial release with basic extraction functions.
- [ ] Implement ordering by priority.
- [ ] Video playback (vlc vs mpv).
- [ ] From YouTube.
- [ ] From local files.
- [ ] Change the affinity for priority from INTEGER to REAL.
- [ ] Create a heading of a pdf even if the pdf is not in the db.
- [ ] Research the possibility of sioyek integration
Release 1.4.0 of sioyek adds the ability to control a running instance of sioyek with the command line.
Implementation of question creation
I see a reason to implement a way to create basic or cloze questions. This is not SuperMemo and I’ve already worked out a way to create basic and cloze cards using ankifier.el. Such that the form of my final workflow would be:
EXTRACT TEXT QUESTIONS
Design of the Database
emacsql I created the following table.
|id||TEXT||Unique ID using |
|date||INTEGER||Date of next repetition|
|type||TEXT||Type of file (org-mode, pdf)|
|path||TEXT||Path to file if applicalble|
One of my goals is to support as many possible file types as possible. This would allow one to incrementally learn any piece of material. This also allows others to easily extend the program by including their favorite file types and programs to open them.
One way to query the database is to sort the
ir table by date, then match the
file type to a function that opens that file type.
Such files have a path which is inserted in the path column.
|text||org-id-find||A simple org heading.|
|dired-find-file||A pdf file.|
I use a simplified SM2 algorithm to calculate the intervals. The A Factor increases by 0.08 per repetition.