This week we welcome James Bednar (@JamesABednar) as our PyDev of the Week! James works at Anaconda as a manager of the Holoviz, a popular data visualization package for Python. If you’d like to see what else James is working on, you should check out his GitHub profile.
Let’s spend some time getting to know James better!
Can you tell us a little about yourself (hobbies, education, etc):
I’ve always wanted to figure out how things work, mainly to fix them or make them work better. The human brain is the ultimate prize there, more interesting to me than the entire universe, so I resolved to figure it out. I set about getting degrees in computer engineering, philosophy, computer science, and neuroscience, and dived in trying to build a brain.
After a decade of postgraduate study in Austin and another decade as a faculty member in Edinburgh, it was clear that the biggest bottleneck was the computing tools available for doing science, so I’ve been focused on those ever since.
Why did you start using Python?
As a grad student programming ambitious scientific software systems in C/C++, I deeply knew that wasn’t a good way to make progress. When I got multi-year funding to build a brain simulator, I shopped around for what I thought of as a scripting language. The idea was for the end user to configure their simulations in the scripting language, with the actual numerical code of the simulations still in C for performance.
We’d settled on Scheme for scripting and already built a first version, but then a random student in the University of Texas CS grad-student lounge in 2003 was raving about Python, and one look at its standard library made it clear that much of what we needed to write for Scheme was already in Python, so we reluctantly took a chance on it. If I had any idea what that guy’s name was I’d buy him a beer now, as it changed my entire career! Obviously, Python took off from there, and Scheme decidedly did not.
What other programming languages do you know and which is your favorite?
It’s been all Python since 2003, but in reverse order before that there was C++, C, Scheme, Haskell, Prolog, Common Lisp, VHDL, LaTeX, Emacs Lisp, Fortran, C-Shell, Awk, PHP, Pascal, BASIC, assembly/machine code, and probably some others I’m forgetting.
Scheme was by far my favorite balance between elegance, simplicity, and power, but alas, no one else seems to have agreed with me. Python is said to be the second-best language for everything, and it’s definitely my second-favorite language for everything. Now that Numba gives me the speed of C and the syntax of Python, I see no reason to leave Python ever!
What projects are you working on now?
I mainly facilitate and mentor others, as I never get enough time in one stretch to finish anything! But I’m very excited about work we’re doing in HoloViz to be able to render even the very largest datasets in a web browser while also linking directly to individual data points. Usually for a large dataset there is a choice between aggregation (able to handle huge data but losing the individual points) and subsampling (showing individual data points but failing to convey the distribution accurately), but we’ve worked out good ways to provide instant access to every data point interactively, to really help facilitate exploring a dataset. Can’t wait until we ship that!
I’m also really excited about WASM and its potential to eliminate installation, setup, and configuration headaches. One runtime to rule them all, on browsers and servers alike!
Which Python libraries are your favorite (core or 3rd party)?
In HoloViz, Param is the one that makes any of the others possible. Without Param enforcing how code modules are configured and communicate with each other, there is no way a small team like ours could have built HoloViz.
Outside of HoloViz, xarray really stands out. They are really doing so many things right for science, ranging from packaging metadata together with the data where it can be read by machine automatically, including declaring explicit units for the data to avoid errors and ambiguity, to capturing hierarchical representations of datasets for flexible display and analysis at different scales, to supporting easy distributed computation for huge problems with Dask. Some really solid support for science in that library!
What are your top three features of HoloViz?
My favorite top-three features of HoloViz are all about how it reveals your data :
(1) no limits on data size — get *all* of your hard-won data on screen and ready for you to figure out!
(2) easily plot anything — so you can really understand every stage in your workflow; no black boxes for bugs or missed discoveries to hide!
(3) always interactive — interactivity isn’t just for publishing dashboards or web apps, it’s about making it effortless for you to explore everything!
Can you give some examples of amazing projects using HoloViz?
awesome-panel.org is pretty slick. It both showcases so many HoloViz projects that I’ve never been able to click on all of them, it’s also a Panel app itself!
Is there anything else you’d like to say?
Thanks for the invitation, Mike, and keep up the good work helping everyone level up in Python!
Thanks for doing the interview, James!