PyDev of the Week: Naomi Ceder

This week we welcome Naomi Ceder (@NaomiCeder) as our PyDev of the Week. Naomi has been a long-time member of the Python community and is the author of The Quick Python Book. Naomi is the current chair of the board of directors for the Python Software Foundation and is a regular speaker at programming conferences. Let’s take a few moments to get to know Naomi better!

Can you tell us a little about yourself (hobbies, education, etc):

Well, a lot of people know that I’m currently chair of the PSF, and many have heard me speak about my journey involving gender.

People seem to be surprised to find out that I have a PhD in Classics (from the U of Wisconsin, Madison) – Ancient Greek, Latin, and historical Linguistics, with some Sanskrit and Egyptian Hieroglyphs thrown in. So I’ve been interested in different human languages and how they work for a long time and I think that’s helped me learn and think about computer languages. It certainly helps me read languages like Portuguese, Spanish, and French. Sadly, it doesn’t do much to help me speak those languages so I end up understanding a fair bit of what I read or hear, but then being tongue tied and looking like a dolt when I try to have a conversation.

My other odd claim to fame is that I was a competitive dog obedience trainer and judge (I even wrote a humor column for the national obedience training magazine) for several years, taking my first dog through all the levels of AKC and UKC obedience. That’s a pretty time-consuming hobby, and I retired from it a few years ago. Our current dog knows some obedience stuff, but she also knows that I’m no longer the stickler that I was when we were competing, and she takes advantage of that. But she’s cute and she knows how to work that, so who am I to nitpick? All of our dogs so far have been Australian shepherds – smart, reasonably athletic and energetic, but usually with a bit more of a sense of humor than you’d find in border collies. Anyone who knows the breed will understand what I mean.

Finally, since I started my current job leading a team for Dick Blick Art Materials, I’ve started drawing, something I’d always wanted to do. Like a lot of people, I think, I’d always wanted to capture some of the scenes around me, but I just felt it was beyond me. I guess the lure of using my employee discount, combined with thinking and talking about the tools and materials every day, overcame my reluctance and I started studying/practicing about a year and a half ago. In particular, I’m interested in what’s called “urban sketching”, quick sketches capturing city scenes, since I’ve always been fascinated by the scenes and shapes of cities. After PyCon I shared a sketch I did of the Rock and Roll Hall of Fame on Twitter, which was the first time I’ve done that. I don’t claim to be good, but I am getting better, and I do enjoy it.

Why did you start using Python?

I actually remember that fairly well. I was the director of technology for a private school in Ft Wayne, Indiana, and I talked our headmaster into sending me and Nathan Yergler to Linuxworld in SF in August of 2001. I chose to spend an entire day in tutorials for this unknown (to me) language, Python, presented by a guy named Guido van Rossum. While I do recall asking Guido a few dumb questions, by the end of the day I was sort of blown away with how easy to read Python was, how easy it was to write code that got things done, and particularly how much sense Python made as a teaching language. I was so impressed that on the flight back to Indiana I started rewriting our high school introductory programming curriculum in Python, and we were teaching  Python 6 weeks later. From there we started writing software for the school in Python, and I never looked back.

What other programming languages do you know and which is your favorite?

I started with Applesoft BASIC and 6502 assembly a long time ago. After that I’ve taught and/or used Pascal (and Delphi), C/C++, awk, VB (AND VB-DOS!), perl, Java, Javascript, and even a bit of PHP. Of all of those I think I liked writing C the most, with awk in second place. I enjoyed C because it’s low level enough to do anything and can be an interesting intellectual challenge, and awk I liked when I needed to process a lot of text and didn’t yet know Python – some 25 years ago I used awk to help one of my old professors produce a concordance to the Latin poet Lucretius.

What projects are you working on now?

My biggest current “project” is being chair of the PSF, and that involves lots of interesting topics, but that isn’t exactly related to being a Python dev. I am also enormously proud to have been one of the chairs of PyCon’s new Spanish track, “las PyCon Charlas,” the first time PyCon US has had a track of talks in a language other than English.

My other big project until recently was finishing the 3rd edition of The Quick Python Book. That took a fair amount of time making sure that things were updated and new features were covered, as well as creating/testing examples, exercises & answers, and code snippets. Now that that’s done, I’m intending to spend some time doing preliminary reviews of documentation PR’s for CPython, hopefully saving a little bit of the core team’s effort.

I’m also in the early stages of thinking about tools that might help with translation of documentation into other languages. As Python communities are starting to take off in Africa, Latin America, and Asia, the need for translations will also increase. I’m thinking that the first step might be a tool to give pointers on making a text be in Basic English, but I’d be interested in kicking ideas around.

Which Python libraries are your favorite (core or 3rd party)?

It may be boring, but the core library that I use most often, and which has saved me more headaches than any other, is the csv library. I also rather like the collections library – theres a bunch of really handy things there to help anyone write more Pythonic code, and they’re worth studying on their own as Pythonic code. Of the 3rd party libraries, I’m pretty fond of Beautiful Soup and the way it makes parsing web pages easier.

What made you decide to write a book about Python?

I was recruited by an agent (he’s still my agent today) and I agreed to it for a few reasons. For one, I’ve always been into teaching and writing in one form or another. I’d also already self published some textbooks that I’d used to teach high school Latin and I’d been interested in the process of writing and publishing books in general. Finally, I have to admit that I wanted to prove to myself that I could write a Python book. It’s been really gratifying that over the 9 years The Quick Python Book, second edition has been out, it’s received some very nice reviews and sold quite well. That was quite a run and I can only hope the third editiondoes as well.

What have you learned authoring a book?

A couple of things. First of all, I’ve come to really appreciate all of the work that goes into producing a book – the editing, reviewing, copyediting, indexing, marketing… your book really benefits from having a good team to help you, and I’m very grateful to the many folks at Manning Publications who did all of those things. Second, even with great support, writing that much content is a long and lonely job, and to make it work you have to pace yourself. It’s important to give yourself enough time, but the other thing is to try to do something, no matter how small, to move the project forward almost every day, whether it’s creating an example, writing even a page or two, or revising a chapter. If you do that, and just keep going, you’ll make it.

Would you do anything differently if you were able to start over from scratch?

I used to think that if I started again I would self-publish, but at this point I don’t think I would – I don’t want to do all of that work myself. What I think I would do is be much more thoughtful about scheduling and setting aside blocks of time for each section. As happens in writing code, I think we tend to underestimate the amount of time and effort getting to a particular milestone will take – at least I know I did.

Is there anything else you’d like to say?

Well, I feel the need to put in a plug for Python Software Foundation. I know that as the chair I’m biased, but the PSF is really doing some great work around the world, supporting teaching coding in general and Python in particular to people who otherwise would not have access to those skills. But for the PSF to continue and to expand that work, it needs more recognition, support, and resources. So if anyone has the financial resources and the desire to make a global impact, I’d love to hear from them. In fact, if anyone at all wants to talk about any aspect of the PSF, I’m more than happy to – ping me on Twitter at @NaomiCeder or via email at naomi@python.org.

Thanks for doing the interview!