I find flash card type learning the best way to learn vocabulary. I am also increasingly becoming very "open source" about everything computing. For some reason I am finding all kinds of quality freeware and other quality useful information coming from Germany.
I have been using "Learn?!." It is a freeware flash card application made by Sebastian Laiblin. Though he is in Germany, "Learn?!" is in English. It is a great flash card program because it systematically shows the words you get incorrect more frequently. It also gives you your stats. http://www.geocities.com/s_laiblin/palm/learn.html. I also like it because I can write my own simple databases. Right now I am interested in anything that gets me more into the programing aspect of computing.
