I've always gone this route in terms of learning new technologies. If I think a tool is essential or will make the project better in the long run, I use time on the job to learn it. An example would be backbone.js. I recently had to build a complicated UI, and didn't want jQuery soupe (even well tasting soupe), so I went about reading the backbone source and engraining all the details of backbone over a couple of days, then I built the UI and the client and our company benefited from having well-organized, clean code, that is easily maintainable, and also I think it would have been much more difficult in the long run to even build the interface without backbone. As far as languages go, I've never had the "need" to learn a new one for a project (usually Bash,C,C++,PHP,Javascript fit the bill for most anything), and so I've always learned new languages in my free time. Without knowing any specifics, I would caution against using a new language for a client project, since the goal is to build the best app that best fits the clients needs, and using a completely new language is probably going to give you unneeded headaches and not be the best code.<p>Just out of curiosity, what's the language your thinking about learning?