PyDev of the Week: Kai Willadsen
PyDev of the Week: Kai Willadsen
This week's PyDev of the Week is Python tool writer, Kai Willadsen! Come find out more about Kai, how he got his start with Python, and what he's currently working on!
Join the DZone community and get the full member experience.Join For Free
Jumpstart your Angular applications with Indigo.Design, a unified platform for visual design, UX prototyping, code generation, and app development.
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 Ph.D. 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 and 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 Ph.D. 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 favorite 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 are the top three things you have 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 for doing the interview!
Published at DZone with permission of Mike Driscoll , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.