Acknowledgments
Most publications, from mysteries to scientific papers to computer
books, claim that the work being published would not have been
possible without the collaboration of many others, typically
including local forensic scientists, colleagues, and children,
respectively. This book makes this claim to an extreme degree. Most
of the words, code, and ideas in this volume were contributed by
people not listed on the front cover. The original recipe authors,
readers who submitted useful and insightful comments to the cookbook
web site, and the authors of the chapter introductions, are the true
authors of the book, and they deserve the credit.
David Ascher
The software that runs the online cookbook was the product of Andy
McKay's constant and diligent effort. Andy was
ActiveState's key Zope developer during the online
data-collection phase of this project, and one of the key developers
behind ASPN (http://aspn.activestate.com),
ActiveState's content site, which serves a wide
variety of information for and by programmers of open source
languages such as Python, Perl, PHP, Tcl, and XSLT. Andy McKay used
to be a Perl developer, by the way. At about the same time that I
started at ActiveState, the company decided to use Zope to build what
would become ASPN. In the years that followed, Andy has become a Zope
master and somewhat of a Python fanatic (without any advocacy from
me!), and is currently a Zope and Plone author, consultant and
entrepreneur. Based on an original design that I put together with
Diane Mueller, also of ActiveState, Andy single-handedly implemented
ASPN in record time, then proceeded to adjust it to ever-changing
requirements for new features that we hadn't
anticipated in the early design phase, staying cheerful and
professional throughout. It's a pleasure to have him
as the author of the introduction to the chapter on web recipes.
Since Andy's departure, James McGill has taken over
as caretaker of the online cookbookhe makes sure that the
cookbook is live at all hours of the day or night, ready to serve
Pythonistas worldwide.Paul Prescod, then also of ActiveState, was a kindred spirit
throughout the project, helping with the online editorial process,
suggesting changes, and encouraging readers of
comp.lang.python to visit the web site and
submit recipes. Paul also helped with some of his considerable XML
knowledge when it came to figuring out how to take the data out of
Zope and get it ready for the publication process.The last activator I'd like to thank, for two
different reasons, is Dick Hardt, founder and CEO of ActiveState. The
first is that Dick agreed to let me work on the cookbook as part of
my job. Had he not, I wouldn't have been able to
participate in it. The second reason I'd like to
thank Dick is for suggesting at the outset that a share of the book
royalties go to the Python Software Foundation. This decision not
only made it easier to enlist Python users into becoming contributors
but has also resulted in some long-term revenue to an organization
that I believe needs and deserves financial support. All Python users
will benefit.Writing a software system a second time is dangerous; the
"second-system" syndrome is a
well-known engineering scenario in which teams that are allowed to
rebuild systems "right" often end
up with interminable, over-engineered projects. I'm
pleased to say that this didn't happen in the case
of this second edition, for two primary reasons. The first was the
decision to trim the scope of the cookbook to cover only truly modern
Pythonthat made the content more manageable and the book much
more interesting to contemporary audiences. The second factor was
that everyone realized with hindsight that I would have no time to
contribute to the day-to-day editing of this second edition.
I'm as glad as ever to have been associated with
this book, and pleased that I have no guilt regarding the amount of
work I didn't contribute. When people like Alex and
Anna are willing to take on the work, it's much
better for everyone else to get out of the way.Finally, I'd like to thank the
O'Reilly editors who have had a big hand in shaping
the cookbook. Laura Lewin was the original editor for the first
edition, and she helped make sure that the project moved along,
securing and coordinating the contributions of the introduction
authors. Paula Ferguson then took the baton, provided a huge amount
of precious feedback, and copyedited the final manuscript, ensuring
that the prose was as readable as possible given the multiplicity of
voices in the book. Jonathan Gennick was the editor for the second
edition, and as far as I can tell, he basically let Alex and Anna
drive, which was the right thing to do. Another editor I forgot to
mention last time was Tim O'Reilly, who got more
involved in this book than in most, in its early (rough) phases, and
provided very useful input.Each time I review this acknowledgments section, I
can't help but remember
O'Reilly's Editor-in-Chief at the
inception of the project, Frank Willison. Frank died suddenly on a
black day, July 30, 2001. He was the person who most wanted to see
this book happen, for the simple reason that he believed the Python
community deserved it. Frank was always willing to explore new ideas,
and he was generous to a fault. The idea of a book with over a
hundred authors would have terrified most editors. Frank saw it as a
challenge and an experiment. I still miss Frank.
Alex Martelli
I first met Python thanks to the gentle insistence of a former
colleague, Alessandro Bottoni. He kept courteously repeating that I
really should give Python a try, in spite of my claims that I already
knew more programming languages than I knew what to do with. If I
hadn't trusted his technical and aesthetic judgment
enough to invest the needed time and energy on the basis of his
suggestion, I most definitely wouldn't be writing
and editing Python books today. Thanks for your well-placed
stubbornness, Alessandro!Of course, once I tasted Python, I was irretrievably hookedmy
lifelong taste for very high-level (often mis-named
"scripting") languages at last
congealed into one superb synthesis. Here, at long last, was a
language with the syntactic ease of Rexx (and then some), the
semantic simplicity of Tcl (and then some), the intellectual rigor of
Scheme (and other Lisp variants), and the awesome power of Perl (and
then some). How could I resist? Still, I do owe a debt to Mike
Cowlishaw (inventor of Rexx), who I had the pleasure of having as a
colleague when I worked for IBM Research, for first getting me hooked
on scripting. I must also thank John Ousterhout and Larry Wall, the
inventors of Tcl and Perl, respectively, for later reinforcing my
addiction through their brainchildren.Greg Wilson first introduced me to O'Reilly, so he
must get his share of thanks, tooand I'm
overjoyed at having him as one of the introduction authors. I am also
grateful to David Ascher, and several people at
O'Reilly, for signing me up as co-editor of the
first edition of this book and supporting so immediately and
enthusiastically my idea that, hmmm, the time had sure come for a
second edition (in dazed retrospect, I suspect what I meant was
mostly that I had forgotten how deuced much work
it had been to do the first one . . . and failed to realize that,
with all the new materials heaped on ActiveState's
site, as well as Python's wonderful progress over
three years, the second edition would take more
work than the first one. . . !).I couldn't possibly have done the job without an
impressive array of technology to help me. I don't
know the names of all the people I should thank for the Internet,
ADSL, and Google's search engines, which, together,
let me look things up so easilyor for many of the other
hardware and software technologies cooperating to amplify my
productivity. But, I do know I couldn't have made it
without Theo de Raadt's OpenBSD operating system,
Steve Jobs' inspiration behind Mac OS X and the
iBook G4 on which I did most of the work, Bram
Moolenaar's VIM editor, and, of course, Guido van
Rossum's Python language. So, I'll
single out Theo, Steve, Bram, and Guido for special thanks!Nor, as any book author will surely confirm, could I have done it
without patience and moral support from friends and
familychiefly my children Lucio and Flavia, my sister
Elisabetta, my father Lanfranco. But the one person who was truly
indispensable to this second edition was my wife and co-editor Anna.
Having reconnected (after many years apart) thanks to Python, taken
our honeymoon at the Open Source Convention, given a joint Lightning
Talk about our "Pythonic Marriage,"
maybe I should have surmised how wonderful it would be to work so
closely with her, day in and day out, on such a large and complex
joint project. It was truly incredible, all the way through, fully
including the heated debates about this or that technical or
organizational point or exact choice of wording in delicate cases.
Throughout the effort and the stress, her skill, her love, her joy,
always shined through, sustained me, and constantly renewed my
energies and my determination. Thanks, Anna!
Anna Martelli Ravenscroft
I discovered Python about two years ago. I fell in love, both with
Python and (concurrently) with the martelli-bot.
Python is a language that is near to my heart, primarily because it
is so quickly usable. It doesn't require you to
become a hermit for the next four years in order to do anything with
the language. Thank you to Guido. And thanks to the amazing Python
community for providing such a welcoming atmosphere to newcomers.Working on this book was quite the learning experience for me.
Besides all the Python code, I also learned both XML and VI, as well
as reacquainting myself with Subversion. Thanks go to Holger Krekel
and codespeak, for hosting our subversion repository while we
travelled. Which brings us to a group of people who deserve special
thanks: our reviewers. Holger Krekel, again, was exceptionally
thorough, and ensured, among other things, that we had solid Unicode
support. Raymond Hettinger gave us a huge amount of valuable,
detailed insight throughout, particularly where iterators and
generators were concerned. Both Raymond and Holger often offered
alternatives to the presented
"solutions" when warranted.
Valentino Volonghi pointed out programming style issues as well as
formatting issues and brought an incredible amount of enthusiasm to
his reviews. Ryan Alexander, a newcomer to Python with a background
in Java, provided extremely detailed recommendations on ordering and
presenting materials (recipes and chapters), as well as pointing out
explanations that were weak or missing altogether. His perspective
was invaluable in making this book more accessible and useful to new
Pythonistas. Several other individuals provided feedback on specific
chapters or recipes, too numerous to list here. Your work, however,
is greatly appreciated.Of course, thanks go to my husband. I am amazed at
Alex's patience with questions (and I questioned a
lot). His dedication to excellence is a co-author's
dream. When presented with feedback, he consistently responded with
appreciation and focus on making the book better.
He's one of the least ego-istical writers
I've ever met.Thank you to Dan, for encouraging my geekiness by starting me on
Linux, teaching me proper terminology for the stuff I was doing, and
for getting me hooked on the Internet. And finally, an extra special
thanks to my children, Inanna and Graeme, for their hugs,
understanding, and support when I was in geekmode, particularly
during the final push to complete the book. You guys are the best
kids a mother could wish for.