[Userscript] The GanbarOmeter

That’s awesome and much in line with my own thinking. Thanks!

I’ve been messing with plumbing all day — trust me I’d rather have been coding. Construction, electrical, machining, welding, woodworking, even roofing or digging, no problem. But plumbing … man I hate plumbing.

But the dishwasher is functional again so now I’m on my own time again.

3 Likes

Plumbing scares me. Do it wrong and it might cost you tens of thousands of dollars. Hopefully you’re a bit better at it than I am

2 Likes

My beef with plumbing isn’t competence or knowing my limits, it’s that it is so infrequently possible to bring the work to you! You can so rarely work at a bench like a civilized human being.

Instead you have to go to the work, which invariably means crawling around in wet, filthy environments reaching up and around things where you can’t see or fit your tools. When you finally do get a tool where you need it, with countless bruises and scraped knuckles, you realize you need someone else on the other side where you can’t reach to hold a pipe wrench or whatever and there is nary a helper to be found within shouting distance.

Fortunately, I have built up the required vocabulary (e.g. “let’s go plumbing”).

1 Like

It’s interesting: it appears you might be having the same cognitive dissonance I’ve been having. :grin:

I note that your original “expected daily” calculation used only the srs_stage of item and ignored the available_at dates. Your newest algorithm does it exactly the other way around (uses available_at and ignores the srs_stages)!

I think both srs_stage and available_at are important and should be considered in whatever the next iteration of this script presents.

While I’m still pondering and haven’t come to any firm conclusions, I’d like the gauge to encapsulate both the “expected daily” quantity and an estimate of the difficulty of upcoming assignments.

My current thoughts:

  • Quantity is easier than difficulty to calculate and reason about. Or at least less contentious.

  • Things I’m looking at with respect to quantity:

    • When items are scheduled for review

      • Count of items available now
      • Items available over the next 120 days
        • total count
        • total counts by srs_stage
    • Peak and median counts per-day of scheduled items

      • Median is useful as it won’t over-weight outliers
      • On the other hand, peaks are also important. If I have a huge number of enlightened reviews all scheduled on the same day, for example, I’d want to take it into consideration.
      • It may also useful to break this down by srs_stage
  • Things I’m looking at with respect to difficulty:

    • The srs_stage breakdown of upcoming assignments.

      • Stage 8 items are typically better memorized than stage 1 or stage 2 items, for example
      • On the other hand, items you haven’t seen in a month or four can often seem brand new.
    • Incorrect counts and “streaks” of correct answers (both current and max).

      • If I’ve answered an item incorrectly 200 times, it’s fair to assume I find it difficult.
      • If I’ve only seen an item 1-3 times it’s fair to assume it’s more likely to be difficult.
      • I’m unsure if there is anything to be gleaned from max streaks (vs. current)

With respect to that last set of points, I really like the algorithm @prouleau (and others?) use for leech status with the review_statistics endpoint: IncorrectCount / currentStreak**1.5 . I also agree that it seems unnecessary to distinguish between reading and meaning mistakes: the gauge should use whichever is worse.

Whatever the final algorithm ends up being, I think it should probably use most if not all of these things as inputs for the calculation.

Because I’m not completely confident I’ll come up with an optimal calculation, I definitely plan to allow users to assign their own weights to whatever inputs the script will support.

I want the defaults to be meaningful to as large an audience as possible, though. You shouldn’t need to understand what all these inputs mean or the best way to combine them into a single figure of merit just to use the script. But I do plan to allow “advanced” users to come up with potentially better weighted algorithms.

2 Likes

I don’t think that’s quite right in my case. When I created Expected Daily I just wanted something simple and easily understandable, that’s why I used the SRS stages. I think of them more as a proxy to the duration until due, but more approachable.

I do agree with this, however, as items coming back after being reviewed should also be counted.

While this is a reasonable approach, I think I would prefer to have it by the hour instead, as whether your reviews are due in the morning or evening may affect when you want to do your lessons

I’m not sure that this is really necessary, as a larger number of items will always translate to a higher score. If you simple score every item individually and sum it up, then that will account for the difference between a large number of guru items, for example, and a large number of enlightened items.

I imagine you could gather some stats on which SRS stages people mess up on the most

That’s probably a really good idea

1 Like

I think adding a launcher for the self-study quiz to this was about the best thing I’ve done for my own personal learning. It’s incredibly useful for anyone that hasn’t yet reached level 60 and only does their reviews once or twice at most per day.

I’m definitely going to make it the default to have radicals, kanji, and vocabulary checked in the preferences so that they are included in the self-study quiz. Those extra reviews of all items (not just kanji) are making my morning sessions a little longer, but the improvement in my retention has been dramatic. It also seems to be speeding up my time-on-level which isn’t really surprising, but I don’t really think that’s important.

In case anyone is interested, I’ve changed how I use the self-study quiz with this script.

My daily study routine

First I created a new self-study preset:

Once I launch the self-study quiz, I also enable audio (I use headphones) and disable pairing. Pairing feels easier to me, too much like cheating. It’s amazing how often recalling the reading reminds me of the meaning, or vice-versa. Getting intervening questions between the pairs is kind of a mental palate-cleanser that helps to overcome this “cheat”.

(I’ve also disabled lightning mode as I prefer to hit enter to move forward, but that’s a personal preference.)

With this configuration, I’m asked the normal reading and meaning questions for each item just like the standard WK reviews (except that it also reads aloud the pronunciation you just typed whenever you enter the correct reading — which is a little distracting, but it doesn’t hurt).

The last checkbox quizzes you on vocabulary production by presenting you with the meaning (written in English) and asking you to type in the hiragana for the Japanese word (like kamesame or kaniwani).

I really, really, REALLY wish I’d been doing this since the beginning. Practicing recall in both directions helps cement things into your brain.

I’ve been wanting to start using kamesame regularly for ages, but I didn’t want to allocate more than an hour or so each day studying Japanese and Wanikani already consumes most of that. I told myself I’d eventually transition after I plateaued here at level 60 and started burning off items without adding more (queue little red-haired girl singing “Tomorrow, tomorrow!”).

Because items quickly transition past stages 1-2, though, getting production practice in small batches like this with the self-study quiz doesn’t really add take too much extra time: I rarely have more than a few dozen items in stages 1-2.

Since WK isn’t really about teaching vocabulary, I think the tradeoff of only quizzing on production for stage1-2 items is quite worthwhile. Once I transition away from mostly studying kanji and focus more on production, grammar, and reading I’ll start using other tools but for now this seems the best of both worlds.

The following morning routine has been working exceedingly well for me in practice over the past several days (as I’ve written: I typically only do one review-session per day):

  1. Bring up the dashboard (refresh the page since it’s usually still there since yesterday) and glance over my status. Mostly, I just glance at the gauges and see how many reviews are currently in my queue.

  2. Click on the self-study launcher, which remembers my configuration choices from last time (shown above).

  3. Make a first pass through all the stage1-2 stuff. If I’m still in the early stages of a level, I’ll inevitably get several kanji and vocabulary items wrong. Each time I get something wrong, I hit “f” to refresh myself with the correct answer.

  4. Continue until finishing all items until the review page comes up. If there are more than two or three wrong items on the review page, I don’t even bother to look through what I got wrong. I just hit “enter” and start another pass.

  5. Usually, I get fewer wrong on the second pass, but if I don’t seem to be making progress, I sometimes click the “re-quiz” icon to just quiz myself again on the items I get wrong. Extra reviews for just the items I missed goes very quickly and usually suffices to start getting those items to stick.

  6. I continue making full iterations through all stage1-2 items until I’ve made a pass with 100% correct. My personal rule is that re-quizzes don’t count: I have to be able to answer all of my stage1-2 items correctly before starting my “real” WK reviews.

  7. Only now do I start my WK review session. In practice I’ve rarely spent more than a few minutes getting to this point.

  8. I continue doing reviews until there are no more reviews currently available. On the very rare occasion where I just don’t have the time to finish them all in a single session, I try very hard to do an extra review session in the evening to get it down to zero.

  9. Only after completing all my available reviews do I even consider doing my lessons, since how much time and energy I still have in the tank is part of the calculus.

  10. If the GanbarOmeter is to the left of the green zone (or at least to the left of the upper limit) I’ll usually try to do at least five lessons. Toward the end of a level when I’m seeing mostly vocabulary (which I find easier) I might do 10, 15, or even 20 or more lessons if they seem easy and I’m feeling particularly gung ho, but I try not to do more than 20 lessons at a time just to reduce my workload for the coming days.

That’s what works for me. I’d welcome any thoughts anyone else might have.

2 Likes

I’ve been using something very similar since I installed the ganbarometer. I have now switched to the same self study preset, good idea! Having the extra prompts really helps exercise the brain.

Question for you - when doing lessons do you like to finish out the vocab from the previous level or hit the radicals/kanji/vocab from the new level? I’ve got the reorder script enabled to make sure I finish my previous levels vocab first.

Hello! Thank you for making this script. However, the font appears to be broken for me:

broken

What should I do?

Thank you!

Yes, absolutely. But for lessons this is default behavior, no?

I’ll often pause doing lessons for a day or three once I start to see radicals/kanji for the new level in my lesson queue.

I don’t use the reorder script.

That’s odd. Have you tried disabling other scripts?

Can you tell me about your environment (browser, OS, anything else installed)?


The script doesn’t install or style any fonts. It should use the default fonts for lang=ja which is browser dependent.

Do kanji characters appear normal everywhere except with this script? I’m unsure what could possibly cause that.

I only have those two scripts installed:

(Came back from being overwhelmed with reviews a few years ago and restarted from scratch.)

The Japanese characters do appear correctly everywhere else.

I’m using Chrome on Windows 10.

Very odd. At this point I don’t even have a hypothesis, so my only additional suggestion is to shutdown and restart your browser to see if the problem persists.

You’re the first to have reported this problem, so I suspect it’s something to do with your environment, but it may take a bit of investigation to get to the bottom.

I’ll try to think of other debugging steps, but I’m mystified at the moment.


Do you have any other Chrome extensions installed other than Tampermonkey? It’s worth disabling them as well (as a temporary experiment).

I disabled every other extension and restarted the computer, but it doesn’t change anything. Other characters show up weirdly too:

This is making me suspect that the character encodings were somehow corrupted during installation.

How did you install the script? Did you cut-and-paste anything? Did you install via the URL option as described in the top post? Or did you browse to the raw github page and click “install” when prompted by tampermonkey?

I think the safest bet is to uninstall completely, then reinstall:

  1. In the Tampermonkey Dashboard, navigate to the “Installed Userscripts” tab.

  2. Click the trashcan icon next to ganbarometer-svelte.

  3. Navigate to the new trashcan tab that should have appeared.

  4. Click “Delete all”.

  5. Follow the directions in the top post to reinstall.

Let me know if the problem persists. (Fingers crossed.)

It’s better! Now it seems the only broken character is the central one:

broken

What changed?

I visited this link to install it directly: https://github.com/wrex/ganbarometer-svelte/raw/main/published/v4/bundle.user.js
Before, I imported the URL.

Interesting, I’d have thought that was the most reliable method.

I think you’re now seeing a caching effect. Please restart your browser session again and see if it persists.

It makes no sense at all to me that it would display characters correctly in one place but not another.

Still doesn’t work. What if you give me what’s supposed to be displayed and I change it manually here?

1 Like

Oh! That explains it.

When you had the broken script, it saved the corrupted values in your settings (stored locally by your browser). When you installed the uncorrupted script, it still used those saved settings.

Just click the default button, then save. I’m reasonably certain that will fix it.


Clicking “defaults” should make it look like this:

2 Likes