PyDev of the Week: Or Carmi

This week we welcome Or Carmi (@liiight) as our PyDev of the Week! Or is the creator and maintainer of notifiers. You can see what else Or has been up to by checking out his Github profile.

Let’s spend some time getting to know Or better!

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

My name is Or Carmi. I’m 38 years old, live in Israel, married and a father of 4 boys. I have 2 dogs, 4 cats, an African grey parrot, a rabbit and a bulbul (look it up ????). I currently work as a senior QA automation engineer at Proofpoint.

I started with programming when I was a kid, when my dad, who was a programmer working for banks, taught me GW basic. In the 2nd grade, I learned Logo, which is what python’s Turtle lib is based on. I went on to study computers in high school as well. I tried to get an engineering degree but I couldn’t win the battle with ADHD in the academic world.

Why did you start using Python?

I got into python after learning about an amazing tool named Flexget that seemed interesting to me. I wanted to tweak it to match my needs and got into its code. Its maintainers were very nice and professional, and helped me with any question I had, whether its python related or related to its codebase. After a couple of years of contributing to it, I became a part of its team and I work on it to this day

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

Back in the day I dabbled a bit with C# and Ruby, but the vast majority of my career involved using Python, which is my favourite language.

What projects are you working on now?

I’m the creator and maintainer of notifiers and a maintainer of Flexget, although I have very little time to work on OSS stuff these days, which bums me out tremendously.

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

With the core library, I’m a big fan of pathlib, functools and itertools. #rd party ones are pytest, glom, uplink, httpx, pendulum and pydantic.

How did you the Python Notifiers package come about?

While I was working on Flexget, I wanted to add a bunch of notification plugins. It quickly became clear to me that all of these follow a very specific pattern of sending a payload using a specific schema and getting a response. However, each notifier’s API was VERY different in terms of naming, usage, headers, responses and etc. Some of them add their own SDKs, but that just add deps and doesn’t really offer a common interface. I built notifiers to solve exactly that problem, have a super friendly interface on top of an abstraction for a lot of notifiers. I wrote a blog post about it here.

What was the most difficult provider to wrap?

I think to this day, mailgun had the most options, but statuspage V1 API had some of the weirdest methods of naming its payload attributes and using them. It required A LOT of its own custom code (although they fixed a lot of this stuff in their latest API version).

Is there anything else you’d like to say?

I basically learned to be a developer and specifically, a python developer, by using and contributing to OSS. Due to my ADHD I was not able to force myself to endure the rigorous structure of academia, but I was highly motivated and successful when learning via contributing to OSS, which gave me a successful career. I cannot underestimate the power of self-learning and the VAST amount of data out there. To anyone that may be reading this and feel like they need to follow a very specific path to success, that’s not necessarily true. OSS lets you create your own path and it has a lot of wonderful, smart, and knowledgeable people in it. As long as you work hard and are eager to learn, anyone with internet access can obtain all the tools one needs in order to be successful!

Thanks for doing the interview, Or!