PyDev of the Week: Andrea Gavana

Andrea Gavana is this week’s PyDev of the Week. He has been quite active in the wxPython project both as a contributor of original widgets and a great help to many of the people who have asked questions on the wxPython mailing lists. I’ve known him for quite a while. Let’s see what he has to say!

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

I come from Milan, Italy, and I studied Chemical Engineering: I was lucky enough to participate to an exchange program sponsored by my first employer (Eni) and the university (Politecnico di Milano), so I completed my master in Italy and Canada at the same time. I’m currently based in Denmark and I work as a Reservoir Engineer in Maersk Oil.

One of my favorite hobbies is Python coding, mostly directed towards Open Source frameworks, but I also like cycling and swimming – especially if I can go to the swimming pool with my daughter!

Why did you start using Python?

I love this question, I get it all the time when other people see me using Python and also during the Python course for Reservoir Engineers I just taught internally for Maersk Oil… Back in 2003 I was using Matlab to write user interfaces and pre/post process reservoir simulation data, but I grew increasingly frustrated by the limitation of Matlab as a generic framework and relatively scarce GUI capabilities. So I asked around in various forums and someone suggested me to look at Boa Constructor (a GUI builder tool based on wxPython). And, in about zero time, I was hooked to Python. The beauty, simplicity and power of the language still amaze me now, 10 years after I started learning and using it.

I have to say that I approached Python from the wrong side of the learning curve, as from the very beginning I threw myself in the GUI world – before learning the basics – and this is not something a new user should do. GUI programming is one of the most complex tasks you can do in any language, not because the coding is more complicated, but because you have to write your GUI to provide the most seamless “user experience”, as others (non-programmers) are the final users of your product.

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

Well, my favorite remains Python by a long stretch. But I code in Fortran as well, especially for heavily intensive numerical simulations, and then I bridge my Fortran routines to Python using the excellent f2py and voila’ – I have the speed of Fortran with the beauty of Python, all in one pot. I also know Matlab, but it’s been a while since I touched it, and I did a bit of programming in C# in the last couple of years.

What projects are you working on now?

Due to very heavy work and personal commitments, I am unfortunately a bit inactive in the Open Source world these days… However, I am still the official maintainer of the AGW library, a collection of owner-drawn, generic widgets for the amazing wxPython GUI framework. I have also contributed a couple of user interfaces to the Open Source community, GUI2Exe and the Namespace Diff Tool. Since I have been working on numerical optimization routines in the past, not long ago I decided to release one of my algorithms, AMPGO, to the Open Source world. It is a very powerful solver, able to outperform all the numerical algorithms in the SciPy optimize stack.

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

I love wxPython, it enables me to create beautiful, consistent and platform-independent user interfaces, while maintaining the native appearance of widgets no matter if my GUIs are run on Windows, Linux or Mac. It’s by far the best GUI framework I have seen until now.

I work a lot with NumPy and SciPy, as our job requires heavy numerical processing, and I am always impressed by the power and speed of these two libraries. I’m also a fan of SQLAlchemy, as it allows me to store data and results in databases in a seamless (and database-independent) way.

Is there anything else you’d like to say?

Thank you for inviting me at the PyDev of the Week!

Thank you!

Previous PyDevs of the Week