PyDev of the Week: John Reese

This week we welcome John Reese (@n7cmdr) as our PyDev of the Week. John works for Facebook and has been using Python for many years. He has a blog, but it hasn’t been updated in a while. If you’d like to see what he’s up to in open source land, then check out his Github profile. Let’s spend a few moments getting to know him better!

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

I like to describe myself as a Software Engineer, video game enthusiast, and virtual astronaut man_astronaut. I enjoy dabbling in photography, astronomy, and music, but I’m most passionate about technology and games. My favorite game series is Mass Effect, but I’ve spent more hours in Kerbal Space Program than any other title.

I’ve been writing software for the large majority of my life. It started when I was six, using a 286 with MS-DOS, writing batch scripts to create simple menus or boot disks for PC games of the era (640KB was never enough weary). In grade school, I started writing my own “games” in BASIC for the PC, and by early high school, I was using PHP to build my own websites and toying with C++ to write basic mods for games.

I went to university at the Rochester Institute of Technology in upstate New York, and graduated with a Software Engineering degree. Since then, I’ve worked in open source software, telecommunications, network security, and game development, mostly writing backend services or automation systems in Python.

I now live in the San Francisco bay area with my amazing wife👩🏻‍🎤 and two cats, and I work as a Production Engineer for Facebook. I’m a member of a storage team responsible for maintaining and replicating arbitrary binary data, including photos and videos for Facebook, Instagram, and WhatsApp, as well as games for the Oculus VR headsets. I’ve built a large variety of monitoring and automation systems in Python to audit the health of our service, as well as to coordinate data migrations to ensure durability and availability of data in the face of hardware failures and network outages.

Why did you start using Python?

My first use of Python was late in university, while working at a local telecom hardware company. I was adding new features to the open source PHP bug tracker Mantis BT, which used a handful of Python scripts to automate things like release builds. After getting past the controversial whitespace, I fell in love with the syntax and the vast standard library. From that moment onward, all other languages immediately felt arcane and verbose, and I was destined to walk the path of enlightenment!

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

Python is a very opinionated language, and I strongly agree with most of those opinions, so it’s easily my favorite language! Especially with the addition of type annotations and asyncio, there’s little reason for me to choose another language outside of performance-critical applications. That said, I’ve toyed with countless languages over the years; most of them frustrate me (looking at you, PHP) but there’s a small handful that I could live with if Python disappeared tomorrow. Swift and C# are both great languages with excellent features and good-enough syntax, and they continue improving at a rapid pace. C++ is always a strong alternative for systems programming, although one of my least favorites for syntax, and I’m sure it will continue to fill its role for a long time into the future.

What projects are you working on now?

I’m currently preparing a talk for PyCon 2018 on using asyncio with multiprocessing for highly-parallel monitoring and/or scraping workloads. To go with this talk, I’m working on some simple example code that I hope to publish on Github. This will be my first major conference talk, so I’m both excited and absolutely terrified! sweat_smile

Beyond PyCon, my latest public project is an asyncio wrapper around the sqlite3 module, aiosqlite. It allows async code to continue running while database queries or transactions run on a separate thread. This was useful for me in building standalone applications with asyncio that needed a database, but did not require a dedicated server like MySQL.

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

I’m a big proponent of setting high standards for code quality and maintainability, regardless of how trivial or important a project is. Given that, I’m really fond of the new data types and features in the typing module, which make it really easy to create well-typed data structures and modules. Combined with mypy, pylint, bugbear, and the excellent new auto-formatter black, it’s never been easier to write clean and robust software in Python.

Is there anything else you’d like to say?

Diversity in technology is an important issue to me. There’s always more that we can do to foster and promote equal representation of all races and genders in our industry. In that regard, I would like to give a shout out to the excellent App Camp for Girls project:

App Camp for Girls is a one-week summer day program where girls, transgender & gender non-conforming youth can put their creative powers to work designing and building apps. They also learn about the business of software while being inspired by role models in the industry.

Please consider supporting them if at all possible.

Thanks for doing the interview!