This week we welcome Charles R. Harris as our PyDev of the Week. Charles is a core developer of NumPy, one of Python’s most popular scientific computing libraries. He has been working on NumPy since it was still called Numeric. He is also a core developer of SciPy. Let’s take some time to get to know Charles better!
Can you tell us a little about yourself (hobbies, education, etc):
I have an undergraduate degree in physics and a doctorate in mathematics. Like many with similar backgrounds, I ended up doing many things not directly related: optical and electrical design, spectroscopy, data analysis, and programming. My final niche before retirement was as the mathematical go to guy for the engineers that I worked with. Now that I am retired my hobbies are few, mostly reading science fiction and fantasy with a sprinkling of math and physics texts.
Why did you start using Python?
When I was finishing up my doctorate, one of the other students wanted to publish a group graph on the net. He experimented with Java, which was not as portable as advertised, and ended up in Python, which he recommended as a coming thing. That was about 1999. After graduation and a return to work I tried various languages out of curiosity and found Python very pleasant to work with. Not only that, but for my job the alternatives to Python were Matlab and IDL, and neither supported things that I wanted to use: genetic algorithms, graphs, specialty digital filter designs, Hermite normal forms of integer matrices, and various other things not normally considered part of numerical analysis. Mathematica would have been an option, but it was very expensive at the time, and rather clunky. So I ended up with Numeric and Python because that was a pleasant environment in which to write my own algorithms, cost nothing, and I could make contributions to fix or add things that I wanted. The ability to make contributions was a big selling point, as over the years I had found myself rewriting the same darn functions for every new language and project, and having some of them in a more permanent, public location and written in a popular language meant that I didn’t need to do that anymore.
What other programming languages do you know and which is your favorite?
It is pretty much C and Python at this point. Over the years I’ve worked in several assembly languages, C, C++, and Fortran 77. For everyday programming it is Python all the way.
What projects are you working on now?
I am the most senior NumPy maintainer, and that is pretty much it. I see my job as fetching metaphorical pizza and coffee for the bright young’uns who do the real work.
Which Python libraries are your favorite (core or 3rd party)?
NumPy, SciPy, and Matplotlib are what I’ve used most over the years. SymPy, mpmath, and scikit-image have also been useful on occasion. And I have the feeling that someday I should really take a look at scikit-learn.
How did you get involved with NumPy?
When I got involved it was still Numeric and SciPy. My initial contributions were the 1D zero solvers in SciPy along with a fix to the random number package of Numeric, followed by the type specific sorting routines in Numarray that were later taken over by NumPy. Those all filled a personal need, which is one of the nice things about contributing to open source. My initial involvement in NumPy itself was motivated by the simple desire to break up the big glob of code that constituted its initial form and make the coding style something readable. I thought making the code more accessible would serve as developer bait. Here, kitty, kitty, kitty.
What lessons have you learned from working on this open source project?
That nothing beats longevity. I am not the most talented developer who has worked on the project, but I’ve been there a long time and that has its own special quality. Over the years NumPy has benefited enormously from being consistently maintained and updated, which in turn helps recruit new talent. It is a virtuous circle.
Is there anything else you’d like to say?
Thanks for doing the interview!