xxi
Acknowledgments
Five years ago, as I was revising and rewriting to prepare a second edition of this book, I was deeply impressed by how
much had changed in the half-decade since its debut in 2004. New web frameworks like CherryPy and Django were
creating a revolution in how programmers wrote for the Web, while libraries such as mechanize and lxml were making
it easier than ever to fetch information from HTTP servers.
As I wrap up this third edition, it is clear that the Python community has done it again! Improvements large
and small have required changes to the text and, in some cases, a complete rewrite of entire chapters. From the core
developers who produced the new Python 3 version of the language, to the authors of new web frameworks such as
Flask and Tornado who continue to make the task of writing HTTP services both more convenient and much safer,
to the programmers who maintain modules both inside and outside of the Standard Library, this new edition is
first and foremost a reflection of the hard work that an entire programming language community—really, an entire
ecosystem—has poured into the tools and libraries that help us write programs for the Internet.
A number of readers have contacted me since the second edition came out with questions, with ideas, or to point
out where a program listing now failed or was no longer valid. I hope they know that their feedback was important
to the process of creating this new edition, and I think a few of them will recognize where their ideas have wound up
making noticeable improvements to the book.
Many thanks to the editors and reviewers at Apress who read my (at some moments, appalling) first drafts, who
caught bugs and outright errors in my program listings, and who helped shepherd this rewrite through to completion.
I want to give particular credit to the copy editors, through whom I have slowly learned not to say the word very or
actually in every other sentence and thanks to whom I continue to make progress in my lifelong journey toward being
able to tell when to use that and when to use which when connecting clauses.
Thanks, finally, to everyone who had to wait on an e-mail, bug fix, or meeting as I have been writing, and
especially to my wife Jackie for all of her encouragement.