Many of us will already agree that the most effective way of learning a new language or technology is to 'learn by doing' rather than simply slogging through a 400 page book or reference manual. In saying that I still believe that continuous reading of blogs, books and documentation is absolutely required in order to stay in touch with the rapid changes that are taking place in technology but to cement the learning practice really is the key.
Often the doing part of 'learn by doing' is achieved by implementing a simple application like a to-do list or something similar. I find that an even more effective process is to actually build something you need - the pet project. By building what you need you not only gain the practice time in the new (or existing skill) but you also end up with something that will be useful to you (and maybe others) in the future. These pet projects can range from a simple shell script that automates a task to a complex fully-fledged application.
In addition to the 'doing' part of learning it also solidifies what you have learned by writing about it. With that in mind I plan to blog about a few pet projects that I've undertaken and new ideas that pop up along the way. First up will be a simple little app that I'm building to help organize a regular activity in the office!