PyDev of the Week: Thea Flowers

This week we welcome Thea Flowers (@theavalkyrie) as our PyDev of the Week! Thea is a maintainer of packaging.python.org and the urllib3 package. Thea also is very active in the Python community and is a new board member of the Python Software Foundation. You can find out more about Thea on her website, Github. Let’s take a few moments to get to know Thea better!

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

I’m currently at Google where I work in Developer Relations for Google Cloud Platform. I focus on API client libraries and supporting the Python community. I even have the official title of “Pythonista”! I’m also the co-chair for PyCascades 2019 which will take place in Seattle early next year. Outside of professional commitments, I like to build synthesizers and costume props and I also volunteer as a mentor for FIRST Robotics.

I have a pretty non-traditional background. I’m originally from Atlanta, Georgia and I have no higher education to speak of. I worked by way into being a professional software engineer via open source and a lot of luck. I started programming as a teenager to attempt to make video games. I never managed to make a video game but I had a lot of fun trying and learned a ton of useful skills.

Oh, I’m also openly transgender.

Why did you start using Python?

I believe the first time I used Python was when I was a teenager. I was building a 2D game engine using C++ and wanted a continuous build system. Of course, I had no idea that the term even existed, but I decided to throw together something that could automatically build the engine every time I committed to SVN. I believe I built it with CherryPy and Cheetah templates.

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

I work a lot in C/C++ (for programming Arduino-based projects and previously when making game engines) as well as lots of JavaScript and occasionally some Go. I’ve worked in a lot of other languages as well. Python is above and beyond my favorite. I often find myself using it even when programming in other languages. For example, I used Python recently to experiment with a parser for a synthesizer patch format before porting it to C++.

What projects are you working on now?

At Google I’m currently working on automating a lot of our process of generating and publishing client libraries. I’m building tools that can run and combine the output of several code generators (think protobuf/swagger/openapi) and create a working library. All of this automation is written in Python.

Outside of Google I’m working on building a hardware synthesizer based on the YM2612, the sound chip used in the Sega Genesis (or MegaDrive). You can read more about that here or follow along on Twitter.

I also have a collection of Open Source projects that I’m involved in: Urllib3, Nox, packaging.python.org, readme_renderer, cmarkgfm, etc.

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

Too many to enumerate. I was recently chatting with a coworker about how amazing and useful the core struct module is. I use it all the time for getting Python programs to chat with other hardware over serial and parsing binary file formats.

What challenges did you face and overcome when working on the packaging.python.org site?

The biggest challenge with a project that is that visible is consensus. Getting all of the people who care about something to agree how to do something is often really hard. Being able to drive consensus is a really critical skill for someone who wants to really own an open source project. That said, for the most part things have gone really smoothly with that project. I still think we have so much more to do there but it’s getting better all the time.

Do you have any tips for people who would like to contribute to one of your projects?

Look for the “contributor friendly” or “for first timer” labels and start commenting and asking questions. Also, always feel free to reach out to me. I’m always happy to do a video chat or pair programming session to help people get their first contribution in.

How do you keep your volunteers motivated in open source?

One of the biggest things I feel a primary maintainer can do is remove ambiguity. Make sure that tasks are clearly defined and that you get agreement between stakeholders before asking a volunteer to take on a task. It’s also important to find that second maintainer. For example, in urllib3 Seth Michael Larson is basically the driving force. I’m just there as a lame duck administrator to help resolve maintenance errata and drive consensus when needed.

Is there anything else you’d like to say?

I strongly believe that it’s my mission in life to enable others to be successful with software and I feel that I can accomplish that through the Python community. If you are new to Python or a seasoned veteran or don’t know anything about programming and ever want to chat about anything – Python, OSS, synthesizers, games, Google, cats, Developer Relations, dresses with pockets, or anything else- please reach out to me. I also have dedicated calendar appointments for chatting about OSS.