PyDev of the Week: Kai Willadsen

This week we welcome Kai Willadsen (@kywe) as our PyDev of the Week! He is the maintainer of the Meld project, a cross-platform visual diff and merge tool written in Python. You can catch up with Kai on his blog or see what else he is working on via Github. Let’s take a few moments to get to know Kai better.

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

I did undergrad in computer science + cognitive science, a PhD in complex systems modeling, and a variety of post-doc work before bailing on the academic life. None of the above is even remotely relevant to my current work though!

My non-computer hobbies are basically gardening & chicken keeping. For people in the position to do so: if you’ve never kept chickens, think about it! They are the best.

Why did you start using Python?

Way back during my PhD studies I’d coded my model in C++, and that was fine. However, I got to a point where I needed to be able to try out different model scenarios and experiment with analyses, and writing that all in C++ just got to be too slow. In a few days I got SWIG to generate Python bindings for my model code and soon I was writing anything that wasn’t performance critical in Python. Pretty soon, that was all I was using.

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

In the distant past I spent real time with C++ (shudder) and did a fair bit with Java and C. I don’t know if I really have a favourite non-Python language; Rust is what I’m currently most interested in, but Go has its place, and C is always… basically pretty okay.

What projects are you working on now?

Almost all my personal coding time is spent on Meld at the moment. I want to get back to a side project I had for generating Python 3.6 typing annotations for GObject introspected libraries (like GTK+). I’ve also started on a simple GTK+ ChromeCast client in Rust, but that’s mostly because I wanted an excuse to learn Rust… and it’s a slow process.

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

I find that the standard library can be a bit hard to love. It’s not that it’s bad! it’s just that a lot of the time it’s not *great*, often due to compatibility considerations and similar constraints. Having said that, the new and shiny `pathlib` is (as of Python 3.6) pretty good.

As for third-party libraries, the pygobject project maintains the introspection bindings that make Python + GTK+ actually work, and I feel that it’s an under-appreciated project. It’s a tricky job they’re doing, but feels good to work with that API. Other libraries that I reach for all the time include Click (nice command line clients), Werkzeug (funky things with HTTP), SQLAlchemy (anything touching a DB) and Cython (my Python isn’t quite fast enough).

How did the meld project come about?

I can’t answer this, because I didn’t start it! The original author was Stephen Kennedy. I’ve been the maintainer for the last decade or so… which tells you something about how old Meld is as a codebase.

What top three things have you learned contributing to open source projects like meld?

Firstly, unless you’ve actually maintained a project, you’d be shocked at how much time all the non-coding tasks take up. Even minor things like monitoring a fairly quiet mailing list and making sure that questions get answered takes real time when you only get a handful of hours a week to spend. Just writing the release notes when putting a new version out can take hours.

Second, growing a real community around a project is a skill, and most people don’t have it (I don’t!). If you have someone who is good at this, treasure them.

Third, you’d like to think that users file bugs, but… they don’t. It’s not uncommon to find that e.g., some version control system I don’t use has been broken for a year and nobody said anything. I suspect this is even more true of applications than of libraries.

Thanks you doing the interview!