PyDev of the Week: Cris Medina

This week we welcome Cris Medina (@tryexceptpass) as our PyDev of the Week! Cris is the author behind the popular tryexceptpass blog. He is also the maintainer of sofi and korv. You can catch up with Chris’s other projects on Github. Let’s spend some time getting to know him better!

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

I was born in the Dominican Republic. I finished highschool there and went to Puerto Rico to study Computer Engineering, specializing in hardware. But I’ve been writing software in some form since I can remember. My dad introduced me to IBM System 360 Basic as my first language. Go figure!

Most of my professional career (going on 17 years now) was spent doing test engineering, along with developing all the hardware and software tools required to execute those tests and maintain their infrastructure. The rest of the time I’ve held formal software engineering roles.

I like to spend some of my free time with music. My mother is a music teacher and she got me into piano early on. Though I moved into string instruments as I got older. Today I mostly play classical guitar, but I own several types of guitars and dabble in other string instruments.

I also enjoy cooking. My family is from various parts around the Mediterranean, so most of my meals have that flare. Cooking reminds me a little of the dev process: you have some idea of what you want, you follow a basic set of instructions on how to get there, but there’s usually some extra flavor you throw in to make it yours and it can take several iterations to get it just right.

Why did you start using Python?

I gave it a go maybe 10 years ago when writing some backend code to support a Java application that I also owned. There were a lot of Python vs Perl arguments around the office at the time, but I already knew that I disliked Perl’s syntax from trying to read ode that my colleagues had written. So I decided to give Python a shot and haven’t looked back since.

Really the question is: why didn’t I start any sooner!

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

Besides Python, I used C++ / C to write drivers and for embedded systems dev, Assembly in some embedded systems, Visual Basic and Java for business applications, plus the usual Bash scripting, JavaScript for web dev, and some other custom stuff.

I’ve also tried Erlang, Go and Rust, but haven’t had a use case to last me beyond training examples.

I definitely like Python the best. It’s the most practical. The syntax is close to how I think and there’s no crazy boilerplate code required. Very rarely do I have to spend time figuring out how to use a given construct. You can also stand up new software in minutes, and the sheer amount of modules available in PyPI, plus the built-in libraries, takes care of almost any use case. It integrates with C very easily, so that also takes care of any performance concerns people may have with dynamic languages.

What projects are you working on now?

At work, I just spent a couple years as the lead dev for HPE CloudVolumes, but I’m now transitioning back to a test tooling and automation infrastructure role.

At home, most of my time goes into my tryexceptpass.org blog and adding new features to sofi and korv.

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

I do a lot with docopt for CLIs. I like the way you define the interface because it’s both self documenting and functional.

I like sanic for REST API dev because it’s easy to use, batteries included, and async.

I use asyncssh for quite a few things including encrypted sockets that authenticate with ssh keys, along with automation that requires remote ssh. Since it’s asyncio enabled, it really helps in parallelization.

And then there’s websockets, with which I’ve implemented several resource management systems, GUI frameworks (like sofi) and notification systems.

What was your motivation in creating your tryexceptpass website?

I knew I needed to do something when I realized that I was a dark matter developer. There was a lot of cool stuff out there very similar to systems I built before, but I had no way to share them, not was I allowed to. In some cases, I had already solved some of the problems that the public libraries hadn’t even realized existed.

It wasn’t until I had a management discussion on the legal oversight required for each open source commit that I realized I needed to change gears. Even if I owned the code before joining the company. So I said: if I can’t contribute code, maybe I can share the minor points on how to use the code that’s already out there. Though my first post was about how open source contributions should be considered part professional development and encouraged by all companies. 😉

Do you have any advice for future content writers who want to create a successful site?

Start writing. If you’re still thinking about it, you’re doing it wrong! What works best for me is an old trick: write as a stream of consciousness, don’t edit, don’t correct mistakes, just move forward. When you’re done pouring out your thoughts on a subject, only then go back and edit or clean up.

How did you become a maintainer of sofi and korv?

I built sofi because I was tired of writing the same HTML and JavaScript code to build Bootstrap-based websites. In doing so, I realized that I could go beyond my goals and try to make it into a reusable framework so that I can drive all website behavior from Python and never have to think in JavaScript. In the process of doing that, I also noticed that I can used the backend of this framework to interface with any other GUIs, like game engines, so I’ve been putting time into a Unity3D client as well. The ultimate goal would be to become the Bootstrap of 3D GUIs, where you need to know little about the engine in order to build a 3D interface to your application.

Korv I put together because I thought that building an asynchronous interface over an SSH socket with key-based authentication had some value for backend or privileged connections. It’s been working well for me so far.

Is there anything else you’d like to say?

I’m really happy with the Python community. I’ve met a bunch of awesome folks from all over the world and everyone’s been very helpful, attentive, genuine and fun. So I really like to encourage folks to keep attending events and to contribute code, blogs, open spaces or talks at conferences, docs, issues, whatever you can.

In fact, if you like to write and want to talk about your latest python challenges, or how you solved a particular problem, send a DM to my Twitter account @tryexceptpass. I’m taking submissions for posts on the website.

Thanks for doing the interview, Cris!