PyDev of the Week: Eric Snow

This week we welcome Eric Snow (@ericsnowcrntly) as our PyDev of the Week! Eric is a core developer of the Python language. You can check out his blog where he post sporadically of his Github profile where you can see what he’s currently up to. Let’s spend some time getting to know Eric better!

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

The western United States has been my home for nearly my entire life, with the exception being 2 years in Argentina before I went to college. I have a BS degree from Brigham Young University in Computer Science. I live in the mountains and enjoy spending times in the outdoors with my family. Around my home I have 17 apple tree that I take care of (and enjoy).

Why did you start using Python?

My first programming job out of college involved working on a system written almost exclusively in Python. I blame our illustrious Van Lindberg since he preceded me on the team and the project was his brainchild. 🙂

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

In addition to Python, I’ve used Go extensively. I also have a relatively good proficiency in C. Beyond that, I’ve had a moderate amount of experience in Javascript, Java, Lua, Bash, Perl, and PHP. I’ve also tried out dozens of other languages. My favorite is still Python. 🙂

What projects are you working on now?

My main focus over the last few years has been a project to improve Python’s multi-core story. It involves 3 major parts:

1. exposing the existing support for subinterpreters in a stdlib module (see PEP 554)
2. improving interpreter isolation
3. making the GIL a per-interpreter lock rather than sharing it between all interpreters

Other than that I’ve helped out on the import system and CPython’s runtime. I have a few other projects sitting on the backburner for when I’ve finished the multi-core project.

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

For the most part I stick to the stdlib. My favorites there include importlib (surprise, surprise), inspect, itertools, collections, contextlib, and unittest. In general I gravitate toward libraries that have been thoughtfully crafted and map onto my brain.

How did you become a core developer of the Python programming language?

After starting my first programming job, my natural curiosity led me to gradually explore the breadth of Python’s language features and its inner workings. Within a couple years I was lurking on the mailing lists and by 2010 I was getting involved, particularly on the import-sig list. I went to (effectively) my first PyCon in 2011 where I was able to spend time in person with several of the core devs with whom I’d been working already (in particular, Nick Coghlan and Brett Cannon). I also stayed for all the days of the sprints. That time in-person made a huge difference. My first actual code contribution
landed later in 2011, I attended the language summit at PyCon in 2012, and shortly afterward had my first PEP accepted (PEP 421). In September of 2012 I was given commit privileges, which I’ve used moderately in the time I’ve been able to spare.

What modules are you responsible for?

I can’t say I “own” any, but do help out with importlib. Otherwise, most of my interest has been in the language (e.g. syntax and semantics, a la the language reference) and CPython’s runtime, e.g. embedding, subinterpreters, startup. That said, I’ve touched several other modules along the way, including adding types.SimpleNamespace and the C implementation of OrderedDict.

Is there anything else you’d like to say?

The Python community is wonderful and CPython has what I consider to be one of the most welcoming core teams of any major open source project out there. That said, it can still be daunting to get involved. I encourage everyone with an interest to join in and then stick around. Start with the core-mentorship mailing list and come to the sprints at PyCon. As my own experience demonstrates, contributions tend to gradually increase rather than blasting onto the scene suddenly. Be patient. Be kind. Find something you enjoy and focus there. It doesn’t even have to be core Python. There are many
great projects out there. More than anything, take the opportunity to make connections and enjoy new friendships. That’s probably the biggest thing I’ve come away with as I’ve been involved with Python.

Thanks for doing the interview!