PyDev of the Week: Tim Golden

This week’s PyDev is Tim Golden. He is a member of the Python Software Foundation and a Python core developer. Tim is also a moderator or owner of several Python mailing lists. In April 2013, Tim was the recipient of the Python Community Service Award “for his work on supporting the Windows Management Interface in Python and supporting that code and Windows users generally on comp.lang.python.” He blogs from time to time and I would recommend checking his writings out. Finally, Tim is the author of several Python modules for Windows, which you can read about here.

Let’s spend some time getting to know him better.

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

I’m a South-Londoner by birth from the Wimbledon area. I did Computer Science at UMIST in Manchester and then moved back down to London to work. My first job happened to be on VAX/VMS & Oracle and I’ve stayed in the Relational Database world ever since.

For the 25 years I’ve been working here in London, I’ve been involved in youth work with boys in South & West London. I’m also lucky enough to be able to play the piano by ear, which makes it easy to entertain people and can be an ice-breaker. I’ve always been a fan of reading & public libraries, and I do still run a book review website called (Flask & Sqlalchemy, since you’re asking) but I’ve not really had the time to support it these last couple of years.

Why did you start using Python?

At UMIST my final-year project was written in Modula-2, which I enjoyed and later used for a while to teach some programming at a Club in South London. I went looking for a more up-to-date compiler and came across Python (1.5.2) — one of whose inspirations, as you know, is Modula-2. It just clicked so immediately that I really haven’t looked back.

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

My bread-and-butter work is in SQL (the Microsoft T-SQL dialect). You can argue the toss over whether it is or isn’t a programming language, but it’s certainly quite capable if you’re working in the domain of data manipulation. For that reason, I’m not a fan of ORMs outside simple boilerplate CRUD: for me, they’re just another language to learn to do what I can already do. (Obviously there are good arguments about cross-platform/db work etc. but I mostly work within one stack).

I can program in C (which is handy for Python core dev work) but it’s never been my first language; more like a competent second language. Over the years I’ve done a bit of this and a bit of that (Java, Cobol, Javascript etc.) as the job has required, but while I’m halfway-competent in Javascript, I don’t claim anything more than acquaintanceship with any of them. Really, Python has spoiled me.

Some people advocate learning a new language a year, and I’d love to have the chance. I’m always interested when I hear friends or read bloggers citing good features in new languages (eg Rust, Go, Dart, Pike, D &c.). Unfortunately my time is already hugely over-committed so I really can’t justify spending even that much time picking up something new.

What projects are you working on now?

At work, my main focus is a Data Warehouse plus a data interchange between our systems and those of a third party to whom we’ve just outsourced part of our operation. As usual, although both of those systems are based around a Microsoft toolstack (SSIS, SSAS, BizTalk), Python is oiling the wheels. We have a (stdlib-WSGI + pyodbc) web app which provides a simple web interface to our logging tables; we have a (pyodbc, winsys & Pillow) Windows service which picks up incoming images, transcodes & resizes them before sending them across to an FTP server to be picked up; and we have a (pyodbc + winsys + threading) pluggable monitoring service which watches for various activities such as the arrival of new files, database updates which haven’t been migrated, incoming error notifications &c. and logs them to our logging tables. A later phase will add syslog notification to our internal syslog server.

In addition, our Helpdesk system is entirely (re)written in Python. (cherrypy + pyodbc + internal libraries). I handles email ingest & notification, timed alarms, web access and whatever else we throw in. It’s great because we can easily change or add things. Of course, it’s never officially a priority, so we always have to slot in around other revenue-earning work.

Outside work, I’m struggling to find enough clear time to pick up some of the Windows core dev work. It’s great having Steve Dower & Zach Ware reworking the Windows build infrastructure and fixing up issues.

I’m also trying to work out a scheme where I can use RaspberryPi, Lego Mindstorms & Python to interest the lads at the club. This, frankly, isn’t easy, because few of them are inherently interested so you have to work very hard up front to come up with an achievable result in a short time and which you can build on later.

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

I suppose I’m not unusual in liking my own libraries quite a bit: wmi, active_directory, winshell, winsys and others. Although I use some of them seldom enough that I have to revisit my own source code & docs to remember how to do something!

Outside that, I don’t know about “favourite” but the pywin32 libraries and pyodbc have been a core part of my working tools for a long time now. Although I rarely use it now myself, I’m always happy to promote Irmen de Jong’s Pyro: it’s mature; it just works for simple cases and extends nicely for the more complex; it’s well-documented and well-supported, and it’s just fun to use. If I want to run up a multi-machine, multiprocess example, I start with Pyro.

What made you decide to do the “One Screenful of Python” project? Can you tell us more about that?

Really, it was the Education track at the 2013 & 2014 PyConUK. On both occasions, we had a group of Primary & Secondary teachers trying to explain what would help them in the classroom. We heard that, for an average Secondary School class, one screenful of code was about all the teacher would be able to work through with them in a typical 45-minute lesson. Obviously that one screenful would have to produce something tangible, even if it were part of some larger project. So I set to to think about producing some of those screenfuls which could be shared via github.

It was clear from talking to teachers that they operate in a much more restricted environment than we developers might think. In many senses: the teacher’s own ability and experience; the pupils’ ability to grasp things; the timeframe in which they operate; the facilities and tools available to them, including locked-down computers & networks and obstructive systems managers. So part of my self-imposed remit is to keep third-party libraries to a minimum, but not to reinvent them. Some teachers can readily install third-party code; others can do so after a bureaucratic process. It makes no sense, for example, to reimplement PIL/Pillow just to make a point about third-party code.

The reality, of course, is that real life has kicked in and I’ve not been able to give it the attention I wanted to. But the project is still alive; it’s got its own github organisation and anyone is welcome to contribute. I’m talking to my company about allowing me some time to go into schools and help; don’t know if it’ll come off, but it’s something I’d really like to be able to do to help out both the teachers and the kids.

Is there anything else you’d like to say?

There are people who are core developers and PSF members for years; people who own or moderate the various Python mailing lists; people who respond to webmaster@ and planet@ addresses; people who administer and sort out the infrastructure which runs on; people who organise code Dojos and other meetups in various places; people who organise conferences, such as the PyCon UK where we’ve had education and kids’ tracks running for the last two years; people who receive Python Community Service Awards; and many more people besides doing a lot more to make the Python Community work. Not just the language itself, the core development, but the whole ecosystem around it.

And not just the aspects owned or run by the PSF, the stuff. Also widely-appreciated third-party facilities like the pip toolchain, the pywin32 libraries, readthedocs, IPython and the SciPy community, and all the many, many packages available via PyPI. Occasionally I glance over the PyPI feed just to get some idea of the vast variety of activity around this language.

One final point I’d like to make is that I always have been impressed by the general level of respect & courtesy around the Python community. Certainly, things blow up from time to time and people get heated. We’ve got a lot of very smart people with a lot of big ideas; there’s bound to be clashes. But time and again I’ve seen people trying to keep things level, backing off, coming back to apologise for a momentary outburst, recognising that there are valid opinions other than their own. Seems to me that this evidence of self-control and self-awareness is especially important when one of the hot-button topics of the moment is a kind of uncontrolled and toxic aggression among developers.

Thank you!

Previous PyDevs of the Week