PyDev of the Week: Amanda Sopkin

This week we welcome Amanda Sopkin (@amandasopkin) as our PyDev of the Week! She enjoys writing, teaching and the hackathon community. Amanda has given several talks at various Python conferences as well. You can check out what she has been up to over on her website.

Let’s take a few moments to learn more about Amanda!

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

I grew up in Denver, Colorado and moved to San Francisco for work. I got my degree in Mathematics and Computer Science from the University of Illinois at Urbana-Champaign. In my spare time I attend hackathons as a coach for Major League Hacking to help students have a great experience at the events they attend. I enjoy writing, speaking, and obsessively reading about sharks.

Why did you start using Python?

Python was one of my first programming languages when I started coding about 10 years ago. I was particularly drawn to the welcoming community. Every time I attend a Python event I’m impressed by the friendly culture!

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

Python is by far my favorite and I’m not just saying that because this is for a Python blog! When I forget the syntax for something in Python, it’s almost always one of the first things I guess.

What projects are you working on now?

Lately I’ve been doing more teaching. I just finished doing a course with Codepath on technical interviews that focused on Python. I’m now planning a course on interview preparation for Girl Develop It.

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

It sounds simple, but I probably get the most runway from the requests library. After that I’d say the cryptography library which I learned a lot about when doing research for a talk on randomization in python.

I see you have spoken on the topic of refactoring. What pitfalls do you believe Python developers fall into the most often that require refactoring?

The way I see it there are two big buckets of mistakes that cause code to need refactoring. The first one is over-optimization and the second is under-optimization. When people prematurely optimize code to be fewer lines or even overly abstract it, it can get confusing. If it gets confusing enough or the people who understand the code leave the team, it might need to be rewritten. On the flip side, if you don’t maintain code and allow it to get out of control, it’ll require some refactoring as well. It’s a balancing act between writing good maintainable code that is easy to understand and not overdoing things according to your own personal preferences.

How is Python relevant to encryption?

The cryptography library in python provides a lot of pre-built functionality for encryption functionality. It has more abstract “plug and play” interfaces as well as more customizable low-level stuff. I gave a talk on how random number generation factors into cryptography, it’s a fascinating topic that includes methods of generating randomness like thunderstorms and lava lamps.

Thanks for doing the interview, Amanda!