speki-cli 0.1.5

cli version of speki
easily change location where new cards added
handle merge conflicts in program
add key-value tag system
easy backup of reviews
metadata of cards separately, like suspended, custom tags etc
more exporting options
way to sort unfinished cards by how many cards they'd unlock lol, basically like, if 1 card has 2 unfinished depdencnies, then each dependency "unlocks" 0.5 cards, if two cards depend on 1 unfinished card, that cards unlocks 2 cards, works recursively
use health trackers to calculate recall rate?

# done
log in with github
create remote thing, where you use github to create new repo up there
view card interface



# thoughts


card types

# class

for example: Country, War, Person...
can also have sub-classes

for example, Woman is a sub-class of Person

# instance

a specific instance of a concept, so for example, WW2 is an instance of War, Marie Curie is an instance of Woman, which inherits Person, basically

# attribute

pre-defined questions for instances of a class. Each class can have some questions that are relevant to instances of its class. For example, when was {} born, can be under Person, then both instances of Male and Female will inherit that question, then you can have attributes specific to for example Female such as "whta is marie curies mtdna?


# instances where a certain property is obvious

ex: what is mossad?

as an instance, the answer would just be "a national intelligence agency".
but it's in the name "national" that it necessarily has a specific nation attached to it.
hmm


the most proper way is to just have a card where you state its a national intelligence agency and then a question will be about to which nation it belongs

maybe the class "national intelligence agency" can have like required attributes, so the card will still  be seen as pending or something until that is learned,
and the recall rate of the instance card will be the minimum recall rate of all its required attributes?


# cloze stuff

i think, statement cards should also be cloze cards? would fit well i believe


# precision types

certain things can be known to various degrees of precision, mainly numerical stuff

for example, when did something happen. it's not wrong to say that ww2 started in the 20th century, but it's also pretty imprecise.
atm i have separate cards that ask about when something occured in various precisions, and they depend on each other.

it works pretty well but it's not very elegant. Ideally i'd just have one card that represents when something happened,
and then speki could ask to various degrees of precision, based on what is available.
the reviews file can include not just whether the right answer was given, but to what precision. then it could keep track of how well
it knows each precision level. for example, if it asks about the decade something happened, it would also update the recall rate
of the century of it happening, but it would not update the recall rate of which year. if you fail to give the decade, it would not
fail the century version of hte card, but it would fail the year version of it.

similarly for certain numbers. For exampe, how fast the speed of light is, or X digits after pi.


# attribute generation helpers

on classes like person maybe there should also be some questions that are meant to generate correct attributes
for example, on a person instance,  we might specify if the person is dead or alive, which would change certain attributes like if it should ask how/when someone died, or whether it should use "is" or "was" to refer to the person


- should i rename attributes to properties?


# event stuff

event classes, i think it should be a separate thing from other classes, because they often involve more than 1 person

example:


eventclass

name: wedding
pattern: wedding of {} and {}
types: [Person, Person]

event instance:

subjects: [bob, alice]
time: 2020-06-06

event attributes:

when did $1 and $2 get married?
where did the the mariage of $1 and $2 take place?
how many guests were in the wedding of $1 and $2?


hmm with normal classes:

class

name: Marriage
template: marriage of {$PersonId} and {$PersonId}


attribute:

where did the marriage of {} and {} take place?
when


instance:

- because it has a template, creating a new instance of this won't require free text but rahter just the user to
insert the relevant cards (that contain the right ancestor class)


# jsonnet

could jsonnet be used for card generation?


# seq list multiple questoins


maybe sequential stuff can ask each thing one after one?

for example, if it asks what year someone was born
it can ask like, what century he was born, then immedialty what decade, e.g..

or for names, like i struggled to memorize this name: Antonio de la Cierva y Lewita

it can be expressed as a seq list

so it asks one word at a time, and you write when you fail on it basically


# events as traces?

similar to how traces have that view and sub-branches

each event can be part of another event in a trace-like thing

for example, a battle is an event, and its entirely within a war
on the hierarchy, the topmost 'trace' would from the big bang, the start of time itself, that one is still going on.