February 6th, 2017

Mike Driscoll: PyDev of the Week: Michael Kennedy

This week we welcome Michael Kennedy (@mkennedy) as our PyDev of the Week! Michael is an author and speaker. He is also a Python and MongoDB enthusiast, and an entrepreneur. He is the host of the popular Talk Python To Me podcast as well as the new Python Bytes Podcast. In 2016, he founded the Talk Python Training program. He has an interesting blog that I think you’ll find illuminating. Let’s take some time to get to know Michael better!

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

Hey everyone. I’m one of the lucky people who got to make his hobby his job (like many of you I suspect). I love programming and technology. I wake up everyday thinking today is even a more amazing day to be a developer than yesterday.

I got into programming in college. First, it was just a minor subject area to fill some requirements for my math degree. Over time I got more and more into programming. It was actually a research project my senior year that forced me to do “real” programming (3D graphics on SGI mainframes in C++ and OpenGL). After a week or two I realized I liked programming more than my actual focus of math.

I ended up getting a master’s degree in Math before I dropped out of the PhD program to pursue a software career. It seemed super risky at the time. Looking back, it was a wise choice.

That’s my education. For hobbies I like active and adventurous things. Throughout highschool I raced motocross and have very fond memories of those times. I don’t race these days.

It may sound odd, but I feel those experiences at the racetrack actually prepared me well for a public role in the software field. It’s nerve wracking and somewhat scary to be on a podcast, give a presentation to 100’s of conference attendees, or deliver a training course on a topic for the first time. But, it’s nothing compared to your first attempt to clear the 40 foot triple jump.

Getting over the hesitation and fear of all of these surprisingly has the same steps. Over prepare, over practice, find the willpower to calm your inner voices, and go for it.

Why did you start using Python?

I came to Python relatively late in my career. I wish I had found it earlier but you know what they say about hindsight being 20 / 20.

I got into Python originally because I was working for a training company that had traditionally focused on the more enterprise, compiled languages like C#, C++, and those sorts of things.

They were looking to diversify and branch out into other areas. I suggested Python and volunteered to help. It turned out there was a lot of demand for Python, as you can imagine, and there was a lot of work to do.

After just a few weeks of working with Python and helping put together a roadmap for where we as a company might focus on the Python ecosystem, I was hooked! I loved the language, the tooling, the people, and the vast array of open source projects and opportunity.

From then on, I’ve been deeply focused on Python. Any chance I get, I’ve chosen Python for the software I write and have loved every minute of it.

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

These days I’m really a web developer and I do that almost exclusively with Python. For me, that means server-side programming in Python and template driven HTML with things like Chameleon, HTML5, and CSS. I’m just not into lots of client-side JS frameworks.

So Python in some sort of web app is my favorite language and technology to work in. But I spent years working deeply in the .NET / C# space. I still really like that language and ecosystem but am happy to be putting my professional efforts and future in the Python basket.

As I mentioned in the opening, I did a lot of C++ work. Much of that with OpenGL and DirectX in simulators and scientific visualization software.

Throw in MongoDB, SQLAlchemy, and database technologies for other areas I like (no they aren’t languages but I think they are their own area of expertise).

What projects are you working on now?

The general mission I’m focused on right now is to inspire and education people around software development in general and in Python and related technologies specifically.

That has several forms.

Most broadly, that starts with the podcast. I run the Talk Python To Me podcast which releases an hour long episode weekly. I get to talk to so many inspiring developers and other technical people using software and Python to do amazing things. I’ve had the creators of many of the major web frameworks on as guests. Scientists solving amazing problems from particle physics to astronomy to renewable energy. I hear from hundreds of people how energized they are to do their work or project after listening to these guests. The podcast has had literally millions of downloads of the audio files and has touched many lives. It’s my honor to do it each week.

I’ve since launched a second podcast called Python Bytes. The idea there is quite different than Talk Python. Python Bytes is a short, 15 minute show which covers a number of Python headlines that week whereas Talk Python is more deep dive, 1 hour topics.

Building on the podcasts, I launch into a multi-year project to build a major training resource for Python developers. My original goal was to create 20 courses in 2 years. You can read about the whole project on my blog. I launched a couple of the courses on Kickstarter (here and here) and the community support was amazing. I have three courses published so far and am working hard on this almost every single day.

Those two areas are my main focus. On top of that, I am doing a small amount of consulting and public speaking.

Which Python libraries are your favorite (core or 3rd party)?
This is a fun question. I think we all learn a lot from the libraries everyone picks here. I’ll pick three:

Passlib: Great little library to safely add the best practices for managing and storing passwords and user accounts in a database.

Pyramid: It’s the goldilocks framework for web apps in Python IMO. Has a lot to offer and build upon, but doesn’t impose any real building blocks or frameworks (other than itself) upon you. Pick you data access library (MongoEngine or SQLAlchemy? easy), your account management (passlib!), etc.

SQLAlchemy (although MongoEngine is close behind): Very solid and tested ORM for most databases you’d care to use. If I’m doing relational work, this is my current choice.

Why did you start a podcast about Python?
I have always loved podcasts. There were several I listened to regularly even back in 2005 when it was a lot more work to make it work on my devices. To me, podcasts are how I turn idle time into productive, educational time.

After I got into Python, I eventually wanted to find a podcast to listen to and really dig deeper into the entire ecosystem. I think it is important to hear the stories behind the technology to really know it.

But to my disbelief (that’s really the word for it!), there were exactly zero active Python podcasts (this was late 2014, early 2015). I eventually decided that I would have to be the change I wanted to see and just create a show myself. While I felt unqualified to be the spokesman for the community, nobody else was doing it so I took a chance and started the podcast.

The response and support from everyone was and continues to be amazing. I’m really glad I decided to take that chance.

What are the most important lessons you have learned doing your podcast?

I have learned so many things from all the guests and topics. But more generally, here are a few key takeaways.

If you put yourself out there, amazing things can and will happen.

It’s easy to put people who are well known in the community upon a pedestal. But almost everyone is open, friendly, and willing to help. You just have to start the conversation.

Python is much broader than I realized

If someone asked you how to start podcasting regularly, what would your advice be?

Find a niche and you will find an audience. Be willing to start small and stick with it.

Focus on quality: Take the time to learn how to record quality audio. Spend time editing the results.

Be sure you have a topic and focus you are willing to stick with. The first month is relatively easy. That 8th month, when work is piling up, you’re sick, and you have to record at 6am is really hard. But if you push through it’s totally worth it.

Have fun – it’s supposed to be fun! Your audience will hear the difference.

Is there anything else you’d like to say?

I’d like to encourage everyone to connect with the Python community. Many of you reading this probably already regularly attend PyCon, listen to podcasts on Python, and drop in on your local meetups. Any one of these is a great way to take your passion and knowledge of Python to the next level.