KameSame - a fast, feature-rich Japanese memorization webapp

Note that WaniKani does not translate english characters into kana/kanji, but specifically only hiragana. This is useful because since it’s challenging you to produce phonetic readings, hiragana is the appropriate response. The other reason WK does this is because half the responses it wants from you are english, and switching IME/keyboards rapidly would be a terrible UX.

This app is completely different. 100% of questions want you to produce Japanese and 100% of questions contain kanji in their answers, so users should be producing kanji. The only way to do this reliably is with the same IME/keyboard you would use if you were typing Japanese to a friend. Becoming proficient at typing Japanese is an important 21st century skill for anyone learning the language, and so I think it’s appropriate for KameSame to force users to respond in Japanese

2 Likes

Okay, but using IME gives suggestions as soon as you start typing, which is kind of cheating. In fact, what’s the point of not allowing kana if you have to use kana to get to the kanji in the first place?

1 Like

but using IME gives suggestions as soon as you start typing, which is kind of cheating.

The IME indeed gives autocomplete suggestions, but this isn’t cheating—it’s a reflection of real life. If I could create a “hard mode” for IMEs to disable or suppress auto-complete, I would, but that’s an OS issue and not something I can solve in the web app. IMEs have similarly rotted the Kanji recall ability of a lot of my Japanese friends, which is a salient point of discussion, but it points to a much broader cultural issue that’s way outside the scope of a web app.

what’s the point of not allowing kana if you have to use kana to get to the kanji in the first place?

No JavaScript library exists that lets someone type romaji, see kana, and then arrive at kanji; and if such a library does exist, it would almost certainly provide kanji suggestions. The whole point of the app is to know what sounds + kanji one needs to produce in order to say a certain word, and what you’re suggesting would cut kanji completely out of it.

If what you want is a “no suggestion” environment, then I suppose you could use a software keyboard that forces you to draw kanji with a finger or stylus or use a stroke syntax to produce them, but all of those that I know of won’t exercise your phonetic skills. To get both, there’s no better way than just typing with the same tools Japanese people do.

4 Likes

Fun news! I’ve rewritten the networking code to use a single persistent web socket connection while you review instead of sending a new HTTP PATCH request every time you hit enter. This seems much, much snappier to me locally and testing. I’m seeing about 70ms response times from Heroku but this is easily beating that. You should give it a try.

Details on the approach here: Welp, I'm the proud owner of a hobbled-together framework built on top of ActionCable to simulate what had been an XHR request-response lifecycle. I'm just trying to use WebSockets to make a frequently-made request go faster, but boy did this feel like pulling teeth. · GitHub

2 Likes

Just for your info: I’m based in Austria and the response is super fast, no lag at all.
I just read that you made some further performance improvements anyway so that might not be as relevant anymore but it was also fast before. So the lag did not seem to be a general “not based in US” problem.

Well now it’s just FREAKY FAST as far as I can tell.

1 Like

“which is a salient point of discussion, but it points to a much broader cultural issue that’s way outside the scope of a web app.” Yeah we’re not gonna get anywhere lol. The least you could do is allow the option of kana autoconvert.

The least you could do is allow the option of kana autoconvert.

I am building an opinionated piece of software, paying for hosting, and responding to feedback for free. The least I could do is none of those things.

Please show others more respect.

15 Likes

Yay! All done for today. Just pushed up a performance optimization that’ll cut the number of renders in half (doubling the speed at which the page can flip through cards, for example).

Progress!

2 Likes

Yep, half-width versus full-width number support in forms is a huge hassle for Japanese folks on the web, too! I think I can relax the quizzes on numbers and also change that form’s validation too

@MacMalarkey I’m not sure why you think your tone or choice of words is appropriate (and it is not the first time you have been acting like this) but I disagree. If you want people to actually listen to your suggestions and concerns you might want to consider changing your approach.


To get back on topic: I was btw also a bit sceptical of the entering kanji approach at first since we are all used to the romaji => kana approach but after giving it a try for a while it does indeed seem useful and the most realistic thing to test. And as a positive side effect, it has been training my IME to show me the vocabulary I actually know on top so that I don’t have to look too far down the list every time :wink:

Otherwise:

  • I could not reproduce the issue I described earlier for a while, even with my Chrome extensions. Maybe I’m lucky and it somehow resolved itself.
  • The only super small issues I’m having is 富士山 not count as correct for ふじ山 and constantly mixing up whether “Older Sister” asks for 姉 or お姉さん (I happen to have both of them in the review queue at the same time so I just keep guessing until I got the right one). But obviously those could only be fixed by keeping a manually edited list of allowed synonyms or changing the original WaniKani hints (such as “(somebody else’s) older sister”/“(your own) older sister”). Are you planning on doing any manual changes and should I be keeping a list of things like these when I come across them or just ignore them and move on? So far, there have only been very few items that cause me trouble so I can easily live with them.
3 Likes

Wow, so my plan was to answer to your first post and here you are already sorting stuff out super fast. I haven’t even had time to look at it again yet, but I’ll do that later today. Thanks for this anyway, I’ll see how I go.

I don’t know what I’m going to do about these.

I have in the past written apps that tokenize words, which would be necessary for cases where the user supplied a half-kanji/half-hiragana answer. It doesn’t seem like a general solution would be fool-proof.

I think synonyms are probably inevitable. I just don’t know the best way to implement them yet. It’ll be a smaller user base than WK but it’d be nice if synonyms could be shared.

Say you add a synonym for お姉さん. If I enter the same thing, instead of getting it wrong, I could have a chance to tap a button and add it to my synonyms too

Ok, another update this morning. I added some additional resilience to the new websocket-based response system. Now, if for any reason the websocket is disconnected, KameSame will attempt to establish a new connection and also continually resend whatever answer you’d submitted until it gets a response. (Previously I noticed it was requiring you to hit enter again which was confusing)

Just fixed some iOS-specific orientation change issues. More info here:

Just posted a fix. This was beyond obnoxious to solve. It inspired this tweetstorm: https://twitter.com/searls/status/1008418063564320768

3 Likes

You got it!

New update tonight! There is now an algorithm to which card gets picked when you’re working on a batch larger than 20 items. Instead of picking each card at total random, KameSame will track how many items you have attempted (and failed) during a session and log it in a list of in-progress (WIP) cards, and then increase the likelihood you’ll see those WIP cards again sooner.

This is to avoid the sensation that you might get a card wrong and then potentially not see it again for dozens (or hundreds!) of cards. It’ll still feel pretty random, but I think it’ll be less frustrating for large batches.

3 Likes

I’ve decided against doing something special for items with numbers in them, because WK’s not as inconsistent as I first suspected it might be. In fact the answer is basically “always use the kanji version of the number”, which is easy enough to learn without KameSame going out of its way to accept numerals as well.

  • Items that use half-width (ascii) numerals: 0
  • Items that use full-width roman numerals: 1 (“2011年”)
  • Items that use Kanji numbers: 158

Here are all those items:

["一",
 "二人",
 "五日",
 "六日",
 "四",
 "二時半",
 "一般的",
 "二十日",
 "一生",
 "一抹",
 "一周忌",
 "一昨日",
 "二",
 "九",
 "七",
 "八",
 "十",
 "三",
 "五",
 "六",
 "四",
 "二",
 "二つ",
 "五台",
 "十台",
 "二台",
 "一",
 "一つ",
 "七",
 "七つ",
 "九",
 "九つ",
 "一人",
 "八",
 "八つ",
 "十",
 "三",
 "三つ",
 "三人",
 "一千",
 "五月",
 "五十",
 "五つ",
 "五",
 "六つ",
 "六月",
 "十六",
 "六",
 "十月",
 "一月",
 "二月",
 "四月",
 "四日",
 "四つ",
 "四千",
 "四十",
 "一万",
 "二万",
 "十万",
 "一台",
 "一文字",
 "一年生",
 "一気",
 "一本気",
 "四百",
 "五百",
 "二百",
 "二世",
 "三世",
 "一代",
 "一打",
 "一回",
 "三角",
 "四角",
 "九州",
 "四国",
 "一時",
 "一番",
 "二番",
 "二重",
 "四十二",
 "一位",
 "一流",
 "二倍",
 "第二章",
 "第一",
 "第一位",
 "一階",
 "二階",
 "四十二階",
 "一番目",
 "一億",
 "一億円",
 "五感",
 "三番目",
 "一例",
 "一周",
 "四季",
 "五枚",
 "一等",
 "二枚舌",
 "三冊",
 "八冊",
 "一冊",
 "五十音順",
 "一個",
 "三個",
 "一夫多妻",
 "一応",
 "一割",
 "一層",
 "一巻",
 "二巻",
 "第一印象",
 "第一段",
 "一人娘",
 "一杯",
 "二杯",
 "三杯",
 "精一杯",
 "一覧",
 "一筋",
 "三つ編み",
 "一般",
 "一人暮らし",
 "二日酔い",
 "一致する",
 "一人称",
 "一緒",
 "一生懸命",
 "一泊",
 "二泊",
 "一括",
 "一斉",
 "四匹",
 "一匹",
 "一斉に",
 "二十歳",
 "一瞬",
 "唯一",
 "一概に",
 "一歩",
 "三百",
 "二日",
 "一日",
 "七日",
 "三日",
 "八日",
 "十日",
 "九日",
 "三角形",
 "一体",
 "一翼",
 "四隅",
 "一貫",
 "一旦",
 "一遍",
 "一遍に"]```

Hi
Sorry if someone’s already asked this, but is it possible to get input through a standard keyboard? It’s a pain changing my work keyboard over to hiragana when I’m in the office, and when I don’t, nothing coverts to Japanese.
Although, come to think of it, the point of that could be to force me to pick the correct kanji out of the options offered!