[Userscript] The GanbarOmeter

Just a quick update on progress toward the next version. Not that anyone is pushing me for an update, but writing this stuff down as I go helps me to clarify the design and identify things that still need more thought. Still much to do, but at least the layout and fundamental logic is coming along.

Instead of “salting”/weighting the ganbarometer value based on recent misses, I’ve broken out accuracy stats into a separate widget. The ganbarometer only looks at items in the apprentice queue to calculate a “percentage of max difficulty”:

The screenshot above is still using fake data, but I’m getting closer to having the real next version working.

I’m still iterating on the design as I build it (including major changes like what widgets to show) but I’m increasingly confident that these are the most meaningful things to display. These displays are starting to feel “right” to me:

  • Difficulty (the ganbarometer): how many and which type of items are in early stages
  • Speed: the average number of seconds spent answering each question (meaning or reading)
  • Accuracy: the number of items answered correctly the first time (meaning and reading)
  • Workload: the number of reviews performed each day

The primary “knob” WK users have under their control is the number of lessons performed each day. Pretty much everything else depends on how easily they are able to memorize the information (some people need more repetitions than others).

The script still provides many settings (but with reasonable defaults) because every user has different preferences with respect to how difficult a workload they can handle before it becomes burdensome, how fast they want to go, or how much time they have to spend on WK.

The heuristic used by many is simply to keep around 100 items in the Apprentice queue. Honestly, this probably suffices for most people, but I feel the four widgets above provide more nuanced information and allow anyone to make better decisions on how many lessons to perform each day. I think it may especially help newer users who haven’t spent enough time on the site to develop a feel for when they are making things too difficult for themselves.

Notes on the new design

The statistical MAD technique to break strings of reviews into sessions is working extremely well. No more “magic number” setting to find the start of new sessions. (I do plan to have an advanced setting to override the maximum MAD, but the default of 2.0 should work well for anyone).

I plan to always retrieve and cache one week (7 days) of reviews. I’ll always present stale information from the cache first, and asynchronously update the displays when any new data is retrieved (a small spinner in the upper left will appear whenever newer data is being retrieved).

The input in the upper left lets you control how many of those days to analyze and display below (between 1 and 7 days). Once the most recent data is retrieved, adjusting this value will not cause any round-trips to the server. I’m trying to focus on performance and responsiveness. (I hate waiting for API responses to return before showing something meaningful!)

I’ll create both a light and a dark theme (with a toggle in the settings) as well as allowing users to override any of the colors used by any of the widgets. I’ll also allow users to insert the entire collection of widgets above or below any section currently in the DOM.

The ganbarometer will display green from 0 to 80%, yellow from 80% to 90%, and red above 90%. It will only look at items in the apprentice queue to calculate the value (with extra weighting for items in the first two stages, per my previous post).

Eventually, I do hope to look at upcoming assignments and fold that into the ganbarometer value as well, but the Wanikani Ultimate Timeline suffices for now.

By default, the speed widget will go from 0s to 16s at full scale. Values in the first and last quartile will turn the gauge yellow (values between 4s and 12s will display green, other values yellow).

By default, the accuracy widget will show green from 80%-100%, yellow from 70%-80%, and red below 70%.

The reviews chart will show the number of reviews per day, with the most recent day on the right. As discussed previously, the time of day to delineate a “new day” is a user setting (the default is midnight). Right now all values are displayed in green, but I’m hoping to make days with values significantly above or below the daily target highlight in yellow (it may be easier to just display the target as a horizontal line, though).

Clicking the “Data” nav element will reveal the “back” side of the display with tabular text:

Obviously, I’ve not gotten very far with the tabular layout yet, but the intent is to show the data that drives each graphical element:

  • apprentice items and weighting for the Ganbarometer,
  • stats for each session for the speed calculation (this will be a scrollable table as there may be many more sessions than days),
  • daily accuracy stats for the Accuracy widget,
  • and daily review stats for the workload chart (reviews/day).

As always, any feedback is more than welcome. I do think this version will be much more straightforward to use and understand. If you’ve been shy about mentioning any other desired features, now is the time to bring them up.

Onward!

3 Likes