How do you know you know a new technology?
Here are a few things that don't work for me, that are popular recommendations:
"Read the API/language spec." Some autodidactic genius could do this, but not me.
"Just write a project that scratches an itch." My itches never cover more than about 12% of any given language, library, or framework.
"Read code." That's a great way to see what idioms work in a language that you can already read, but a lousy way to learn it. Also, I have no way of knowing what isn't represented by the code I read.
"Do a tutorial/read a book." Most tutorials are crap, and if I don't know anything about a topic, I can't separate the wheat from the chaff. Likewise with books, which also carry with them a 30-50 dollar investment if I can't find them elsewhere.
What other strategies are out there? Am I doing the above ones wrong? (And if so, what's the right way?)