I like learning the basics of new languages so I've done it quite a few times. I usually take one or two hours to grasp the basic syntax of the language, then I implement a few classic algorithms and data structures (I start with Fibonacci, then I move on to things like quicksort, bloom filters, tries, state machines). After that, I try to find a few (3-4) popular, reasonably sized Open Source projects in the language and I read their source code to get a grasp of what good code in this language feels like. I keep the reference manual at hand in case I don't understand something. The next step is libraries: I check out how I can do common things such as network I/O, image manipulation, XML parsing, concurrency. At this point I usually consider myself ready to do whatever I want with the language: start a new project, contribute to one, or completely stop using it.