PyDev of the Week: Chris Withers

This week we welcome Chris Withers as our PyDev of the Week! Chris has been using Python for quite a while. I think the first packages I used of his were the excellent xlrd and xlwt packages, used for reading and writing Excel files. You can get an idea of his contributions to Python on his github profile. Let’s take some time and get to know him better.

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

I grew up in Zimbabwe and now like in the UK, but have ended up with two passports, both for countries I’ve never lived in.

When I’m not coding, I’m either umpiring for field hockey matches or doing things with dance music.

Why did you start using Python?

I was working for a small software company near where I lived and they were looking for alternatives to the Lotus Notes based stack they had been using. We’d tried Perl and mod_mason, but not everyone was a fan, so I was tasked with investigating Zope. Zope and it’s “through the web” editing and object database was an amazing breath from fresh air. It was my first exposure to Python and, more importantly, the Python community and open source in general. I haven’t looked back since!

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

None really. I deal with more Bash scripts than I’d like (in that I have to deal with more than zero) and do a bit of Javascript when I have to, along with the requisite amount of HTML and CSS, but Python has been all I’ve ended up needing throughout my career…

What projects are you working on now?

A bunch of libraries to do with data import that live under, all used for finding, importing and cleaning up hockey fixtures data for my local club.

I also make sure that testfixtures, my collection of handy tools for automated testing, is kept up to date and I’ve recently finished a re-write of Mush, a library for abstracting common parts of scripts and sharing resources (ArgumentParsers, database connections, configuration stores, etc) between them.

I’ve got a stack of other projects that I want to get done, but sadly way too little time to get them to where I want them to be, and with our first child on the way at the start of March, I can’t see that changing.

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

I’ve got to say that psycopg2 and SQLAlchemy are top the pile for me. psycopg2 has been a rock solid client library for Postgres for as long as I’ve been using Postgres and SQLAlchemy is one of the richest and most powerful libraries I’ve ever used. The documentation is great, it keeps on getting easier and better to use and it has a fantastic community driven by the unending energy and commitment of Mike Bayer. If you’re doing anything with relational databases in Python, from simple connection pooling through to a fantastic SQL abstraction layer, all the way to the fully fledged ORM, you won’t find better in the Python world, and likely in any other language ecosystem either!

Where do you see Python going as a programming language?

We’re at an interesting point in the Python timeline: Python 3 is perfectly usable now but most people will still have huge Python 2 code bases that they don’t have time to migrate. As a result, there are still a few big libraries that aren’t compatible with Python 3, Fabric being the one I hit most recently, but there are a few that either have never or are no longer supporting Python 2. Being a library maintainer is pretty miserable, having to support two languages for a library isn’t a lot of fun and it’s hurting the language. I can’t say Unicode in Python 3 feels a whole lot better than in Python 2, so I am left wondering if it was all worth it?

What is your take on the current market for Python programmers?

I think it’s probably at its peek: there’s huge demand for talented Python programmers, particularly in the financial sector, but the language is just starting to become a true commodity in the same way as Java, where there’s a huge supply of cheap programmers and a very slowly dwindling demand. It will be fascinating to see what the next 10 years hold for Python and if something like Go will come along and eclipse it or if it will just become part of the landscape like C, C++ and Java.