KameSame - a fast, feature-rich Japanese memorization webapp

Not sure if you made changes, but Gboard seems to work now :ok_hand:

Edit: welp I spoke too soon, guess it was only working temporarily

1 Like

Not an update but still cool!

So I’ve been busy on other things so far in 2019, but one of them was actually to build a conference talk about my experiences creating KameSame, which I’ve now finished and performed at RubyKaigi in Fukuoka and RailsConf in Minneapolis.

If you’re interested in my thinking about KameSame and some of the things I learned while making it, I’d love for you to check it out on Vimeo:

Would love to hear from you if you take the time to watch it!


Very nice presentation! Interesting and entertaining at the same time.

Edit: I also usually don’t refresh my browser tabs. :stuck_out_tongue_winking_eye: I did not image this could cause a problem, wow. I’m glad you detected the issue eventually.

@searls I’m really liking KameSame but I really need a mistake fix or homonym rejection. When I get a good rhythm going I occasionally hit enter with the wrong entry in my IME selected. My past review session 8/11 of my incorrect response were due to this mistake. Some examples are 人口 and 人工, and 一代 and 一台.

My last review session results, the red highlighted errors were due to this mistake:

This would probably happen less often if I went slower but I really like getting a fast rhythm going.

Hey @TCL987, I know it can be frustrating to get one wrong erroneously. I think as I try to burn the last 1000 or so items from WK, about a third of my incorrect answers are fat-fingering a key or mixing up reading/meaning. That said, I still wouldn’t trust myself with a “fix mistake” key, because I know I’d cut myself too much slack and it’d enable me to rationalize away learning all sorts of things I need beaten over my head.

As a result, I’m a little stumped what I can do here short of add what several people ask for, which is basically a “get them all right” button. I’m very resistant to that, because it undercuts the veracity of the game/progress/achievement and would really demotivate a lot of people.

Does anyone have any other ideas on what can be done short of that to alleviate the problem?

Does an “ask again later without penalty” button fit a compromise? Whether this circulates back into a current deck or with delay, at least this requires a comprehension test of some sort without cheating.

On a separate note, would you ever consider making a KameSame API key? I ask because BunPro does accept a WK API to hide furigana for burned vocabulary which is great but I find it to be a more receptive reading test. It would be pretty to slick to offer a productive test to fill the blank for burned KameSame items on BunPro to see if vocab is sticking in the wild. It appears KS and BP both share productive manual input methodologies which is ideal for learning (though admittedly, I am entirely ignorant of any logistics of what sounds like a daisy-chained API between three parties). Of course, this would only be fruitful if BP or other parties would be interested in such an endeavor (calling @pushindawood).

Does an “ask again later without penalty” button fit a compromise? Whether this circulates back into a current deck or with delay, at least this requires a comprehension test of some sort without cheating.

This is actually what I’d always had in mind by the existence of a button. I’m still chewing on this.

Of course, this would only be fruitful if BP or other parties would be interested in such an endeavor (calling @pushindawood).

Is @pushindawood the developer of BunPro? If so, well met! If there’s a particular API they would need/want, I think for now I’d be more comfortable exposing a route just to BunPro and a tickbox in KS’s account settings to authorize BunPro to read from that route for your required user information.

1 Like

@searls Yeah, there’s a balance between rigorous adherence to the automation and the frustration of getting marked wrong for something you know. I’d be fine with a confirmation when the reading is right but the kanji is wrong as that’s mostly where I run into IME induced issues. The ordering in the Windows IME is based on whichever word you last selected for that combination of kana which means the order is inconsistent and not part of what we’re trying to memorize. Getting a question wrong because I hit spacebar once too many or too few times is frustrating. Alternatively I’d be fine if it handled it similarly to how synonyms are handled except it doesn’t show the correct answer. “That was the correct reading but not the kanji we were looking for.”

Also a lightning mode where correct responses automatically advance to the next question would be great. I try to go through my reviews as fast as possible because real world recall has to be near instant, I’m already normally at the point where I’m limited by how fast I can type so minimizing the time between questions is the only way left to save time.

@plantron IMO Wrong answers due to the IME aren’t really wrong answers, they’re a false positive caused by the input method being used. If we were writing the words by hand I would agree that writing the wrong kanji (or other errors like incorrect stoke order) was a wrong answer because it shows that you didn’t remember correctly. The IME order varies based on what you’ve previously typed so it’s not something you can memorize, and getting the wrong kanji is as simple as hitting space an extra time before hitting enter. Over time as people use the IME they may become more skilled at using it and make fewer mistakes but it’s not a skill that’s related to any particular vocabulary word so penalizing SRS levels for IME errors doesn’t help develop that skill.

1 Like

I happen to be using KameSame with a typing IME because with how little I hand write in English I don’t think it’s worth it for me to learn to hand write Japanese right now. I would rather just type and have more time to spend on reading, listening and speaking, and maybe later learn to hand write if I feel a need to.

I understand that hand writing your answers can improve recall but the extra time per question doesn’t seem worth it to me. Also my English hand writing is very messy so I don’t really expect the IME to recognize anything unless I write really slowly which would just make the process even more time consuming. In my last KameSame review I only spent an average of six seconds per question, if I was hand writing the responses it would probably take me several times as long. So my half an hour review session would instead have taken hours.

You can disagree but it doesn’t invalidate the way I use KameSame.


I wouldn’t actually use the wrong kanji, I’d accidentally hit space once too many times, see that the kanji is wrong, and then delete and retype it. I know that the kanji the IME selected is the the wrong kanji the moment I see it but by that point I’m already hitting enter to submit the answer.


Ah, I see better now. I’ll say this bites me very often when I’m texting with a friend, too. The real shame is that the same button to “confirm” in IMEs is also “send” in many messaging apps.

In general, the best answer I can give today is “go slower”, which I also need to do, but that’s not much of a solution. I think one idea for KameSame would be to introduce an alternate submission button that is not enter/return. Or maybe shift/ctrl/cmd + enter.


1 Like

This could work well on mobile devices. If return was disabled as an answer button, you would have to press to hand icon right next to the input field – directing attention to your inputted answer in a rather natural way.

Another idea is to implement an enforced slow mode; you could only confirm your answer after a short waiting time of one second or so.

In any case, I hope your will implement something like this as a purely optional setting.

1 Like

Yes any of these proposed ideas would absolutely be hidden behind a user option

1 Like

Another problem with IME is sometimes you write a kanji and it picks up the radical instead. I have commented about this problem in this very same topic some months ago.

1 Like

A somewhat frustrating bug I’ve ran into more than a few times so far (and perhaps another good argument for allowing overriding incorrect answers) is this:

I’ve compared the unicode code points and they’re the exact same characters, so I’m really not sure what’s happening. When the item comes the second time it’ll work just fine.


Yikes. That’s not good.

If the UTF code points match, then there must be some issue in the code that scores your results. Thanks for pointing this out

1 Like

It happened again, so I dug into it a little more and I think I’ve found the culprit. While the code points of the kanji are the same, it seems that somehow a control character made its way into the answer string! I suppose I didn’t catch this in the previous examples because I was only trying to select the kanji, not the surrounding「」too.

In this specific case, “Annual”/「年次」there’s inexplicably a U+0008 (Backspace) at the beginning of the string in my answer: 「年次」(should be there assuming discourse doesn’t strip it out. Edit: ah yep looks like it’s stripped out).

I’m using the system Japanese IME on macOS 10.14.5 + Chrome 74.0.3729.169, and I really have no clue where the extra character could’ve come from. I’m not sure if this is a KameSame issue or a my computer issue, but maybe striping out non-printable characters from answers is an OK fix.


Thanks. Added this to my backlog. It shouldn’t be so hard to compare two strings.


Ok, we should have a fix in place. Try now!

1 Like

Heads up that I’m taking down the site to upgrade to a larger database (we’ve managed to nearly fill 10 million rows already).

This will bring the monthly expense for KameSame up to $59 a month.

Any ideas on how to spread this cost across the users? I’m not looking to charge people nor to raise more than $59 a month, but I’m curious as to good options for it.

1 Like