roam-unofficial / roam-toolkit

Roam force multiplier
MIT License
475 stars 43 forks source link

SRS: ideas and discussion #1

Closed PiotrSss closed 4 years ago

PiotrSss commented 4 years ago

What can we do with this feature to make it more configurable?

Bucket names

Should users be able to decide what name they use for their buckets/boxes pages? [[Bucket 1]] vs #[[Bucket 1]] vs #box1 vs ...

Shortcuts

The idea behind the SRS is that you go forward, but you need to go back too if you couldn't answer. Should it be available by shortcut too? If yes, -1 or reset to first box, or both options? (personally I sometimes change to prev box, sometimes reset to first, depends of how important it is, how I feel about my answer, etc.) I assume we all agree that shortcuts should be configurable by the user.

Reviews

Should there be some indication (red icon in top right?) that you have things to review? Or leave it for the user to track that via their daily notes? Some additional layer/modal to review, similar to https://www.remnote.io/queue ?

Stvad commented 4 years ago

yeah, I always intended to add reset at some point :p Initial version is more of poc :). Didn't have -1 in mind, but I imagine we can have that too, though maybe with no shortcut assigned by default?

I assume we all agree that shortcuts should be configurable by the user.

Yep, that's fairly easy with webextensions

For configurability - I envision we can give users ability to enter their regex(as long as it contains number group) + output format

Stvad commented 4 years ago

https://gist.github.com/andymatuschak/35be2a2041eda6773347a61ce75cb641 extracting cloze from markdown

Stvad commented 4 years ago

also from #3

For srs I have been wondering - we can actually implement the proper SuperMemo algorithm and not just lietner box kind of system. Would it make sense to do so?

https://apps.ankiweb.net/docs/manual.html#what-spaced-repetition-algorithm-does-anki-use a basic implementation of the Anki one should be straightforward

houshuang commented 4 years ago

I don't think the algorithm itself is hard, but I'm curious about how you see the UX? I guess you need to keep some metadata for each question (current ease, next scheduled day etc) - either in the plugin, or in Roam.

Stvad commented 4 years ago

yeah, I was pondering on that in Slack:

the main issue would be finding a good way to encode the ease and interval nicely. Easiest to implement is doing it inline. kind of ugly though making them properties feels natural, but less straightforward to implement with current tools

I guess something to experiment with. I would not want to store metadata in the plugin - would prefer to have it encoded directly in the items.

Though having it in plugin would allow for more sophistication in scheduling/etc if we want to go there

Stvad commented 4 years ago

Leitner system is nice for Roam, as it'd prevent you from loosing cards even if you haven't reviewed them on time. I think interval can play a similar role for SM-2 maybe?

PiotrSss commented 4 years ago

Having data stored in plugin is not that great, people might want to use multiple devices and/or browsers. Also ability to install webextensions in mobile Firefox is not that far away, AFAIK, if that could work there, it would be awesome, people love to use SRS on mobile. In powerpack for DL I used SM-2 and stored that in special document created only for that purpose, but here we can't and personally I don't want to have mess in my notes, so I vote either for Leitner or waiting for more API options.

Stvad commented 4 years ago

https://github.com/gmcmanus/anki-roam-import defines a syntax for cloze.

which we can simulate with

- :hiccup [:style "span.cloze { background-color: #1f2b33; } span.cloze:hover {background-color: white}"] 

- Outer message {{embed: ((oR_QCTewE))}} that continues after cloze block
- :hiccup  [:span.cloze "cloze block" ] 

example here: https://twitter.com/VladyslavSitalo/status/1231709055560736769

PiotrSss commented 4 years ago

There is another scheduling algo, described here https://github.com/fasiha/ebisu with version for JS https://github.com/fasiha/ebisu.js I found that by accident, don't have time to read all and don't know if it could be used in roam-toolkit, but you might be interested

Stvad commented 4 years ago

Thanks @panpiotrs !

Stvad commented 4 years ago

Just skimming through https://github.com/fasiha/ebisu/blob/gh-pages/EbisuHowto.ipynb it seems to require a global "database" view, which is complicated, at least until we can do datalog queries

Stvad commented 4 years ago

or maybe not? https://fasiha.github.io/ebisu.js/ seems to work with just 3 numbers, which seems doable to locally encode. Would dig in deeper in a bit :)

Stvad commented 4 years ago

Ok, so on looking at it closer just 3 local values seem to be enough. And it has a variety of interesting properties. I'd be curious to compare it with my simple sm2 implementation in the srs_sm2 branch.

Stvad commented 4 years ago

25 Has a working implementation of sm2 :) still experimenting with it

Jaydon-chai commented 4 years ago

Hey, is it possible to have the sm2 data be stored in a non [[]] format? It's a bit of a pain on the graph overview to see the tags displayed.

Stvad commented 4 years ago

@Jaydon-chai create a new issue for it? Graph view hasn't been useful for me for a long time, so I kind of haven't considered this one. I'd still definetely want the interval and factor being pages, but the specific number versions didn't end up being useful..

Stvad commented 4 years ago

Closing this as it's better to have specific issues

Positron010 commented 3 years ago

Hey, and thanks for your hard work!

Can you please consider implementing Ebisu algorithm again? At least giving the user the choice to use it.

The majority of Spaced Repetition programs implement the SM-2 algorithm, and there isn't a public-ready application that implements Ebisu yet. I think implementing it, at least for me will be an attractive point. The author of Ebisu is also active on Github and kindly responses to any doubs and questions.

Thanks! @Stvad