Javascript: Japanese MVP Milestones
02/09/15
All right, so minimal steps to making a kanji study tool (which can maybe eventually become an encompassing Japanese learning tool).
Step Zero: This Plan
Before I do any real work, I'm doing this blog post. This time, it's even in my git repo proper.
Step One: Blank Screen
So, like with my click jump MVP, the first step is the blank screen. Which consists of empty javascript, html, and css files. Then some skeleton html and javascript files setup for basic addition of features.
Step Two: Display a Word in Hiragana
This should be easy. Unfortunately, typing in Japanese characters isn't currently a feature of the shell application I use on my chromebook. So, I'll need to put the individual characters in via their Hiragana Syllable Entity Codes. This is fine. It's a minor annoyance for one word, but the process will be automated when I'm building vocabulary flashcards more dynamically.
Step Three: Transform Hiragana Word into Kanji Version
All right, here's where some actual Javascript will come into form. I need a function that will take in a word written in hiragana and return that word in kanji. The final version of this function will need to be more complicated/different, because a hiragana word could have multiple different kanji/meanings, and a kanji word may have multiple different pronunciations/meanings.
For now, though, let's add in some stub functionality so we can move on from here.
Step Four: Link to Further Resources on Word
This is what I would like the reveal to look like:
- Link to Japanese-to-English translation
- Link to Japanese kanji stroke-order
- Link to Japanese dictionary definition (pure Japanese)
- Input asking the user if they were correct
Step Five: Hard-coded "Database" of Kanji Vocabulary
The idea from here is to have list of vocabulary words for the user to iterate through. Again, this is a thing that would at some point be dynamically created and maintained, but for now I need a hard-coded element I can work with to understand how I will want the data-structure to work.
Step Six: Iteration Run of "Today's" Kanji Words
So, each kanji will have a time-limit associated with it before it's necessary to test the user on it again. A kanji is tested when all words the user could know that use that kanji (aka all words with that kanji that contain only kanji the user currently knows). Once all kanji words are tested, if the user got all words correctly, the wait-time will be doubled, otherwise it'll be readded to the current pile of words to draw from.
So, to start off with, let's have a setup where all words previously hard-coded need to be tested. Every failed input will be repeated to the user eventually, whereas all successful inputs will be put into the "tomorrow" pile (eventually no new flashcards will be shown to user).
Step Seven: Users
This is going to be useful only if each user has their own flashcard set. And anybody having access to my setup could allow for a lot of lost work on my end. So, it's time to learn how to have users with their own login information and settings. Actual node.js usage, here I come.
Step Eight: Actual Kanji Database Per User
The user is going to want to grow their Japanese vocabulary, both spoken and written, and the first step to that is going to need to be saved somewhere server-side. So, doing that without a user interface is a good first step to doing it with a user interface.
Step Nine: Kanji and Vocabulary Building Via User Input
So, there needs to be a user-directed way of building the kanji the user wants to keep in their brain. Ideally, there would only need to be either hiragana input or kanji input and then a dynamic search would bring back the maybe multiple results and the user picks the one they're intrested in. For now, it'll be the user putting both the hiragana and the kanji, and the flashcard will be constructed from there.
MVP Should Be "Done" at This Point
By this point, if I get through all the steps I've outlined above, I should hope to have a MVP Japanese learning helper tool.
It won't be pretty.
It won't recommend kanji for me, it won't pay attention to the list of commonly used kanji, it won't take sources that the user wants to be able to read eventually and start adding words found in those sources to the user's flashcard setup. It won't find example sentences with and without helpful translations.
But it will be more functional than the processes and systems I currently use to develop my Japanese vocabulary, and hopefully adding such kinds of functionality will be very possible.