I started working on kyoubenkyou in 2022 because I wanted to replace my Anki kanji deck with my own tool tailored to how I like to study.
The name is 今日勉強, where 今日 (kyou) means “today”, and 勉強 (benkyou) means “study”. I really liked that it’s a kind of syllabic palindrome.
To start, I figured that I could write some smaller tools that would be useful for studying Japanese in general, and keep adding new tools until I have a compelling suite of study tools.
At the moment, the only launched feature of the site is a hiragana and katakana quizzer. It looks like this:
You can try it out here.
I put a lot of thought and effort into how to quiz items in a way that felt good, and I’m still not certain it feels truly great. Pseudo-random or random never quite feels right. For example, you never want to see the same element appear twice in a row during quizzing. So, there’s 3 strategies:
- LeastQuizzed: Shows you the element that has appeared least often globally. This helps to expose you to new elements instead of seeing a lot of repeats.
- LeastRecentlyAccurate: Shows you the item that you’ve recently struggled with, using a rolling average for accuracy. If we didn’t have this, we wouldn’t reinforce things we’re struggling with at the moment.
- LeastGloballyAccurate: Shows you the item with the worst lifetime accuracy, disregarding recency. This is a measure to make sure really old items aren’t poorly remembered and never quizzed.
Of these 3 strategies, I pick a certain frequency of how often we’ll use each strategy to sample the next quiz item. All data is stored in localStorage allowing the app to be a simple JS+HTML app.
I found I was fairly good at identification with default fonts at large sizes, but sometimes struggled more at very small font sizes or with hand-written fonts. So, the app allows you to choose whether you’d like to study more typographic variations of the characters. I noticed that kanji can look quite different at different font sizes, so wanted to incorporate this aspect into the quizzers.
kyoubenkyou is a next.js website hosted with Vercel, and I authored every component of it using a Storybook-driven development methodology.
My longer term goals include:
- Soon: a number quizzer, already WIP. Reading and pronouncing numbers in Japanese is a bit different than in English
- Choose your own Kanji adventure. Some kanji built upon others. Once you learn a certain base, you can learn more that use that base kanji as a sub-component. Designing a directed tree of kanji could be interesting and a neat way to explore the space.
- Study periodically throughout the day on your Apple Watch
- Study from your Mac screensaver, showing you words or kanji you’ve studied recently as a refresher, or previewing new words you’ll learn soon
- Write my own web dictionary using publicly available datasets