Acknowledgements

This work would not have been completed without the support of my family and friends. First and foremost, I owe this book to my son. He has given my life new meaning and direction. A thank you is in order for my wife Pria, who not only acted as an editor but also constantly supported and cheered me on to complete it. Many thanks to my parents too, who got me a computer early in life to start tinkering around with and for constantly encouraging me to pursue my dreams.

Thanks also go out to my sister, niece and nephew (may you have beautiful lives ahead) and my friends for bringing much happiness into my life. Finally I would like to acknowledge the contribution of my teachers who helped me form my computing knowledge.

I would also like to acknowledge the contributions of the following readers who suggested improvements and caught errors I had missed: Keith Thompson, Nathan Adams, Paul Guilbault, Jim Noh and Sean Farrell.