This week we welcome Mariatta Wijaya (@mariatta) as our PyDev of the Week! Mariatta is the co-chair of the PyCascades conference, a regional Python conference taking place in Vancouver, BC. She is also a core developer of the Python programming language. She does automation and web development for a movie company, so she also shows up in the Internet Movie Database (IMDB). You can check out what open source projects she is active in over on Github. Let’s take a few moments to get to know her better!
Can you tell us a little about yourself (hobbies, education, etc):
I moved to Canada almost two decades ago. I’ve lived in three different Canadian provinces, and now I live in Vancouver with my husband and two young children. I work as a Software Engineer at Sony Pictures Imageworks.
I’m a foodie. I have a strange hobby of taking pictures of food. I enjoy traveling, going on road trips, camping with my family, and playing Mahjong.
I co-organize Vancouver PyLadies, we meet once a month, the format alternates between a code jam and talk night.
I’m also on the organizing team of a brand new Python conference in the Pacific Northwest: PyCascades, happening in Vancouver in January.
Why did you start using Python?
Prior to learning Python, I have been a developer writing Windows and embedded apps, using .NET Framework and C#. In 2008, I worked in a startup company working on Windows project. When that project ended, they transferred me to a different team. This team was working on web-based apps using Python, Django, and Google App Engine. All of those were new to me. I wasn’t in the mood of finding a new company to work for, and I thought learning a new language would be fun. So I stayed around, started picking up Python, and began a new career path as a web developer.
What other programming languages do you know and which is your favorite?
A long time ago, I learned BASIC, but I don’t remember much of it (other than the GOTOs). I know some Java, C#, HTML, JavaScript, Python, and also SQL. Right now I really enjoy working with Python and JavaScript.
What projects are you working on now?
I’ve been focusing on helping to improve the workflow of the Python core team. We just moved CPython repo from mercurial to git and GitHub earlier this year. We could really use some bots to automate the manual work and boring chores that we have to do.
One such bot is the cherry-picking bot. We have a semi-automated process, using a command line tool that I wrote: cherry_picker. But it is still a hassle, i.e. someone has to run the script on their computer, and create the backport PRs. I’m working now to make this fully automated.
I also want to work on a bot that’ll check if PR in CPython has a merge conflict, and therefore can’t be merged. The plan is to apply a label as a visual indicator that this PR now has conflict, so as a maintainer, I could skip reviewing it until the conflict is resolved. This is tracked in https://github.com/python/core-workflow/issues/96
There are a couple other bots that I have in mind, but these two are my priorities for now.
In the past month, I’ve also somewhat taken a break from contributing to open source, and worked on my own personal projects:
- tic tac taco pizza: play tic tac toe, with taco and pizza instead of O and X. It’s in pypi: https://pypi.org/project/tic_tac_taco_pizza/
- finding out which Linux distros have Python 3.6
- savage garden hotline. If people call +1-604-706-2558 (Ignore the ‘this is a test account’ message) they’ll hear a song from Savage Garden, and my twitter bot will tweet about it..
Which Python libraries are your favorite (core or 3rd party)?
Core Python, I really love f-strings. And the csv module.
Some of my recent favorite third-party libraries :
- gidgethub, an async GitHub API library.
- flit, The easier way to package your python library
- click, for writing command line scripts.
- aiohttp, asyncio http server and client.
I see you’ve been involved in movies and computer animation. Could you tell us about that?
I work in a company that makes movies, visual effects, and animation. But I’m not directly involved in any movie making aspect of it. I don’t know how to do any animation, I’m not artistic, I don’t even know how to use Photoshop.
I work as a Software Engineer in the infrastructure team. I build and maintain web applications and automation tools to be used in-house. Almost everyone in the company (700+ people in LA and Vancouver) use my apps.
How did you become a Core Developer of the Python language?
I actually feel that I’m just really lucky. But here is the slightly longer version of it.
I initially found contributing to CPython to be quite intimidating and overwhelming. Last year I reached out to Guido van Rossum, the creator of Python, for advice on how to start contributing. It was him who reminded me that contributing to Python or open source shouldn’t cause me personal stress.
That leads me to think more about why I even want to do this in the first place, and to find my own self-motivation.
He reinforced the notion that there are other ways to contribute. There are other Python projects that could use help.
With his advice, I started contributing to various projects like python.org, Python developer’s Guide, and then CPython’s documentation itself.
Last year, I received a scholarship to attend PyCon Canada, quite a number of Python Core Developers spoke there. I introduced myself to them, said hi, and just let them know that I’ve started contributing to CPython, and might need their help one of these days. One of them is Raymond Hettinger. Raymond then offered to be my mentor so I can continue contributing to CPython. A couple months later, Raymond proposed to other core devs that I become a Python core developer. The core devs voted on it. By then, I’ve made quite a number of patches, and many core devs have noticed my work. So I guess they trusted me enough and granted me the commit privilege to CPython.
What have you learned as a core developer?
I’ve learned a lot! I got exposed to various libraries and unique challenges that I don’t normally face in my day job. And it’s been really fun!
Prior to contributing to CPython, I didn’t even know about the restructured text markup language, or even sphinx. My first ever patch to CPython was also the first time I ever heard of and wrote anything with reST. So even though it was an ‘easy’ task, it took me four tries before my patch was good enough. But with a lot more practice, I got better at it.
I get to learn how to package a Python library and publish it to PyPI for the first time. (pypi.org/project/cherry-picker).
I am getting better at working with git. Based on my experience, I wrote the Git Bootcamp and Cheat Sheet in the devguide.
I used to take Python for granted, not caring how it got made, and who made it. I just wanted to use it. I don’t take it for granted anymore. I learned to really appreciate open source projects, and I have lots of respect for the maintainers and core developers. It takes a lot of effort.
By contributing to Python, I get connected to many members of the community. I found mentors, allies, and made many new friends. They remind me that Python is not just code, Python is a community. And it’s a wonderful community to belong.
Is there anything else you’d like to say?
Quite a number of people have asked me how they can get started contributing to open source. The “how” is straightforward: you learn about version control (like git), you work on an issue, create a pull request. Repeat.
For me, it’s more important to first find the ‘why’, the motivation for contributing and to continue contributing. In my opinion, contributing is not about giving (knowledge, time, expertise) all the time. The contributor should be getting “something” back out of it. If you’re only giving, you’ll burn out quickly. Getting something back is the motivation for doing it. Everyone’s motivation is going to be different.
Are you there to learn? What do you want to learn? Are you enjoying the experience? Will contribute to open source helps you get a job? Does your employer give you time/money to do this?
When you know what your motivations are, it will become a guide for you to decide how much time you’ll spend contributing, and which project to work on.
There were times where I lost my own motivation for contributing, and I wanted to quit. But various members of this community has always made me feel welcome and encouraged me to continue this journey. So thank you all.
Thanks Mike for inviting me for this interview, and thanks everyone for reading!
Thanks so much for doing the interview!