PyDev of the Week: Matthias Kestenholz

This week we welcome Matthias Kestenholz as our PyDev of the Week! Matthias is active in the Python / Django communities and occasionally blogs about them too! You can find out what else Matthias is doing on GitHub, Mastodon or LinkedIn,

Let’s spend some time getting to know Matthias better!

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

I’m a programmer working on websites and web-based infrastructure. I live in Zurich, Switzerland since 2002, now with my wonderful wife and two kids.

I have a Masters degree in environmental science with a focus on atmospheric physics and climatology. I co-founded a small marketing and campaigning agency with a few friends in 2006 while still studying. I went into campaigning and marketing because I was (and still am) convinced that I could be more useful for our collective future that way than when drilling yet another ice core and determining yet again that we really should change a few things (sorry for the euphemism) about our way of living if we want to have a sustainable present and future.

I wrote my first program on a TI-67 Galaxy calculator and soon sold all my stuff including a camera I liked a lot to buy a HP 48G; that was in sixth grade if I remember correctly. I tried learning everything about it, from programming to relatively advanced mathematics. I definitely didn’t understand everything.

The point where I really started to learn programming was when I noticed that I could use the vector geometry we learned in school to draw projects of three-dimensional objects on a screen. I implemented animated wireframe cubes etc. using Turbo Pascal and later C; my old 486 didn’t manage to render more than a handful of frames per second and that’s when I taught myself x86 assembler in a few months; I was happy and stopped programming almost altogether when I attained 20-30 FPS, I don’t remember exactly.

Later, I played around with Linux. I got a SuSE Linux box from somewhere, probably 6.3 (with Linux 2.2.13) and installed it on a really old computer. When Windows crashed about 10 times on a single day, probably because of broken hardware, I jumped ship and have been a happy console user ever since. I have switched back and forth between Linux, Mac and Windows ever since, but I do almost all real work on Linux (either natively or in WSL2)

During my studies I discovered web development, this rekindled my love for programming and it was a good way to earn some money on the side to pay the bills. I have mostly worked with PHP, HTML and CSS at that time. I have fond memories of the A List Apart website and the CSS Zen Garden, that was very inspiring to me.

I have also attained certificates in requirements engineering and interaction design in the last years because there came a point where I felt that it might be good to actually learn a thing or two about the things I was already doing all day every day.

When I’m not working I like gardening, mountain biking or just cycling in general, going for long walks and listening to a lot of music. These days I mostly listen to Jazz, Black Metal, some D’n’B and not much in-between.

I’d love to start playing music instruments again. I do not have the necessary motivation for this right now, but who knows what’ll happen in the future?

Why did you start using Python?

I wrote my own PHP-based web framework with an ORM, forms including CSRF protection and an automatically generated administration interface. I discovered Django quite early on, but the forms module was less capable back then (or so I thought) so I didn’t want to switch. Later on developing my own framework while working on projects for paying customers became a drag, using PHP became a drag and I started looking around for real. That was some time between Django 0.96 and 1.0; I looked at Ruby and Python, respectively at Ruby on Rails and Django, and in the end decided to use Python and Django because of Django’s administration interface and especially because Python didn’t use that many special characters in its source code. It still laugh about it because it was such a silly reason for the decision, but I’m really happy about it. Both the Python and Django communities are great examples how a community could and should be run when it comes to inclusivity etc.

I like the batteries-included philosophy of Python and even after using it for ca. 15 years it’s still a fun language, and not boring at all.

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

I have written some code in Bash, Perl, Python, C, C++, C#, Java, CSS (1), JavaScript, Go, Basic, PHP, and many languages I don’t remember (TI or HP calculators, the Psion 3a). I’m currently working through some old Advent of Code events using Rust but it still gives me a really hard time.

I enjoy writing Python the most because I these days I’m only getting confused by the problems at hand, and not by the programming language itself. This has probably more to do with 15 years of experience than with Python itself. But, I didn’t (want to) manage to stay with PHP for more than a few years so it probably still has some significance.

(1) CSS is a real programming language, as is HTML. Some people should descend from their high horse if they don’t believe it.

What projects are you working on now?

Apart from many small and medium-sized websites which are either in active development or maintenance mode I mostly work on a few platforms which host digital versions of teaching materials for elementary schools (I hope that’s the correct term for the first nine years of obligatory school). I don’t have anything to do with the development of the teaching materials themselves, only with their editing and distribution.

It’s interesting to me because helping schools and teachers also obviously has a humanistic value and benefits. Having meaningful work makes it so much easier to get up in the morning.

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

I already mentioned Django above; my favorite add-ons are django-debug-toolbar (I help maintain it) and some of my own libraries which are too numerous to mention, but you find them all at https://github.com/matthiask/ I should be better at tooting my own horn and talking more about them, but it still feels uncomfortable.

asyncio is nice but I really want to work with Trio but I, unfortunately, haven’t found a good reason to do this yet.

Re. core modules: I actually like regular expressions.

Some libraries I always use are coverage, Pillow, lxml, requests, psycopg and redis, and probably many others that I, unfortunately, forgot about.

Is there anything else you’d like to say?

Thanks for the opportunity!

Here’s my blog https://406.ch/ I should definitely write more.

Thanks for doing the interview, Matthias!