The only thing I'd add is setting up quizzes for yourself. See http://sivers.org/srs
If most day-to-day programming we do is 95% stuff we know, and 5% stuff we haven't committed to memory ("how do I sort an array of JavaScript objects by one of their properties, again?") - then I've found huge deliberate-practice-style benefits from taking each thing I don't know, as I run across it, and putting it into an Anki flashcard.
Then each morning as I start my day, I open up Anki to let it quiz me. I've seen massive improvements in my vim, JavaScript, AngularJS, Ruby, and Sinatra skills from this approach of practicing just what I don't know.
Email me if you want to geek out about this. Deliberate programming is one of my favorite subjects.
Copy and paste is faster, but manually typing it in forces me to really evaluate what exactly the snippet is doing.