FRONTMATTER -- ACKNOWLEDGMENTS: ------------------------------------------------------------------- Portions of this book are adapted from my column _Charming Python_ and other writing first published by -IBM developerWorks-, . I wish to thank IBM for publishing me, for granting permission to use this material, and most especially for maintaining such a general and useful resource for programmers. +++ The Python community is a wonderfully friendly place. I made drafts of this book, while in progress, available on the Internet. I received numerous helpful and kind responses, many that helped make the book better than it would otherwise have been. In particular, the following folks made suggestions and contributions to the book while in draft form. I apologize to any correspondents I may have omitted from the list; your advice was appreciated even if momentarily lost in the bulk of my saved email. +++ Sam Penrose UserDict string substitution hacks. Roman Suzi More on string substitution hacks. Samuel S. Chessman Helpful observations of various typos. John W. Krahn Helpful observations of various typos. Terry J. Reedy Found lots of typos and made good organizational suggestions. Amund Tveit Pointers to word-based Huffman compression for Appendix B. Pascal Oberndoerfer Suggestions about focus of parser discussion. Bob Weiner Suggestions about focus of parser discussion. Max M Thought provocation about XML and Unicode entities. John Machin Nudging to improve sample regular expression functions. Magnus Lie Hetland Called use of default "static" arguments "spooky code" and failed to appreciate the clarity of the '<>' operator. Tim Andrews Found lots of typos in Chapters 3 and 2. Marc-Andre Lemburg Wrote [mx.TextTools] in the first place and made helpful comments on my coverage of it. Mike C. Fletcher Wrote [SimpleParse] in the first place and made helpful comments on my coverage of it. Lorenzo M. Catucci Suggested glossary entries for CRC and hash. David LeBlanc Various organizational ideas while in draft. Then he wound up acting as one of my technical reviewers and provided a huge amount of helpful advice on both content and organization. Mike Dussault Found an error in combinatorial HOFs and made good suggestions on Appendix A. Guillermo Fernandez Advice on clarifying explanations of compression techniques. Roland Gerlach Typos are boundless, but a bit less for his email. Antonio Cuni Found error in original Schwartzian sort example and another in 'map()'/'zip()' discussion. Michele Simionato Acted as a nice sounding board for deciding on final organization of the appendices. Jesper Hertel Was frustrated that I refused to take his well-reasoned advice for code conventions. Andrew MacIntyre Did not comment on this book, but has maintained the OS/2 port of Python for several versions. This made my life easier by letting me test and write examples on my favorite machine. Tim Churches A great deal of subversive entertainment, despite not actually fixing anything in this book. Moshe Zadka Served as technical reviewer of this book in manuscript and brought both erudition and an eye for detail to the job. Sergey Konozenko Boosted my confidence in final preparation with the enthusiasm he brought to his technical review--and even more so with the acuity with which he "got" my attempts to impose mental challenge on my readers.