I tend to read programming books in two passes. The first pass is just a traditional sequential read - away from the keyboard. On the second pass I work through it with my trusty csc.exe to hand. This works for me since I spend about 80 minutes a day traveling
to and from work.