This week we welcome Ned Batchelder (@nedbat) as our PyDev of the week. I have enjoyed Ned’s blog for quite some time. He is also the author of the coverage package and is quite active in several Python user groups. Let’s spend some time getting to know more about Ned!
Can you tell us a little about yourself (hobbies, education, etc):
I’m a dyed-in-the-wool software engineer. I’ve been working on and thinking about software in various forms for almost 40 years. My mother was a software engineer, so I started out with books of hers. Her father was a statistician in the census bureau, so I even have some computer books that belonged to my grandfather.
My family is a huge side-project of mine :). I have three boys, one autistic. Dealing with his issues, how he fits into the world, and how the world sees him, has been a big education for me in acceptance and difference. It also led to having dinner at the White House (http://nedbatchelder.com/blog/200607/sue_and_neds_excellent_adventure_part_1.html)!
As for actual hobbies, I like juggling. I’m surprised there’s never been a birds-of-a-feather for juggling at PyCon. 🙂
Why did you start using Python?
In 1999, I was working at Lotus on Lotus Notes, and I heard about a groupware tool that had an even more elaborate system of access control than Notes did: Zope. I looked into it and was impressed, but what really stuck with me was the language it was implemented in: Python. Python became my go-to language for tooling. Over time, my use of Python grew. In 2006 I got my first job using Python full-time, and I’ve been all-Python since then.
What other programming languages do you know and which is your favorite?
I’ve dabbled in Haskell to try to understand the functional mindset. Immutable data structures are very appealing, but I’ve had trouble getting up the learning curve to write real programs.
I used C extensively in the past, and still write it to optimize parts of Python systems. It’s much more detail-oriented than Python is, especially when writing against the Python C API. In addition to the usual C details that Python shields you from, like memory management and error status returns, you have to also do all the work to implement that shielding, for example, manipulating reference counts explicitly. I enjoy that level of detail if it’s only for a short while. Writing Python, I feel like a carpenter building entire houses. Writing C like that, I feel like a watchmaker crafting a finely tuned machine. Wearing a loupe on your eye is fine for watches, not so good for houses!
What projects are you working on now?
My full time job is at edX, where I’m helping the open-source community use the platform to educate the world. It’s a challenging application to write, and a challenge to bridge the inside-edX world with the larger community. I love the noble goal, and I love getting a chance to work on open source as my day job.
My primary side project is still coverage.py, which I’ve been maintaining and extending for a decade now. I’m getting close to supporting coverage measurements of templating languages like Django and Mako, which should be an interesting step forward for web applications. The HTML templates have extensive logic in them, and not knowing what parts are tested is a big gap in our testing strategy now.
On the non-coding side, I’m an organizer of the Boston Python user group (http://bostonpython.com). It’s large, more than 5000 members, and active, with two events per month. It’s very gratifying to be able to use a technical subject to bring people together. If you’re visiting Boston, get in touch, we love to have guest speakers.
An interest of mine is explaining Python to people. I really enjoy being able to understand a topic deeply enough that I can explain it clearly, and at an appropriate level for a beginner. My PyCon talks have tended toward these kinds of topics recently: Unicode (http://bit.ly/unipain), iteration (http://bit.ly/pyiter), and getting started with testing (http://bit.ly/pytest0).
Which Python libraries are your favorite (core or 3rd party)?
There are so many to choose from! In addition to perennial favorites like itertools, requests and tox, I’m delighted to continue to find little gems like blessed, and new powerhouses like click. They demonstrate the craftsmanship that Python developers bring to their work, and a dedication to making tools that help others.
Is there anything else you’d like to say?
There are times when I wonder about the energy I devote to the Python world. Why this much attention for a programming language? It comes down to what that world can do.
From a technical perspective, Python is a tool that can power peoples’ creations. Some of those creations will make good changes in the world. Having a powerful but approachable language like Python helps people get their ideas built. If I can contribute to the reach and capability of the Python ecosystem, then I feel like I’ve done something to contribute to those ideas getting built.
From an organizational perspective, Python is an example of an open source project that works. It isn’t always easy, and of course there is friction. There are mistakes: I think the Python 3 transition would be handled differently if we had a chance to do it all over again. But on the whole, Python works and makes good progress. I like that it can serve as an example of open source producing a thing that people use, warts and all.
Lastly, from an inter-personal perspective, I value the people I know from the Python world. A programming language may seem like an odd thing to have in common with a stranger on the other side of the world, but why not? It’s no odder than rooting for the same baseball team, or having a love of knitting. Python has brought us together, and our connection has grown from that.
So Python may be “only” a programming language, but it’s also a seed for positive connections and effects. That’s why I devote the energy I do to it.
Thanks so much!
The Last 10 PyDevs of the Week