This week we welcome Matthias Bussonnier (@Mbussonn) as our PyDev of the Week. Matthias is a core developer of the Jupyter Notebook and IPython. You may want to check out his GitHub profile to see what projects he is interested in and working on. Let’s spend some time getting to know Matthias better!
Can you tell us a little about yourself (hobbies, education, etc):
I have a pretty eclectic background. As you might not hear while reading me, I’m French, and I still have a relatively strong French accent. I was trained as a Physicist – started with quantum mechanics/particle physics and decided that it was probably not for me, so I did fluid mechanics and condensed matter, and I ended up with a Ph.D. in Biophysics which according to my advisor was often more applied mathematics than BioPhysics. As for computer programming, I’m mostly self-taught – I started with C/C++ when I was about 13 and moved between languages every now and then. I’m pretty monomaniac as my hobbies come and go. I used to program to distract me from my Ph.D. – which lead me where I am now. I like to play guitar, do nothing and enjoy nature, sleep, contradict people and make puns. I also love to understand why and how in general which takes most of my time – I try to write it up on my blog but it often takes me weeks to write anything and I’m not happy with it. I also enjoy teaching others, mostly because by teaching you understand better.
Why did you start using Python?
Well, I really started heavily using Python in 2011 at the beginning of my Ph.D. The codebase I inherited was working but was using 1) Matlab, and 2) LabView (graphical things with boxes you link to each other) and comments in German. As the number of Matlab licenses for the lab was limited, and Matlab does not have a package manager and is not really Object oriented programming I asked my adviser if I could use Python – he was happy to let me try as long as it was not hindering me. I started to heavily use Python/IPython/SciPy/etc for my Ph.D., submitting bug reports and patches. Advance three years: I graduated and was probably doing more Python than Ph.D., by delegating most of the Ph.D. work to the computer.
What other programming languages do you know and which is your favorite?
What projects are you working on now?
A couple. I’m still highly involved in IPython/Jupyter as it’s my day job – both are alive and well. These days I’m mostly on the IPython kernel side. I’m pushing for things you can do only on Python 3.4 and above. Mainly completions, async/await at the top level repl.
I’m also working on some generic Python tooling that I find is missing. Elm enforce semantic versioning by looking at your package APIs. I’m not a fan of enforcing, but I want a tool for developers that warns them they are breaking an API, then run it in my test suite.
Which Python libraries are your favorite (core or 3rd party)?
PathLib in core Python. Xonsh is awesome and is my everyday shell. Doctr to deploy docs on GhPages. Trio is really worth a look at both to use and internally. Even if you don’t use it, read the documentation which is the best explanation of async/await I have ever read.
How are Jupyter and IPython helping to bring new people into the Python fold?
The notebook is definitively a nice interface for starting to explore programming and do data science. It is not a silver bullet and we are happy to see various frontends developing. In particular, we hope that JupyterLab will provide a better transition to the folks that want to move their code into proper .py files. Having the ability to get a hosted notebook also makes deployment for classrooms way easier. It can be a pain to have 100 students install the whole stack. On the IPython side, I think we can still do a lot of things to make users' lives simpler and give them better error messages. I would love to have Microsoft Language Server Protocol and the Jupyter Protocol converge. One is good for “Static” code, the other for “Dynamic” code with a live kernel. I think we could get the best of both worlds with a bit of work.
What can we expect to see from these projects in the future?
The new features that should come out soon are JupyterLab – brand new UI. And real-time collaboration. There is also interact, that embraced react and the desktop-app paradigm so things are already quite evolving. As Jupyter is also mostly a protocol than can be adopted than a distribution we’d like to have more curated and well-maintained kernel beyond Python: R, Scala, Julia… and streamline the installation process for the users of these languages.
Is there anything else you’d like to say?
IPython uses an upper case I – we are not the fruit company
Thanks for doing the interview!