Monday, January 16, 2012

Progress with Remembering the Kanji

Notebook page full of RtK stroke order practice

As a follow-up to my earlier posts about Heisig's Remembering The Kanji vol.1, I am pleased to report that for the first time in more than 5 years I feel like I'm really making serious progress on learning the Kanji!

I'm already up to #240 in the book, and adding between 10 and 20 new ones per day on average. I just hope I can keep up the pace.

I think a combination of things finally got the ball rolling for me. Learning how to "timebox" in Anki, so that I could chip away at my daily reviews in 5 minute chunks. Using the stroke order font discussed before so that I can instantly check my stroke order and don't have to refer back to the book basically ever. Using the method Dustin gave me to let me add only the cards I want at the pace I want in Anki, so I don't get overwhelmed by trying to match a pace dictated to me by Anki. And last but not least, sitting down with the book when I'm away from the computer and just adding a few new kanji to my list periodically. Even if I miss my reviews for a day I try to make sure that I keep adding kanji to my brain and reviewing the ones in the book I've learned more recently to refresh that new memory.

(And of course my cousin made sure to remind me after I wrote this that one of the main motivators that got me really pushing on this in the first place was his promise to buy me a ticket to Japan with him this coming autumn if I could finish RtK entirely and get some real work lined up aside from what I'm already doing. Thanks Aaron! I can't believe I didn't mention that! That was the thing that really got me pushing on it, and all these other things were just what enabled me to do it effectively and more comfortably make progress.)

A few other things I've noticed that I've had to start taking into account are that I can't keep just marking every card as "hard" as I've been doing, since that just means I'm seeing them sooner and starting to have them pile up on me. So I need to mark the ones as good or very easy that I do actually know quite well now. I also have a few kanji that have given me a little trouble that I might have to slow down on and make sure I have the little visual story drilled into my head better. I felt like I had more "misses" tonight than I should have and I don't want a weak foundation as I go forward. The beginning of Lesson 11 in RtK covers precisely this issue in detail and reminds you of key points to make sure you're following etc.

Tonight's study session was 175 cards in 44.48 minutes... but it was that large in part because I only did half of my reviews the day before, and because I missed a number tonight, so the card count increased for all the cards I chose "again" for. Hopefully with staying more on top of it and choosing more accurately how well I know the cards I can keep my daily reviews down to a reasonable level as I go forward.

Tuesday, January 3, 2012

An in production documentary worth noting.

There was a post waiting in moderation over on the TJP forum today that normally I wouldn't have approved due to it being essentially an advertisement for a product in a way... but when I looked at what it was, I felt it worth sharing, so I approved the post.

Yukio

http://www.indiegogo.com/Yukio

It sounds like a moving and interesting story touching on a somber aspect of Japanese culture. They already have the film shot, they're just looking for $5,000 to be able to finish having it translated and edited together etc.

Give it a look and see if you don't feel like contributing toward getting this little documentary made or helping to spread the word. I don't see how it hurts to try to give a little recognition to a man who devotes his life to trying to save the lives of others.

http://en.wikipedia.org/wiki/Tojinbo#Suicide

Monday, December 26, 2011

A simple way to make Heisig drilling easier in Anki

Kanji Stroke Orders font in Anki SRS

I found myself struggling a bit to find the motivation to do my Anki drills for Heisig's Remembering The Kanji vol.1 in part due to the fact that I didn't like having to refer back to the book to check my stroke orders.

So when someone else mentioned a stroke order font, I immediately wanted to apply that to my Anki drills so that I could check my stroke order without having to even really look away from the screen, much less dig through the book to try to find the right page.

http://sites.google.com/site/nihilistorguk/

Download the font there and install it on your system (font installation is a bit outside of the scope of this article).

To apply this font, open your deck as though you're beginning your drilling. Then go to "Edit" → "Card Layout" in the top menu. You should be able switch to the "Fields" tab, and then select the "Kanji" option. Next, select the "KanjiStrokeOrders" font from the "Font" drop down list below and then click the "Close" button to save your changes and exit the Card Layout dialog.

At this point you should be read to continue your drilling much more efficiently!

I noticed an immediate dramatic improvement in my drilling efficiency and feel like a load has been lifted from my shoulders! Now I don't dread having to do my RTK drills! Hopefully you will feel the same way!

がんばってね!

Thursday, December 8, 2011

Kana Match updates

In preparation for working on the Kanji section of the NNB Tools, I decided to revisit the Kana Match game and touch up a few things I'd left undone initially.

The two main points I'd meant to address were the countdown timer and a scoring multiplier.

level, score, timer bar

The countdown timer was the main one I wanted to tackle, since the way I'd left it resulted in almost no real increase in difficulty on the timer for the first 20+ levels, and then around level 26 it would start becoming noticeably more challenging at it got faster, and by level 30 there was no chance of you not running out of time.

This was because the original algorithm just cumulatively subtracted the level number from the timer value.

kanatimer = kanatimer - levelnumber

So, for instance, 100 -1 = 99, 99 -2 = 97, 97 -3 = 94, 94 -4 = 90, etc... until the timer ran out. I graphed this out on paper to get a visual of what it looked like;

sketch of old timer decay

and Dustin Quigley helped me get a "real" graph of it in Wolfram Alpha.

equation for the old timer old timer graph on Wolfram Alpha

So I decided to sketch out my idea of how I'd like the timer to actually operate and then try to figure out a way to program it. Given that I'm quite math challenged, I just decided to try breaking it down into a form I could work with. So initially I graphed it and looked at how it changed over time... and I noticed that the amount of time left essentially halved every 10 levels. I figured that I could write a little function to decrease the count by 5 for the first 10 levels, then 2.5 for the next 10, 1.25 for the next 10 etc... to give myself the asymptote to 0 type "long tail" I wanted.

graph sketch for new timer

Then I decided to ask around for advice on how to perhaps more easily and "correctly" achieve this through some simple mathematical equation. Thankfully I have a number of friends who are sheer geniuses at math compared to myself. ;)

First Mike Dejonge started walking me through the different pieces of the equation for an exponential decay so that I could understand what each part did, while at the same time Michael Katsevman was showing me a Wolfram Alpha graph of what it would actually look like (using a negative exponent). Dustin Quigley was giving me a variation on that using a positive, but less than 1, number that made it a little easier to see what was going on.

Michael's new timer graph on Wolfram Alpha Dustin's new timer graph on Wolfram Alpha

Their advice and graphs were precisely what I had in mind! So I went ahead and implemented it and it worked perfectly!

timer = 500 * 0.95e^level

Now instead of any reasonably skilled users all hitting game over within a few levels of each other with little difference in score, now one could have much more "wiggle room" to eek out a considerably bigger score by managing to hold on longer as the timer was more slowly whittled away toward the end.

Whereas before I would essentially always hit game over between levels 28 and 30 or so... now I might eeek it out until level 37 on a more challenging setting, or level 42 with less challenging settings (easier kana etc).

Thus my first hurdle was finally overcome with all their help. Thanks guys!

Then I moved on to the scoring multiplier. This one was thankfully a little more in my league. ;)

What I had in mind was a way to offset the loss in points a user would get when playing with more of the kana, the more "difficult" ones, selected... since this would most likely mean they would lose the game sooner. So I wanted to find a way to give them a scoring bonus depending on how many of the 4 options they selected, and which ones (from easier to harder).

Kana Match options

First I wanted to get an idea what size multiplier I'd want to use. So I rather unscientifically compared my score on an "easy" game (Level: 42 Score: 20962) with my score on a "hard" game (Level: 37 Score: 18607) and did a little basic math to see that very rough 1.2x multiplier would make up the lost points and give a slight score bonus for playing the more difficult option. After sketching ideas in my notebook for awhile, I ended up with a rough approximation to work with;

  • 1x base multiplier.
  • 0.033 for 2 options checked, 0.066 for 3 options, and 0.1 for all 4 options checked.
  • 0 bonus for only the basic unvoiced kana, 0.010 for the basic voiced, 0.034 for the compound unvoiced, and 0.056 for the compound voiced.

This would be added up to arrive at your score multiplier, with more of a bonus granted to the more difficult options... and a maximum 1.2x multiplier.

This was applied to each match (10 points x multiplier), and to the remaining time bonus (500 - amount of time used x multiplier) which was added to your score at the end of each level. This seemed to work out well enough for what I wanted. :)

Also, in the process of working that out, since I used floating point numbers for everything short of the actual score display (which was trimmed down to an integer), I noticed what I thought was a "bug" in the math... since when I selected 3 or 4 options, I'd suddenly go from 3 decimal places to 16 decimal places with an odd 1 or 2 way out there by itself in the 16th decimal place.

Carlos Torres was kind enough to point out the reason for this to me. :)

In short, my novice level programming skills and utter dearth of mathematics education had bitten me in the rear once again. ;) I decided to simply round the number to a fixed 3 decimal places for my own peace of mind, even though it really had no bearing on the actual scoring in practice.

Aside from that I did a few other minor tweaks... I tried to improve the coloring on the selected cells in the game itself to make them a little easier to see and a little better looking; tweaked the description color; made the side bar "start a new game" button only show up if a game was in progress; improved the code for the options list to space it out better and allow clicking on the labels as well as the checkboxes; and finally, I changed the code in a crazy way to precache the images for the Pause, Level Finish, and Time Up screens.

This last point was definitely a first for me. I decided to use a method where you base64 encode the image data and include it directly in the style sheet! While this increased my style sheet size up to 120kB, it allows the images to load instantly when you hit those screens since the image data was already loaded as part of the CSS on initial page load. It seems to work exactly like I'd wanted, so that's how it is for now. :)

There are still a few other things I might like to try, such as the new html5 history manipulation options and some AJAX loading of data on initial page load so that I can do the redirecting without actually triggering a full page reload... but that will have to wait until I get some more "real work" done to pay the bills. ;) Have to keep a roof over my head!

I can't wait to get things polished up with the basic NNB Tools code so that I'm ready to tackle the larger challenge of the Kanji Tools!

Choose kanji by meaning preview

じゃ、またね~ ^^/

Tuesday, October 11, 2011

Revamping the NNB Chat.

I found a great new webchat called Candy that I've migrated our chat over to on the development server. It uses an XMPP back-end (that is being served by Prosody on the development server) and thus allows us a bit more flexibility and scalability etc.

Here are some preview shots...


NNB Chat revamp preview 3

NNB Chat revamp preview 1

NNB Chat revamp preview 2

Friday, July 22, 2011

うさぎドロップ 「Usagi Drop」

Usagi Drop title screen

I got a little adventurous the other day and decided to check out a few new anime, since the only one I otherwise watch these days is Naruto Shippuuden.

I decided to try out Kamisama Dolls, Usagi Drop, No.6, and Blood-C.

The religious themes in Kamisama dolls and general storyline aren't impressing me, so that one is likely to get dropped by me. Blood-C is also having trouble holding my attention... but I may give it another episode or two since I did watch and enjoy Blood+ awhile back, but this one just doesn't seem to have the same quality so far.

That leaves me with No.6, which has a slight Ergo Proxy feel to it, with a lighter and less artsy feel... and Usagi Drop, which is really quite unlike just about any other anime I've watched, except for maybe very slightly like Honey & Clover... given the "slice of life" type theme.

As you might have guessed from the title of this post, Usagi Drop is sticking out as my favorite so far.

I've had a few people wonder why I'm watching something targeted at late teen to adult women, but I really like it. I think it's very touching, and it's refreshing to see something about real life struggles rather than far fetched science fiction, magic, fantasy or what have you. It tugs on my heart strings a little... the part that thinks about what it might be like to have a family someday and face similar struggles of raising a child.

I haven't checked out any of the manga yet. I'm not sure if I want to spoil watching the anime.

I also just found out that they're making a movie of it which will be released in just under a month.

I'm looking forward to it! :) If I get too impatient waiting for the new episode each week I might sneak a peek at the manga. ;)

Usagi Drop example shot 2

Usagi Drop example shot 3

Usagi Drop example shot 4

Sunday, July 17, 2011

Writing practice!

So I've finally gotten around to starting to learn to write the kana correctly!

I must say that it's a little daunting at first to try to write the characters. I feel like I'm back in first grade again trying to make my hand do what I want it to. ;)

my very first kana writing practice

I'm starting with the basics and moving through them just as I did when I first learned how to recognize them.

This is really all just preparation for moving into the plan Dustin laid out for me for using Heisig's "Remembering the Kanji vol 1" along with the great website "Reviewing the Kanji".

Reviewing the Kanji

Heisig's Remembering the Kanji vol 1, 6th editionI've laid out the simple plan he wrote up for me over on the forum. Depending on how much luck I have with it (it's worked very well for him), I might expand on it and make it a more proper lesson on the site and feature it more prominently as a method for learning the kanji.

Of course there are a lot of Heisig haters out there, but the method seems like a sound concept to me, and although anecdotal, it seems to have worked quite well for a number of people.

So for now I'll keep chipping away at learning the kana... not that they're necessary at this point, but I thought it was silly to be learning how to write a bunch of kanji without ever having learned how to write the basic kana. ;) I just didn't want to get the cart before the horse so to speak. I suppose at the very least it will get my hand a little warmed up for the much more daunting task of writing all the new kanji.

Better not think too much about that yet. ;) One step at a time.