Writing a book is truly a team effort; this is a fact I could not fully appreciate until I wrote one myself. I recommend the experience, although it is a humbling one. It is a simple truth that without the assistance of many other people, this book would not have existed.
Thanks and appreciation must first go to Matz (Yukihiro Matsumoto), who created the Ruby language in the first place. Domo arigato gozaimasu!
Thanks go to Conrad Schneiker for conceiving the overall idea for the book and helping to create its overall structure. He also did me the service of introducing me to the Ruby language in 1999.
Several individuals have contributed material to the body of the book. The foremost of these is Guy Hurst, who wrote substantial parts of the earlier chapters as well as two of the appendixes. His assistance was absolutely invaluable.
Thanks also go to the other contributors, whom I'll name in no particular order. Kevin Smith did a great job on the GTK section of Chapter 6, "Graphical Interfaces in Ruby," saving me from a potentially steep learning curve on a tight schedule. Patrick Logan, in the same chapter, shed light on the mysteries of the FOX GUI. Chad Fowler, in Chapter 9, "Network and Web Programming," plumbed the depths of XML and also contributed to the CGI section.
Thanks also goes to those who assisted in proofreading, reviewing, or in other miscellaneous waysDon Muchow, Mike Stok, Miho Ogishima, and others already mentioned. Thanks to David Eppstein, the mathematics professor, for answering questions about graph theory.
One of the great things about Ruby is the support of the community. Many people on the mailing list and the newsgroup answered questions and gave me ideas and assistance. Again, in no particular order, these are Dave Thomas, Andy Hunt, Hee-Sob Park, Mike Wilson, Avi Bryant, Yasushi Shoji ("Yashi"), Shugo Maeda, Jim Weirich, "arton," and Masaki Suketa. I'm sorry to say I have probably overlooked someone.
To state the obvious, a book would never be published without a publisher. Many people behind the scenes worked hard to produce this book. Primarily I have to thank William Brown, who worked closely with me and was a constant source of encouragement, and Scott Meyers, who delved deeply into the details of putting the material together. I also want to thank all the others whom I cannot even name because I have never heard of them. You know who you are.
I have to thank my parents, who watched this project from a distance, encouraged me along the way, and even bothered to learn a little bit of computer science for my sake.
A writer friend of mine once told me, "If you write a book and nobody reads it, you haven't really written a book." So, finally, I want to thank you, the reader. This book is for you. I hope it is of some value.