Introduction You have chosen an exciting moment in computing history to
embark on a study of network programming. Machine room networks can
carry data at speeds comparable to those at which machines access their
own memory, and broadband now reaches hundreds of millions of homes
worldwide. Many casual computer users spend their entire digital lives
speaking exclusively to network services; they are only vaguely aware
that their computer is even capable of running local applications. This
is also a moment when, after 20 solid years of growth and improvement,
interest in Python really seems to be taking off. This is different from
the trajectory of other popular languages, many of which experience
their heyday and go into decline long before the threshold of their
third decade. The Python community is not only strong and growing, but
its members seem to have a much better feel for the language itself than
they did a decade ago. The advice we can share with new Python
programmers about how to test, write, and structure applications is
vastly more mature than what passed for Pythonic design a mere decade
ago.