This week we welcome Maurits van Rees (@mauritsvanrees) as our PyDev of the Week. Maurits is a core developer of the Plone project as a member of the Plone Security Team and the Plone Release Team. He is also a maintainer of zest.releaser. You can find out more about what Maurits has been up to via his home page. Let’s take a few moments to get to know him better!
Can you tell us a little about yourself (hobbies, education, etc):
I was born in the Netherlands and happily live in this European country that does not know the concept of a ‘mountain’ and that has half the population living below sea level. I am not kidding.
My first study was econometrics. That was part mathematics (quite hard), part economics (not so interesting after a while), part informatics (the juicy part). After a while I switched to pure informatics. It all took me far too long, but in the end I did finish it.
I like reading fantasy and science fiction. And writing it! Sorry, nothing in English, but for Dutch readers there is a short story here: https://www.smashwords.com/boo
I am the younger brother of Reinout van Rees, also known in the Python community, and featured on this blog recently. We are a lot alike: we have the same taste in music, books and programming language. When we are at the same Python conference, we have an ongoing friendly competition on who is the first to publish a summary of a talk.
Why did you start using Python?
About fifteen or twenty years ago I created my first websites: my own website, and a few small student related websites. It was all handcrafted html and css. To start a new page I would just copy an existing file. Around 2004, after a hint from my brother, I started looking at Zope, and used that to create a super simple CMS, just through-the-web templates using a master template so I would not need to copy so many boiler plate code each time. Zope itself is of course Python based, and you could create Python code through the web, so that was my first Python experience: use Python to make it less repetitive to create a website.
At the end of 2005 my brother encouraged me to start an internship at the company he was working for: Zest Software, who are using Plone on top of Zope, plus some Django. I never left.
What other programming languages do you know and which is your favorite?
I know Bash and Javascript, and a long time ago Pascal, C, C++, Java. I have read a book on Lisp, which in some respects looks really awesome, but I have not used it. I remember building a four-in-a-row computer player in Pascal as a toy project, which played okay until I changed something and it started always preferring column one. This was before I knew that version control systems existed, so I gave up.
As for favorites, with Javascript you can spice up and speed up websites nicely, making the user experience much smoother, but I just couldn’t live without Bash or another Unix-like shell. For one customer I sometimes need to connect to a Windows 2000 server, and I am very happy and relieved to have Cygwin on there so I have some basic sane shell functionality.
What projects are you working on now?
I am mostly doing Plone stuff. I hope that a PLIP (PLone Improvement Proposal, similar to a PEP) of mine lands in the next Plone version: deprecating one version of installing and configuring a Plone site in favour of another, so there is one obvious way to write installation code for an add-on. Since a year I am on the Plone Security Team, which sometimes leads to frantic projects, currently mostly for cross site scripting issues. And I am in the Plone Release Team, which mostly means putting packages on PyPI, so I work on zest.releaser which I maintain together with my brother.
Which Python libraries are your favorite (core or 3rd party)?
It’s always nice to play with `random`. As Forrest Gump said: “Random is like a box of chocolates: you never know what you are going to get.” And I daily work with `zope.interface` and the Zope Component Architecture built around it. It holds together a complex multi-part system like Plone and allows you to tweak or completely override core components in a sane way, or add your own.
Is there anything else you’d like to say?
Coding is good, but don’t forget the other important stuff. And I don’t just mean: remember to write documentation and tests. Reacting timely on an incoming issue or pull request is great, but you may already have made an implicit time agreement with friends, family, God, or yourself. An occasional dash of frantic work can be very useful and fulfilling, but remember you are still a human with limits and wishes and relations. Guard your boundaries to keep yourself sane and able to stay in it for the long haul.
Thanks for doing the interview!