1 This is a TODO file for Mentor project. Currently it includes just draft
2 random ideas about future Mentor development.
6 --------------------------------------
8 --------------------------------------
11 open - set of small utilities (probe, gui, vim) which together form
12 something advanced , ability to use open formats : xml, txt , sqlite
13 scripting - with python scripting , OLE automation and and KDE KParts
14 interface for scripting
16 focus on automation/user-friendliness of creating packs
21 - General idea [MOVE TO DOCS]
22 What can be used Mentor for?
23 Mentor first in supermemo all possible learning means:
28 conversion from source code
29 automatic knowledge retrieval
31 - each config option should have params
32 like possible values if stored in settings or constant
33 if modifiable from commandline
34 if usable in probe or in mentor or in freq
36 - add to config parse_probe_commandline and parse_mentor_commandline
37 ? maybe better will be splitting them ?
38 and pass optparse to them
39 also will need get_probe_usage and get_mentor_usage
41 - upgrade the database upon entering
42 when opening database should check the result
43 if version is lower then ask if proceed with upgrade
44 upgrade implemented similarly to upgrade procedure we did use in Vademecum
50 --------------------------------------
52 --------------------------------------
54 - Make TODO file more readable
55 As a first TODO item for this file is make it more managable and readable.
56 Also convert it to some markup format.
58 - design the mentor documentation after supermemo and other flash-card program
62 - Check out how python doc is done - how do they generate their documentation??
64 - Write documentation in LaTeX and then have it exported to other formats:
72 all technical comments: how things are done : should be written directly as
74 doc-strings should include requirements
78 --------------------------------------
80 --------------------------------------
83 make a mindmap of mentor/probe requirements and design
84 and gui mockup of mentor
85 and uml diagrams of mentor to get a general overview first
86 then go top-down programming -> making stubs for all the procedures and
87 functions and listing problems to solve --> with comments
88 solve the problems aside (in special code branch?)
89 THEN start bottom up -> writing code for the simplest use-cases but in the
93 - excel table for class comparison in probe
94 make excel table with all the class and features they have - how they compare,
95 how can I generalize them ??!
98 make all Qt upperCaseStyle so that I do not get confused
99 (all except for the general utils module)
104 --------------------------------------
106 --------------------------------------
108 - to get round problem of unescaped chars in highligting :
111 \command may be ignored if not one of the known commands
112 but what about those defined by myself ??
114 - improve highlighting
116 - Vim useful functions from mentor
117 defun mentor-create-item-from-line ()
118 defun mentor-enclose-region-with (region text)
119 defun mentor-convert-to-section ()
120 defun mentor-convert-to-question ()
121 defun mentor-convert-to-PrbCloze ()
122 (global-set-key [f6] 'mentor-create-item-from-line)
125 - vim syntax: subsection in special color ??
127 - vim syntax folding for subsection in ftpplugin
128 - read about syntax folding
131 - dynamically creating highlighting commands
132 may highlighted only PrbCommands which are really in probe:
133 and dynamically create them if some macros are used
134 how it will be possible ?
136 - maybe double percentage instead of single percentage for comments?
137 %% this comments may be in slight different color
138 %% this will be double percentage and only on beginning of line
139 %% to avoid conflicts
140 %% MORE DARKER GRAY ? as I want to discern between text and the rest
145 --------------------------------------
147 --------------------------------------
149 - drill window - asking for selected items
152 - different views in a docking interface:
153 list view : simple and extended
154 card view : question + hint, answer + hint
155 info view: score, next review, last review reviews average score simple and
156 detailed , category? tags?
157 source view: with xml or (q and a) view on current item
160 - import/export from q & a file / xml file (in Mentor format) in SuperMemo
161 format in KDE words format ??
164 - advanced grid view for managing : this should be instead of the tree that is
166 the grid should be killer feature allowing for very easy access to items
167 with the power of excel but easiness of gmail / web interface
168 maybe button with select all and action to perform on them
171 it should combine the best features on known grids:
172 excel, plsql dev, sqlnav, tytan, devexpress, lookupedit , koffice spreadsheet,
173 thunderbird mails view
178 filtering by drop down menus
179 filtering by advanced queries (not and like)
180 sorting on different columns
182 inserting items on specific position (display order)
183 multiselection of items
184 filtering by specific tag
185 ability to show/hide some columns and move columns
186 adjustable cell height with auto-wrapping of contents
187 right-click menu to run operation on set of elements (e.g. switch to pending ,
188 or assign tag/edit tags for the items)
189 different color of fields, depending on their status
190 selecting the whole row but editing separate cells possibility
193 - see the spreadsheet, charts etc examples. and model-views examples and code them in python first
194 to see how a grid example could be implemented
195 tip: maybe send spreadsheet demo to pyqt-dev to see if they are interested in
199 id question answer qhint ahint example score
200 all columns possible in the view
202 : with sql interface for querying database
203 list like excel+plsqldev table for viewing words with filtering by tag category sorting on different
204 filtering like in lookup panel
205 ability to hide some columns if necessary
207 - make it run with debug version of Qt library
208 and give it full debug log so that I see what is actually going on !
209 see all signals coming out and caught by slots
212 - switch to these later when I have function for automatic inserting in
214 from PyQt4.QtCore import SIGNAL, SLOT
215 from PyQt4.QtGui import QWidget, QPushButton, QApplication, QMainWindow, \
216 QKeySequence, QAction, QIcon, qApp
219 - maximally open for extensions:
220 add python scripting engine
221 in windows add ole automation server ??
222 in kde kobject for scripting
224 - add labels to views : tree view , list view etc.
226 - tags instead of ategories
228 - automatically upgrading databases if found from older versions
230 - checking databases , fixing them as well
232 - data will be stored in sqlite database each record will be an xml blob plus
233 parameters on the learning process
235 e.g. <question> </question>
236 <answer> <hint>yes!</hint></answer>
237 or <text> <cloze> </cloze> </text>
238 should the xml format know about the cloze ?
239 perhaps it's better to store them in my custom database format and translate it
240 to xml on demand? or allow the user to edit the xml ?
243 - what about encoding issues ??
244 it should be all utf-8 or ascii ?
245 each item separate encoding or the same encoding for the whole database ??
249 normal text --> probe --preformat
250 prb text --> vim macros to markup quickly --> probe --export (default) --> qa
252 import to supermemo/mentor
254 - Gui - random key to press before going to next to prevent mindless swapping
256 before answer press key with first letter (or two keys)
257 to disable mindless swapping
259 - Use word-wrap when displaying items
263 - Graphical/rtf version of incremental reading program
264 what I do in vim should be possible to be done in gui as well - for people who
265 don't have access to vim
266 something like incremental reading in supermemo but done in my way
268 - card view: switching between source (xml view) and render view in tabs
269 editing xml / rtf but via styles
270 word editing but with focus on styles so that I can do it also automatically
271 using xml transformations
272 but don't forget about novice users: have to somehow combine the
273 power/extensibility of html with easy editing of the units
276 <question> </question> <answer> </answer>
277 <prefix> </peg> <example>
278 <bold> <color 12> <emphasis>
280 - lazyshow on dialogs exec as well - right now only works for windows
285 --------------------------------------
287 --------------------------------------
288 - install script NSIS for installation on different windows machines
290 - script setup.py for building on linux, windows, mac etc
291 and building to python
293 - Building and testing automatically
294 The build script should also perform a set of tests after making the build
295 to make sure the build is correct
296 all the test suite should be run
298 - move this to build script
299 Run pyrcc4 mentor.qrc to mentor_rc.py file
300 but only if file mentor_rc.pyc does not exist or is older than mentor.qrc
302 - add time-sensitive building by default:
303 by default action build will not touch files like mentor.pdf or mentor_rc.pyc
304 if they have not been touched after the last build
305 but also add option to do a full rebuild
307 - additional build information:
308 build info should include version numbers (detailed) of
310 Python Qt PyQt libraries
313 and what other info?? check this out
316 how to send this info?
317 Have parameter --systeminfo or button system info in about box
318 User should paste this information which sho
320 source sha1 GIT full key this from git
321 operating system how this one ?? ?
322 qt version qt location
326 In [2]: QLibraryInfo.buildKey()
327 In [6]: str(QLibraryInfo.buildKey())
328 In [7]: str(QLibraryInfo.location(QLibraryInfo.PrefixPath))
329 Out[7]: 'C:\\Programs\\Qt'
330 In [8]: str(QSysInfo.WinVersion)
331 Out[9]: "<class 'PyQt4.QtCore.WinVersion'>"
332 In [10]: print QSysInfo.WinVersion == QSysInfo.WV_2000
335 - problem: build date is not always the same ase git commit date
336 maybe I should extract the date from the source as well? git show last commit
337 date and build key from that ?
338 or maybe embed 7 digits SHA1 instead?
341 - different building and testing automation
343 have a test repo and a script which will pull from draft/devel ,
344 rename misc and other directories and libraries
346 run exe tests for both mentor and probe
349 more thorough testing :
350 have ubuntu and windowsxp clean vmware images
351 but with needed libraries installed
353 they will also pull from my draft repo and build it and test it on clean
358 --------------------------------------
360 --------------------------------------
362 - no question mark at the end of the question
365 - enable/disable markup easily
369 - different variants of column questions
372 sep by TABs , sep by many spaces
375 some when i column view
376 % ^\ exclude\{ } ^{ }
377 % This excludes the whole item from column view
390 - remember I have to design more generally (with full commands and all)
391 and enable some features as shortcuts and aliases -> see perl where some stuff
392 can be done more and less verbosely
393 commands may be abbreviated.
395 - options may be global in preamble and regarding the whole file
396 and local - regarding only some subset of file
404 - breaker class -> make it break by comma instead of / character?
405 when i don't want comma then i would need to escape it with backslash
407 this is, some text, to be more sure
409 this is/ some text/ to be more sure
412 - what shortcuts to use:
414 | | _ _ for cloze \cloze{
415 < > ^ ^ for set \set{}
416 // // / / for breaker \br{}
417 ,, ,, , , for breaker2 \br2{}
418 $ $ for verbatim code
419 <- -> TAB for tabbed breaks
423 ?? ?? hin in question
428 but make them work only in selected region so I don't get many false positives.
434 \command[]{ } and not \command{} []
437 and \\ is used to break line Like \newline
438 and \ is used to join (but it must be at the end of line - no whitespace after
446 --> what selects from text:
447 all, marked, parts, words, sentences, tabbed
448 --> when item is broken
453 --> how breaked , formatted
454 --> formatted or verbatim , how formatted
459 e.g.. grapical outputs coordinates
462 - how to find in document my markup quickly
463 -> have a special vim function/command to grep all or to jump to next
465 -> have special key to unerline \bs pu underline
468 hint in question \bs\ ? what are they
469 hint in answer \bs\ ! they are what
472 --> different classes:
473 \bs\ sp break on paragraph
474 \bs ss break on sequence
479 - beginning and ending statements vs. one statements
480 many statements do not need an ending statement e.g. when \begin
481 encounters next \begin then it switches to it automatically without any need
482 for \end - might note in documentation that it is optional
483 IS IT? this maybe in unsafe warnings mode
484 maybe use 2 forms instead : \begin{set} and \end{set} or \set{ }
488 - lisp markup - special way to mark hashstrings?? learn them in sm , author
489 many documents in them, convert play with them, collect info , read community
493 - make vim syntax file for the probe language .prb files basing on LaTeX
496 - all command-line options should be overridable in source -> like verbose mode and debug ??
499 - using command to a set of words:
501 this is \ignore{craze idea} said adam ~{follow me}
505 - the special chars like \~ should have their counterparts \ignore
507 - options should have default values e.g. \lang python or lang=python
511 - both forms are possibe either:
522 - what about other chars:
526 - should I use Markdown/Textile language to set formatting in text
527 colors emphasises statements ?
532 should I export it as a question answer or as a xml
533 this should be in command line options but in the file as well
534 ./probe --output=xml sample.prb
535 ./probe --output=qa sample.prb
540 - corpus: command line possibility of controling corpus behaviour
541 it may use different levels of popularity first 1000 , second 1000 etc.
542 does not use any words in first 7000 thousands
545 - corpus: automatic caching of corpus on start
546 automatically cache first 200-300 on enter and then cache on each read
547 also command cache to cache
550 - corpus: controlling corpus inside file
551 \ignored[level=7,cache=2]
552 the first 2 thousands should be in cache ??
555 - ast options improvements:
556 Parseoption restrictions like in optparse. 14:18 ([[2007.10.11#4]])
557 Parseoption restrictions like in optparse.
561 also positional and default
562 options so I can write something like this \title[good] or \title[good, ok,
563 best] or \title[good, type=ok] options should work as keyword arguments params:
564 position, name, value
568 exclusive options - some option may not exist at the same time .e.g include ,
569 exclude - must be able to specify that
572 - write proper error handling
573 Proper error handling would require writing a full-blown parser instead of using 00:16 ([[2007.10.24#1]])
575 will it make probe much slower ??
578 - how to discern between parsing and generating
579 right now processor class generates all parsed by custom parser classes?
580 ParseObject and GenerateObject
581 different algorithms used for parsing
582 and different algorithms used for generating items.
585 - IDEA on ParseClassCommand:
588 will be a general class with complex parsing algorithm allowing for many
589 tweaks by using virtual functions
590 the tweaks can be used by subclasses
591 this will be a complex algorithms
592 with many options : markers, switches, other functions
593 which may be set by subclass if they want to overrid
595 in another case it may select to override the whole parse_content function.
597 - Formats for output:
604 or html like (instead of my . language )
608 procedure dosomething
613 - markups for format:
614 \emph \bold \italic ??
615 maybe do it markdown format '' '' for light emphasis ''' ''' for strong
620 Right now they are superceded by || and // groups
622 Compromise: too less markup makes the text cluttered
623 and too much makes more chars needing escaping
625 Shortcuts aka special chars
626 There will be a set of special chars which will modify the meaning and
627 give some clues for extraction purpose.
631 this means the word will not be included in repetitions
633 ? words to be selected
635 General rule for character ? and ^:
636 their appearance in text determines whether I should rather exclude or
637 include words: they are also mutually exclusive - this can be checked as
640 Consider these cases:
641 Poland was raised in ?996.
644 Poland ^was ^raised ^in 996
646 The first one will ask for 996 only. The second will ask for Poland and
647 996 as they are not excluded.
648 By default I ask for all words (unless the \common directive
651 - General idea about Mentor Probe
652 Mentor Probe is to SuperMemo incremental reading like Latex is to word 0
653 Mentor Probe is to SuperMemo incremental reading like Latex is to word
654 on the other hand it may be possible to develop wysiwyg instead of vim only in
659 _maybe_ _this would be better_ _than_ _this_ 13:56 ([[2007.10.16#2]])
660 _maybe_ _this would be better_ _than_ _this_
662 _maybe this_would_be_better[?what][!clue]
666 - Maybe use lightweight markup to achives formatting for questions?
669 - corpus: pack/compress corpus tables
672 - probe import should use other tools antiword, language parsing tools , db
673 connection tools etc to extract necessary information and present it in a
676 probe import does the general preprocessing vim macros will do the rest and
677 last fixes are directly on the mentor database
680 - Sentence class: no need to escape ? ! outside | | groups
681 They should be treated as sentence separators .
682 Of course escaped \? and \! also should be treated as separators.
683 OR maybe probe --import should escape all of them before ???
684 BUT sometimes probe --import is not done !
687 - removing comments before distorts the line number and column number so this
690 - default class processing
691 make it dependant on the mode in which probe was run
692 In default mode all is treated as set class
693 If in strict mode all needs to be correct?
697 \code1 class break probe
699 I think that's because it begins with \code ??
705 --------------------------------------
707 --------------------------------------
708 But I can try to do the minimum to start learning:
714 - qt classes and utils
719 --------------------------------------
721 --------------------------------------
723 - info on site how users can contribute
724 filling bug reports, sending feedback and comments
725 getting and writing documentation
729 Linux: Freshmeat, KDE, PyQt
730 Python: python programs
731 KDE: Planet KDE programs , KDEApps
733 Wikipedia on learning on supermemo on programs python
734 Windows software apps: Tucows, Filezilla
735 Vim: Vim scripts : for Probe language
738 - Productivity tips blog
739 Blog on Vim and Productivity and learning
740 and Mentor development on Blogger/Wordpress
743 - must gather community - see about supermemo and flashcard programs ,
744 advertise mentor on linux/windows software sites , various distros, python and
745 qt communities and learning communities
746 also have databases of different items and advertise them .e.g tell people
747 there is vim knowledge database for SuperMemo and Mentor
748 BTW Mentor should be able to import from SuperMemo
750 - Educational projects promotion:
751 Kdeedu Edubuntu Eduforge
752 get in touch with educational project and promote mentor there
754 - Take part in KDE project (triage bugs, make some easy fixes: to get to know
755 people and have placed my mentor software) -- KDE 4.0!!
760 --------------------------------------
762 --------------------------------------
763 - Visio mode supermemo
764 graphic counterpart for emacs part
768 - 2006-04-18 13:31 folmert: Mentor graphics will have several incarnations:
769 0. in emacs quick testing (this more like text)
770 1. visio extended - for quick testing
771 2. supermemo light - a version of supermemo with ability to test my ideas
772 and quickly draw schemas and import bitmaps
773 and schedule for some time
774 3. in full supermemo session
777 - 2006-04-14 13:46 folmert: Mentor Graphics : at best do it as visio extension
778 the hidden surfaces might be as second layer - may be initially at bottom and
788 + testing capability -- all images and all blinks
789 only one spot is remembered
792 Learning Process Menu
794 Items List - Show For Tomorrow/For After Tomorrow/For Day
797 all operations on maps showing in List
803 automatically generating spots - ability to change them afterward
805 File - Create, Open, Print, Page settings, Print preview
806 Edit - Undo, Cut, Copy, Delete
807 View - Toolbars, Statusbar, Remarks, Diagram, Grids, Rulers, Define rules, Background
808 Map - Add, New, Delete, Duplicate, (without Goto First/Goto Last?)
809 Learn - 1. Outstanding, New, Final drill, Test current, Test all, Test selected
810 Tools - Import -- Probe plugin (seperate app), Copernic plugin
811 Help - Contents, Index, About
815 - Export to my graphic supermemo testing ground
818 Graphics SuperMemo may be done as a extension to Visio SDK
819 with objects that will disappear ?? or better bitmap ??
820 it would be nice to have such access to supermemo that I can export and not
828 --------------------------------------
830 --------------------------------------
831 - other repetitions programs:
832 SuperMemo (older versions too), Mnemosyne, FullRecall, Quisition
836 LATEX, RTF, Markdown, Wiki, HTML, XML, CSS, SGML learn and author in all possible to
837 get as many input and ideas ass possible.
838 Also converting between them etc.
840 - documentation for other projects
841 See all big projects and doc how the doc is done professionally: python,
842 apache, ubuntu docbook etc. , ion uses some special - big opensource projects
843 what they use , latex resources etc.
846 - put mentor design in supermemo / mentor itself for better understanding
849 - research parsing for computer languages and markup languages
850 TODO see how other parsers (XML, HTML) are written
851 think about it , design generally then write some specific prototype
852 Learn LaTeX/TeX well before I begin (using old Mentor first maybe??)
855 - work with different python and not python parsing engines:
856 PyParsing, ANTLR and others
857 try to write my own (HTML, XML, Lisp, Python etc.)
859 - repetition scheduling algorithm
860 this will be based on:
861 Leitner method of repetitions
862 Artificial intelligence: Neural net, genetic algorithms? - see mnemosyne ,
863 SuperMemo published method and Piotr Wozniak notes
864 common sense and my experience - repeating in increasing periods of time
867 - repetition parameters/factors
868 next repetition period length * factor
869 randomness spread * factor
870 database difficulty factor
872 how much increase the initial jump:
875 next repetition period lenght factor will be increased or decreased depending
876 on the notes given , history of learning etc.
878 perhaps have different algorithms to select next repetition and possibility to
881 - write a simulation package which will show how the item behave in future with
887 --------------------------------------
889 --------------------------------------
890 Google Code Hosting for download/tickets/wiki
891 Repo.or.cz for Git code repository
892 Google Groups for mailing list
894 - ideas about website : how the menu should look like
901 MENTOR is a tool for improving the learning process.
904 It can be used as a help in learning foreign languages , geography , science and
905 can be used everywhere, where there is a need to comprehend knowledge and
906 somehow memorize it and keep it in memory .
909 knowledge may be split into seperate items which can be memorized.
911 By learning process is meant extracting knowledge from written material,
912 processing it to more consumable form and then memorizing it and storing in
915 MENTOR helps by providing ways of extracting knowledge (by summarizing ) and
916 transforming it (emacs macros) to flashcards
927 Search personalization
932 --------------------------------------
934 --------------------------------------
937 - have a draft tree for working on many branches on different stuff with quick
938 commits every now and then
939 and move back and forth between branches (pu - feature branches)
941 - have official tree to which I send patches and which is synchronized with
943 the patches are fully described so that I can later get info about the
951 # vi:tw=79 fo=qt sw=3 ts=6 fdm=marker