Anki addon: maintained progress

Just comparing your config with the documentation it seems to me that you have an unnecessary set of brackets around your beeminder_slug:

You:

{“auth_token”: “...”,
“goals”: [{“beeminder_slug”: [ “anki” ],
“filter”: “deck:Testowanie oprogramowania”}],}

Docs:

{"auth_token": ...,
 "goals": [{"beeminder_slug": "japanese-maintained-progress",
            "filter": "deck:Japanese"},
           ...]}

Try changing [ “anki” ] for “anki”.

Also, looks like funny double quotes to me ( vs. "), but I don’t think that’s it.

3 Likes

This is my working config (no filter):

{
    "auth_token": TOKEN,
    "goals": [
        {
            "beeminder_slug": "mprog"
        }
    ],
    "pessimistic_reports": {
        "days_ahead": 10
    },
    "update_after": {
        "finishing_reviews": false,
        "syncing": true
    }
}
3 Likes

Ah, I didn’t know I also had to review the added cards to have them saved in beeminder! Sorry, my mistake. I am poorly versed in how beeminder works yet. Thank you for your reply

1 Like

Honestly writing, I have no idea where the [ ] in my previous post came from. Now I went into the add-on configuration and I have correctly: “anki”.

Today I added 33 flashcards to the whole collection (different decks). In beeminder the number increased by 54 flashcards. How is this being counted?

I am missing filtering by deck. I want my goal to be to add flashcards from a specific theme every day.

How does “finishing_reviews”: false and “days_ahead”:10 work in your configuration? Sorry, but I didn’t understand the documentation

1 Like

So this add-on might be a bit unintuitive (it was for me in the beginning, but I have learned to love it). For me, what helped me understand is a mindset shift from “input” to “output” tracking:

You are probably expecting it to somehow track what you did (your work input). But it does not. It tracks the state of your deck (a result from your work input). Specifically, it tracks

the number of cards that you have started studying and are caught up on reviewing

, which you could rephrase as “all the cards you have successfully stored in your brain using Anki”[1]. @bluetulip calls this “rotestock”. Some cards in the rotestock will leave the rotestock again when the become due to study and you forget or ignore them. New cards will get added to the rotestock when you learn them.

There is not really a way to control how much you have to study each day, but rather at which state you need to keep your rotestock.


  1. So, naturally, cards you added but never studied are not part of this. ↩︎

2 Likes

How does “finishing_reviews”: false and “days_ahead”:10 work in your configuration? Sorry, but I didn’t understand the documentation

I recommend reading the docs/examples that you can see when you go to Anki > Tools > Add-ons > Beemind maintained progress > Config (or similar):

auth_token: Your beeminder auth token. You can find it in the "Apps and API" tab of your account settings on beeminder.
goals: Your beeminder goals. Goals can track maintained progress of your whole collection, or you can filter by deck, tag, note type, or anything else that you can search for. Examples:
Just one goal for your whole collection:
{"auth_token": "tHis1sAf4keT0ken",
 "goals": [{"beeminder_slug": "anki-maintained-progress"}]}

Several goals, for different things:
{"auth_token": "tHis1sAf4keT0ken",
 "goals": [{"beeminder_slug": "japanese-maintained-progress",
            "filter": "deck:Japanese"},
           {"beeminder_slug": "n4-maintained-progress",
            "filter": "tag:n4"},
           {"beeminder_slug": "kanji-maintained-progress",
            "filter": "card:kanji"}]}

update_after: Indicate whether or not you want the addon to update beeminder after syncing and/or finishing reviews.
{"auth_token": "tHis1sAf4keT0ken",
 "goals": [{"beeminder_slug": "anki-maintained-progress"}],
 "update_after": {"syncing": true,
                  "finishing_reviews": true}}

pessimistic_reports: If this is set to a number greater than 0, the addon will post pessimistic predictions for future days, so the goal will default to what your numbers would be if you don't do any reviews. The addon will automatically update these. The days_ahead value will indicate how many days of pessimistic reports to post.
This will produce pessimistic reports for the 14 days that a beeminder graph shows ahead:
{"auth_token": "tHis1sAf4keT0ken",
 "goals": [{"beeminder_slug": "anki-maintained-progress"}],
 "pessimistic_reports": {"days_ahead": 14}}

This will turn them off:
{"auth_token": "tHis1sAf4keT0ken",
 "goals": [{"beeminder_slug": "anki-maintained-progress"}]
 "pessimistic_reports": {"days_ahead": 0}}

This is where I learned from. "finishing_reviews" refers to the sync ("update_after") and pessimistic reports are explained in detail here.

1 Like

Ah, and for the deck filter: I have never tried that, but I have no reason to believe it wouldn’t work if you set it up exactly like in the example config. :slight_smile:

Edit:

I noticed that “deck:Testowanie oprogramowania” should be "deck": "Testowanie oprogramowania" (quotes). I’d just copy the examples and paste in your decks/slugs/key.

1 Like

It turned out that the filtering not working was due to the fact that the deck name has a space! When I changed the deck name to one word, the filtering works properly

2 Likes

I always thought maintained progress referred to the fact that someone had started maintaining my abandoned add-on, so I never looked really closely at this thread. When I realized it was an entirely different metric, I obviously wanted to try it out.

I had been getting these weird huge jumps, which I attributed to not really grokking the metric. In practice, I’d get a beep (Beeminder emergency eep day), do all my outstanding reviews, study some new cards and only barely reach my minimum for the day. The next day, if I synced the add-on, there’d be a huge jump.

Today, I figured it out (since I’d be derailing otherwise). The graph looked like this at the start:

I did everything I possibly could. And … my rotestock was lower than it had been just two days ago?

The add-on basically searches for cards “-is:suspended -is:new -is:due -is:buried -prop:due<=0”. If you have notes with many cards, say 5, and you’re reviewing 100 of them with the bury related cards option(s) checked, that potentially adds 400 cards to the buried count, which will subsequently be subtracted from the rotestock count. The next day, those automatically buried cards will be unburied again, and the metric will jump.

Immediate fix? Unbury before syncing!

Possibly, the metric should be tweaked a bit. But I don’t believe Anki makes it easy. There’s no way to search for “overdue” buried cards (which are the only ones that should be subtracted from rotestock IMO) that I can think of. Might need to be a feature request for Anki? But definitely a nice add-on @bluetulip!

5 Likes

Thanks for finding that out, @ianminds!

I’m experiencing that weird behavior right now, where studying more gives me a lower rotestock due to buried (but non-due) siblings.

This is not a subjective choice but probably a bug, right? I don’t think undue buried cards (learned) are supposed to count against the rotestock.

As for fixing the add-on metric, isn’t it super simple? Just remove the -is:buried from the search condition: -is:suspended -is:new -is:due -prop:due<=0.

With this fix, buried cards which are due will still be included due to the -is:due -prop:due<=0 conditions (so we cannot cheat by just burying the cards instead of studying). But buried card which are due in the future (and only buried because of the “bury siblings” feature) will not count against the metric now.

I tested it locally and made a pull request for that. Let’s see if @bluetulip agrees that future-due buried cards should belong to the rotestock and not count against it (after all, they are not due yet and assumed to be remembered).

4 Likes

Update: Not sure if @bluetulip is still active and/or maintaining the add-on, so for the meantime I’ve created an Anki add-on with that fix. It’s the exact version that can be seen in the pull request, i.e., all it changes from the original add-on is removing the -is:buried condition.

How to use: Install/download like the original add-on, use the same config. Disable/uninstall the original to avoid conflicts.

5 Likes

Thank you. I just merged and published this fix.

Incidentally, does anyone have recommendations for beeminding keeping on top of stuff like this that can come up?

ETA: I accidentally uploaded the wrong addon the first time. I hope no one tried to install it in the 10-15 minutes before I realized my mistake.

2 Likes

Awesome, thanks. :slight_smile:

Heads-up that my desktop Anki hasn’t updated my Beeminder goal since I accepted the recent add-on update yesterday. Any ideas what I should look for?

Update: when I manually click the menu item ‘Update Beeminder’ it works. So it seems that what has broken for me is the automatic sync on start/quit of the app.

1 Like

Thanks.

I have no idea why it was working before and not after that update, but the hook code was out of date and after updating that the issue I saw was fixed. I’ve uploaded the new version. Let me know if you still see any problems.

2 Likes

Hi!

I just studied/reviewed a bunch of new words and then synced to beeminder, but no data pointa have been added to beeminder … “anki” is the name of my goal within beeminder. Note: I am NOT getting an error when I sync to beeminder, I’m just not getting any data.

This is my config:

{
“auth_token”: “REDACTED”,
“goals”: [
{
“beeminder_slug”: “anki”
}
],
“pessimistic_reports”: {
“days_ahead”: 0
},
“update_after”: {
“finishing_reviews”: true,
“syncing”: true
}
}

Thanks so much! I am still having the issue as reported by @philip, and I’ve updated the add-on.

EDIT: the problem was fixed by uninstalling and reinstalling the add-on, rather than simply clicking “Check for Updates”

2 Likes

I’m not sure what’s up. Your config looks good and the addon is working for me. Maybe try uninstall and reinstall as that worked for katriel?

Thanks. Let me ask two basic questions:

For it to work, do I need to do reviews on the computer where the add on is installed (as opposed to mobile, for example)

And,

When does activity get logged, when a new card gets reviewed?

It works no matter where you do your reviews. Then whatever the current rotestock number is gets sent to beeminder when you finish doing reviews on that computer and/or after you sync. So for example if you do reviews in the mobile app they should show up on beeminder after the computer that has the addon installed syncs those changes to itself.

Updating beeminder in each of these cases can be turned on or off in the update_after portion of the config; you’ve got them both turned on.