I use Anki.
(I've also tried Skritter, but I'm learning Cantonese, and they only have Mandarin pronunciation on Skritter. I used the free version to practice writing radicals for a while, and it was great for that. But on Anki I can make my own cards with exactly the information I want on them, choose exactly how the cards display, and just generally change the program settings in all kinds of ways. Just about the only thing that you can't really practice on Anki is writing.)