PyDev of the Week: Philipp Rudiger

This week we welcome Philipp Rudiger (@PhilippJFR) as our PyDev of the Week! Philipp is the creator of Panel, HoloViews and GeoViews.

If you’re interested in the code that Philipp works on, then you should check out his GitHub profile. Let’s spend some time getting to know Philipp better!

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

Hi, I’m Philipp! I grew up in Berlin but spent 13 years in the UK to study and later to work and only recently returned to my home city. These days I’m a software developer at Anaconda working on open source projects and performing consulting work for various clients. Originally I wanted to get into music, studying electronic engineering and music production but quickly realized I was not musically gifted (a strong understatement). After building a bipedal humanoid locomotion model driven by a neural network for my undergrad thesis I, therefore, decided to pursue a PhD in computational neuroscience.

The developmental models of the visual system of the brain we were working on in my research group were very complex and shared many similarities with deep (and recurrent) deep learning networks of today but with stronger links to biology. To have any hope of understanding these models, which evolved and developed over multiple timescales, with a huge number of hyper parameters to tune and explore, I went from generating 1000 page PDFs summarizing my model runs to building open source tools to explore these high-dimensional parameter spaces. This is how (and why) my PhD colleague and I developed HoloViews. That project was soon eating up almost all my time and a future in science seemed quite uncertain, which led me to apply for and land a job at Anaconda just as I was starting to write up my PhD thesis.

Ever since we have been building a number of open-source tools to make the visual exploration of data and the ability to build and share applications/dashboards easier under the HoloViz umbrella. Therefore I spend a lot of my time maintaining, authoring and contributing to libraries such as Panel, hvPlot, HoloViews, Datashader and Bokeh. I’ve had to relearn to take time for myself away from these projects so recently I’ve been enjoying my time getting our little garden in shape, cycling, playing basketball and going for long walks.

Why did you start using Python?

During my joint Masters and PhD program in computational neuroscience we were often assigned projects in Matlab and most of the labs I interacted with were also locked into expensive Matlab licenses. However, the transition to an open-source alternative in the form of Python had already begun and I hopped on that bandwagon to perform a wide range of analyses for my MSc thesis. Once I joined James Bednar’s research group we were all collaborating on a neural simulator called Topographica, which was written in Python, and the ability to interface highly performant C code with a high-level language like Python got me hooked. From there I started developing my own open-source tools and never looked back.

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

My programming journey started with C, C++ and VHDL, working on embedded systems as part of my undergrad program. Those days are well behind me now though and these days I spend most of my days interfacing JavaScript/TypeScript with Python. While I couldn’t bring myself to declare JavaScript as my “favorite” programming language, the JS and TypeScript world has come a long way and most days I’m quite happy working with both Python and TypeScript. Hopefully, I’ll be able to give the crown of my second favorite programming language to Rust, but I only very recently started diving into it and haven’t made up my mind yet.

What projects are you working on now?

As a maintainer of multiple libraries, my days often feel like whack-a-mole jumping from project to project trying to keep the backlog of issues to an acceptable level. Recently I’ve been spending most of my time on Panel and am now gearing up for a 0.12.0 release with a huge number of exciting features. If you’re not familiar with the project, it aims to provide a seamless transition from exploratory analysis in a notebook or script to an application or dashboard you can deploy and share with the world. Additionally, I’ve been spending the last few months getting a new project called Lumen off the ground, which provides a layer on top of Panel to let you build data-centric dashboards using a declarative (YAML) specification, and hope to officially announce it in the coming weeks or months.

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

The library which I think is still not getting enough love in the Python ecosystem is xarray (although that is changing). You can imagine xarray as the pandas for nd-array data, i.e. it provides the ability to add labels and semantic indexing to your multi-dimensional arrays. If that had existed when I started my PhD I may never have gone down the rabbit hole of building my own open-source projects.

Which open source project that you contribute to is your favorite to work on and why?

Tough question! The different projects I contribute to provide very different challenges, so I’ll split my answer:

1) Datashader is a really powerful library to quickly visualize very large datasets. I really enjoy the challenges that come with optimizing code using Numba, Dask and the RAPIDSAI stack to squeeze every last drop of performance out of a machine.

2) Panel was the first library that I am really proud of after having been given the chance to design it from the ground up over the course of several months. It’s a huge joy to work on a project where you are proud of most of the architectural and API design work you put into it.

What lessons have you learned as an open-source developer?

Working in open-source is exceptionally rewarding when you see what people are able to build with your tools. At the same time, the amount of effort needed is oftentimes overwhelming. I’m in the lucky position of having made OSS contributions to my main job but finding a balance is still a tough problem. One thing I’m definitely still learning and that you are rarely taught about is the importance of the non-technical aspects of OSS. Things like nurturing a community, mentoring, and marketing your projects, so those are things I’m still learning and am trying to get better at.

Is there anything else you’d like to say?

We are always looking for new contributors to HoloViz, if you’re interested introduce yourself on our Discourse or start by contributing to one of our projects directly. I want to emphasize that non-code contributions are just as important to us so if you have input on our documentation or have expertise building a community please reach out!

Thanks for doing the interview, Philipp!