Pybites Podcast

#043 - Becoming a prolific Python content provider

Julian Sequeira & Bob Belderbos

This week we talk with Mike Driscoll, a Python developer and content creator / book writer.

We talk about:
- how he got into programming and Python (and the importance of community),
- how he uses Python at work for an automated test framework (to test C++ GUI apps),
- how he got into Python content creation through blogging and later writing 9 (!) books,
- how to keep up with new technology,
- how to stay consistent and motivated in producing content,
- the fundamental skills as a Python developer these days,
- dealing with imposter syndrome (realizing you might have more to bring to the table than you think!)
- learning new libraries, the benefit of pair programming (for both junior and senior engineers),
- and more ...

You can get in touch with Mike on Twitter and/or on PyBites Slack.

You can also check out his blog, books and YouTube.

I knew it was something I could learn because I've used Excel for a long time, too, and I'd just be interacting with Excel with Python. So I decided to jump in there and see what I could do, and I don't suck at it anymore, and I've gotten pretty good with open pixel, and I feel like I understand it pretty well, but I didn't when I started. And so you just have to remember, you know, just because you started out being a noob, you're not going to always stay there. Hello, and welcome to the Pibytes podcast, where we talk about Python career and mindset. We're your hosts. I'm Julian Sequeira. And I am Bob Eldebos. If you're looking to improve your python, your career, and learn the mindset for success, this is the podcast for you. Let's get started. Hello and welcome everybody, back to the Pivots podcast, episode 43. And this week I'm back. Last week, I had a rest week. Thank you, Julian. I'm back here with Julian and a very special guest, Mike Driscoll. Welcome to the show. Yeah, thanks for having me. Hey, Mike. Welcome. We're stoked to have you here. This has been a long time coming. I think you've been around the pie bytes community for, I want to say, two years at least, just chatting with people, helping people. So, firstly, I'll just say thank you for all the support in the Slack channel. I always see you jumping on responses to share Python content to push people to develop and learn more and just sharing all this good stuff out, and I really appreciate that. So you're one of the people that makes it special, so thank you. Oh, you're welcome. I like participating in the community and helping people grow. That's awesome. That's why you're here. Perfect. Yeah, we're grateful for that. And, yeah, maybe to kick it off, maybe you can tell us a little bit about yourself, how you got into programming and Python particularly. Sure. So as a teenager, I was like, what am I going to do with my life? And I really wanted to get into animation, like computer animation or CAD Cam or something like that. But I quickly realized that my artistic skills are in my head, not in my hand, and I'm not very good at that kind of stuff. So I was like, what else can I do that's still computer related? Because I wanted a job that I knew would pay my bills and that I didn't have to go somewhere else for. So I live in Iowa, and I'm like, there's not very much for computer animation in Iowa, like, university wise. And there's not much for video games in Iowa either. In fact, back then, if you wanted to do video games, you had to go to Arizona or Canada. And I was like, that's really expensive, and I don't want to be paying bills the rest of my life just for my education. So I went into computer science and mis, which is management information systems. And back when I graduated, they were teaching CBA, VB, six, COboL for some reason, and a little bit of java. Oh, and.net comma had just been released, I think, in, I want to say, 2000. 2001. So the teacher didn't even know it, but they had to teach it. So it was not a good class and I didn't get a good feel for.net because of it. But anyway, I graduate and it's the.com crash, so there's no jobs. All the, everyone had been, had been laid off. And I'm like, dang it. So I went back to school into network engineering so I could at least continue to live for a little bit longer as a student. And then I got hired to be a webmaster doing front page work. I don't know if you remember front page, but it was Microsoft solution to the. Net, so you could basically create web pages with something that looked like Microsoft Word. Oh, my God, that goes back a long way. Remember the Dreamweaver days? Yeah. It was basically dreamweaver and front page. So I did that for like two years, and then I got hired at a county, which is a local government job, and they wanted me to learn Python, which I'd never heard of before. And the reason they wanted me to learn Python is that the director of the department, he was like, I love Python. We use it for our website. We use plone and soap for our website. And we've been using VBA on top of Microsoft office, but every time you upgrade office, it breaks all the VBA code. And he hated that, and he also hated paying the Microsoft fees. So he's like, can we get it all converted to Python? I'm like, I don't know, but I will try to learn Python. And because of his enthusiasm for Python and because Python was one of the first languages that ever clicked in my brain, I'm like, this is awesome. And so I learned Python and I got really good at it. And that's kind of my introduction to Python and the community really helped me at that time because I was like, I don't know what I'm doing I don't know what the best GUI framework is. And I happened to choose JBX Python because it looked the most like VBA code. And that community was so welcoming and helpful to me as a young noob. And they're like, this is how you do this, this is how you do that. And because of that, welcoming and the continued friendliness just made Python really awesome to me. Wow. Yeah, that's cool. What a story. I really enjoyed that. And it's funny. How many years ago was it that you think you started with Python? I started in 2006, so I guess that's been like 15 years. Yeah. And that sentiment that the community was so welcoming and strong is still. It's still there. You know, it didn't age. And then everyone get bitter and jaded and hate new people and all the young people coming into Python. None of that. Everyone's just still so welcoming. And that's what I love about it. That's. That's really awesome to hear they say, right, you come from the language to Python, but you stay for the community. Yeah, yeah, exactly. Also, I just want to say, it's so weird hearing that again, that for a specific career or job, you know, that you would have had to potentially move to Canada or to, you know, Arizona, because these days, you know, everything can be remote. We're so. We've got better Internet connections, we've got the software to do it. We people are accepting of it. So. Just blows my mind, you know, I forget that once upon a time we. We actually had to move for work, so. Well, you had to move to learn. Those are the only universities that taught that, those skills. But, yeah, if you lived in Iowa, you're not going to be doing, like, video games. There's no video game studios in Iowa. You'd have to go to California or probably the east coast even to do that. You could play farm simulator. Yes. All right. All right, I'll stop with that one. So. All right, moving on. So that's your story. I really, really appreciate you sharing that. Just to dive in a little bit into what you're doing now, though, what are you currently up to with the day job with Python? Tell us about it. So my current job, I'm technically called a software engineer, but internally they call me the automation test engineer, which means that I am in charge of our automated test framework, which is written in Python, but it's custom. It uses a tool called Squish, which is a commercial product that you can use to test embedded C applications. Or I guess it could be a desktop c application as well. Regardless, it injects itself into Qt, the Qt framework, so that you can have access to all the buttons and widgets and everything that's in your GUI. But it also allows you to access any of the open, or the open access source. What's the word I'm looking for? Anything that's not private in the C code you can access with Python in the application. So you can create non private properties in the C code and have access to those so that you can check the state of the C code in the GUI, which is really handy for certain applications. So anyway, I'm in charge of that framework that works with Python, and the people come to me and ask, how do I do this? How do I do that? How do I test? And sometimes I have to tell them, you have to create it from scratch, or I can help you create it, or sometimes I just fix stuff that's not already there. So that's my day job. My side hustle is, of course, writing about Python. I blog, tweet, and I write books about Python. So it's fun and not very profitable, but it's still a lot of fun to do. And I'm hoping that someday I might be able to do that full time. Oh yeah, soon, I hope. If anybody would do that full time, it will be you. You seem pretty prolific in that space. How many books did you publish? I counted like eight or so when I searched for it. Yeah, I have nine. Technically, you can. I've flip flopped on whether I can call it ten because I have two editions of Python 101, and the second edition is a complete rewrite. So it's a completely different book than the original. But I'm going to count it as nine because I'm calling my, my latest book, which should come out in January, as my 10th book. Nice. Wow, man, that's cool. I mean, we struggle with one, so get the physical copy of Python Pyrite's tips out. Yeah. That's incredible. Yeah. Curious to know how you got into becoming a python content creator. Did you start with a blog, and where did the book writing come in? Oh, yeah. So when I was learning python back in the old days, I'm like, this is really hard to keep all these different things in my head. So for myself, I started to write, started to blog about it so that I wouldn't forget what I was learning. And, you know, the blog has been invaluable for that because I'm like, I know I've done this before. Oh, yeah, I put it on my blog, so I can just go to my blog as a reference. But people started reading the blog, which wasn't something that I'd really considered before. I'm like, why would you read, why would you even read anything that I'm writing about? Because a lot of my stuff back then was really specific to my job. You know, I had, of course, stripped out anything that had to do with my job, but it was still really specific, like, how do you bring a window to the front on windows with Python? Or how do you change the background image on your desktop with Python? And just crazy stuff like that. I'm like, who would read stuff like that? But I still get comments on some of those articles from ten years ago that, hey, I couldn't find anyone else who wrote about this topic at all. But you did, and it still works. So that's how I started blogging. And people started reading it. And eventually, I don't know, it was probably six years after I'd started blogging. They were like, hey, you should write a book and stuff. And I think it was, I think it was the debuts Python community. They really wanted another debut x Python book because I'd only been one and it was old, and I was like, I don't want to write a debuts Python book without having a beginner's book. Two, because everyone thinks that these advanced books need to have multiple chapters of how to do Python. And at least back then they did. And I didn't like that. I was like, I don't want to spend half my book just describing the Python basics. I want to just dive right into debris Python. So that's how Python 101 was born, is that I was like, I want to have a book that I can give away for free and refer people to so I don't have to write these beginning chapters in my debuts Python book. Does that make sense? Yeah. And, you know, Python 101 was my most successful book as far as sales and, you know, just people reading it. And I think part of it's because I did make it free, but part of it's because it struck a chord, because I made that book as the book that I wanted when I was learning Python. Because, you know, back then, a lot of python books, they just cover the syntax, and then you're left with, now what? What do I do next? How do I distribute my code? I don't know how to create an executable that I give to my friends. I don't know how to distribute the code to pypy I don't know any of that stuff, and none of the books taught it back then. And so I just, like, I'm going to teach that in my book so that other people can, you know, distribute their code, and I'm going to talk a little about some of the intermediate stuff that nobody talks about right now. And I think that's also what made it really popular at the time. So that's kind of how I got into it. And then, of course, after it was released, everyone's like, hey, you need to create a sequel. You need to write another book. And I'm like, really small. That's really, really impressive. And, you know, this reminds me of the conversation I had with Andy. Andy Knight. It's amazing what happens when you just one. When you write for yourself. So when you just create the content for yourself. Almost again, I sound like a broken record here, but when you take what's in your brain, put it down on paper or a blog or whatever, just for the purpose of writing for yourself. So you have it as a note, but then people engage with that, like that desktop background changing thing and all of that. I can see myself looking that up. You're wondering who's going to look that up? I wouldn't look that up. And it's just amazing when people see that. They just want more. Well, hey, you've got cool stuff going on in your brain. Tell me more. So, um, that is a really cool tip, I think, for people, is that you have stuff in your brain that. That you wanted to be told when you were learning. You wish you could have learned a certain way. You wish you had this resource when you were trying to learn. Or even just. You have these experiences with work and, uh, with. As you were saying, mike, you know, your use case was very specific to what you were doing at work. You just stripped all that out and just wrote some of the generic concepts down. That's a really unique experience, and I think a takeaway for people here is we all have unique experiences here, whether it's at work, at home, building our own projects, and just sharing that with people is super valuable. And I love that story. That's fantastic. And the books as a byproduct. Oh, books. And I think you also have YouTube, and you're writing a lot of articles on real Python as well, right? Both writing and reviewing. I started doing the YouTube based on the first Python 101 book, so I wanted to see how hard is it to create video content? And it was a lot harder than I thought it would be. Mainly just getting the setup. I could not get my mic set up for the life of me, and I finally figured out what I needed, which was basically a mic arm so I could position the mic out of my way and, you know, make my voice come through clear and not have it, you know, blocking my keyboard. But, you know, it's really silly. You don't even think about that. And you're like, why can't I get this, the sound right in this thing? And, yeah, I finally figured it out. If you see me, I'm sitting here, I just changed my setup, and I have to gun. It's kind of awkward. Anyway, that's the challenge in itself. The whole setup. Yeah, yeah. Once you want to take that next step, it is funny. We. I remember we spent, I think it was weeks when we were creating the course with Mike Kennedy getting our microphone set up perfect. It just such a pain. I'm like, I just want to code, but here I am. As you can see, Mike on the video, I've got a boom mic right in my face. So we do like, whole videos and chapters even. Basically, you have to have one. You always see the final product, right? Yeah. Cool. So next question then is, again, as you're putting out a lot of good content, how do you keep up with new technologies and how do you stay consistent in your delivery? So, new technologies. Because I'm on Twitter so much, I see a lot of announcements there, but I've also been subscribed to the Python announce mailing list. I don't think a lot of people are aware that there are a lot of mailing lists in Python. That one's been around for as long as I've been doing Python, so a long, long time. And everything that is announced, I shouldn't say everything, but most things that are announced are announced there first. So I'll skim through those from time to time to see what's new. And, of course, Reddit has a Python community that I don't really recommend engaging in necessarily, because they can be very toxic, but they also have a lot of nice people on there, and a lot of people are excited to share interesting tips or projects. And so I'll read those. I won't engage with them necessarily, but I will. I get a lot of neat project ideas just from SKImming other people's ideas. It's a good idea. Oh, and of CourSe, there's PI Weekly and there's another Python newsletter that I subscribe to. I can't remember the name of the other one. Was it the PY one. No, I'm just kidding. Yeah, this is that one, too. No, there's something before you guys as PI weekly and PI something else. Picoter. Yeah, picoter. Maybe. Maybe that's what it is. One from Dembetter, I think. Real Python. Yes. One's from real python and one's from someone else. They're both good for keeping up on news items in the Python world. Yeah, no, nice. So that, so that's how you mainly keep on top of Just the emails and then I guess passing Reddit silently. Reddit and Twitter, really, for staying consistent, I'm assuming you mean consistent in the content space that just kind of evolves over time. I've got my mic set up so now I can do consistent videos when I find time to do videos. I have found that if I create a Jupyter notebook, it makes creating videos much, much easier for me because I have a way to do kind of a slideshow and live code at the same time. Yeah, that's a good point. And I find the same thing with YouTube videos. If you build projects or have sample code, then producing the video is so much easier. You have to have a body of content to draw from. Right. Yeah. So trying to do a video without the code first is a pain. And I don't like, I just don't really like live coding something from scratch in a video because I think it's going to be very repetitive and kind of, kind of boring. It'll create a lot of editing and I don't like doing that, so. But that's. I need to go on twitch yet. No, no, thanks. Okay, fair enough. Yeah, that's the challenge. But for my blog, I used to use it. I have lots of content ideas, so. Okay. No, no, this is great stuff. I was just going to ask about, you know, the, with regards to a rhythm. So one of the things with developing this content, you know, is, is not just the ideas, but I mean, having the motivation to get up and keep a rhythm to it, to keep consistent with your posting schedule, chasing people, you know. And how do you, how do you motivate yourself to do that? Well, part of it, I still like to write. So for me, that's kind of my hobby, my relief at the end of the day, so to speak, for my day job. It's just something I like to do. So in that respect, it's just, I don't know, it's hard to describe. It's like, it's not really about being consistent or wanting to do it it's something that I just kind of need to do from time to time. But I will say, you know, when I finish a book and I have several other book ideas, almost always I find it hard to jump into the next book, and I'll take like a month or two off because I'm like, I don't know, for whatever reason, I can't get motivated to start the next one for a little while. And then I'm like, I can't keep waiting or it'll never get written. So then I jump back on the, you know, the wheel and start writing again. But, yeah, I don't blame you. After writing one book, that's got to be pretty taxing. Yeah, it's a little tiring sometimes. Well, that's cool. So. All right, I'll jump into the next question here, which is about the python skills, right? Sure. There are so many developers out there, people getting into python development. There's, as you know, of course, there's about a billion different tracks you can take with Python. You can go down any of those that you want, and it's, the information is there, it's accessible. And one of the things that we constantly see people getting caught in is tutorial paralysis. You know, for better or worse, they will read 500 books, they will watch 10,000 hours on a udemy course. They will, you know, watch three YouTube channels worth of content for days and weeks and months, and they still won't know what the, I guess the essential skills they need to get into Python, they just, there's this mishmash of content. So from your perspective, do you see developers needing any essential skills to get into it? Well, if you look at the job market, I think the big two that I see right now is, I guess I should say the big three is cloud computing, web development, and those two are closely related. But then there's also machine learning or computer vision, which are also closely related, and they also work in the cloud most of the time. I think cloud tech is probably one of the biggest things that Python developers need to start learning about, because you can use it for both web development and machine learning and backend. Developers also use the cloud. More often than not, you've got that big thing. I think the cloud has become the thing you need to know as an essential skill. Once you've learned that you can be a Python developer, you could be a Ruby developer, you could be a lot of different things and you'd be fine as far as that's concerned. Python syntax, I think a lot of people get caught up on this, but you need to know the basics of the python syntax to the web development in Python or the machine learning aspect. I've had a couple of students recently contact me, like, how do I get into this? I want to learn Ajax or I want to learn react or vue or whatever, but I want to do it with Python. I'm like, well, you need to learn the Python syntax first so that you can understand django or flask or whatever web framework you end up choosing. Otherwise you're going to be kind of lost in the sauce. You're not going to know what in the world is going on in those code examples, because the code examples don't start with Python. They start with the django framework or the flask framework. And there's lots of decorators and other content in there that you're not going to recognize if you don't have the basics down. Nice. No, that's really, it's really great advice. It's a funny thing, right? A lot of people don't realize how big the cloud side of it is these days. You know, this is a lot of, a lot of the time you don't know it until you get into a career in it or any form of it that you see that the cloud is so influential. So coming into it, it's really nice to know that. Should pick up some cloud dev skills in the process, which is really cool. And. Yeah, that's very insightful. It's a really good point regarding Django and flask. You know, it's one thing to pick up the python, but you know, pick up those frameworks at the same time, because you're right. I remember when I was learning flask the first time, I remember seeing some decorators and they're going, what the hell is this? You know, this at symbol? What am I doing here? So. No, it makes sense. That's really great advice. Thanks for sharing. All right, so, and the last question, last question I want to ask you before we call this off. Sorry, Bob, I'm just stealing everything here. I'm enjoying this when it, when it comes to the content that you write. So I love that sentiment that this is something you find relaxing, this is something you enjoy doing that you just take pure pleasure from as you do it. It's not a chore. Now, once you've written it, though, there is this line of impostor syndrome that a lot of people we talk with and a lot of people in the community in general have to cross. They, they think, okay, this is cool that I can write an article on how I feel about topic X, Y and Z, but hitting publish and making it public, you know, writing that book, getting on YouTube, jumping on that podcast, that's the scary part. So do you ever struggle with that? And if you do, you know, what do you do about it? And if you don't, what do you recommend people do about it? That's an interesting question, because the content that I write on, I purposely choose it most of the time because I know it really well. So I don't have a lot of imposter syndrome necessarily, with, you know, like, python basics. I feel like I got that pretty well down. Our report lab, which you use for creating PDF's with Python. I've been doing that for years and I feel like I could answer most questions about how to do things in it, but you go, you know, like at my work, when I first started, I was meeting all these people who are, you know, they have all these deep c backgrounds and they have master degrees and phds, and I don't. I'm a, I have a bachelor's and they're talking about, you know, optimization and memory management and, you know, the different algorithms you can use. And for whatever reason, I wasn't always taught some of that stuff, you know, like memory management. They didn't talk about that in my computer. In the particular classes I had, they didn't talk about that very much, or at least I don't remember them. And so I felt really out of my depth. I'm like, how did I get hired to, to be in this role that I feel like I don't know a whole lot about? But then I realized, you know, they hired me for my python skills, not to, not my c skills. So, yeah, you have to, you have to think about, you know, what am I good at? And once you know what you're good at, you can, you can hold on to that, you know, and you can, you can, you always have to remember, you can improve yourself. Just because you, you're not good at something right now, it doesn't mean you're always going to suck at it. Right now I'm learning how to use open pixel, which is for using Python with Microsoft Excel. And I didn't really know that much about it when I started writing about it, but I knew it was something I could learn because I've used Excel for a long time, too, and I'd just be interacting with Excel with Python. I decided to jump in there and see what I could do. You know, I don't suck at it anymore, and I've gotten pretty good with open pixel, and I feel like I understand it pretty well, but I didn't when I started. And so you just have to remember, you know, just because you started out being a noob, you're not going to always stay there. That's great advice. And I'm looking into the future and realizing that your future self is not the version you're now and that you will learn. Because we had a chat with Anthony Shaw the other day about his process of writing the C Python book, and he was learning a lot on the fly. Right. And that's usually how it goes. And I also like what you said about not underestimating what you can bring to the table. Like, you're always our worst own enemies and thinking like, well, they know all these advanced stuff, but actually you come in with your python or something unique that we often overlook because I was talking with somebody other day and he went into a pair programming exercise, and he was like, I'm just going to waste their time. But actually, it turns out that he did bring a lot of experience to the table, and the people that we're supposed to teach in did actually get a lot out of it. So I think that's really like a mental barrier. So I think that's a good piece of advice. Well, yeah. Even as a junior developer, when you're pair programming, you can bring a lot of information to the senior developer by asking questions. You're like, why are you doing it that way? I don't understand this piece of code and why in the world you just copy and paste that huge chunk and you can encourage them not to do spaghetti code or not to do, you know, silly, just silly thing, you know, why aren't you doing, you know, this kind of loop versus that kind of loop and just help? I think that really helps the other person you're pairing with to see where you're coming from. But it also might make them into a better developer, too. Yeah. You make them a better teacher, basically. Yeah. There, there are things that we just, I guess, rhythms and habits that we fall into, you know? So if someone says, well, why did you start your code like that? And you think, well, why did I start it like that? I don't remember. It's been too long. Thanks so much for Brandon, right? Yeah, yeah. That's a really great point. And one of the other things you mentioned really spoke to me. It was just the concept of just doing it. If you're interested in learning a specific library or topic or path, whatever it is, just start. So I'll challenge you with this quickly. The library that you learned, so open pixel that you're learning now, what have you done to try and learn that? So it's one thing to say I'm learning it. Have you read books? Have you built anything? What's your process? So for that particular library, I'm learning it to write a book on it. For that one, I scoped out what I wanted to write about. I looked at the documentation and figured out what wasn't covered, because if it's not covered really well, it's really hard to write about. And so I'd look to see is this topics that aren't well written about, are they at least on stack or other forums? And if they're not anywhere, then it's going to be really hard to write about them. So, you know, in the past, I've thought about writing about kiwi or other libraries. And if I can't find good support where I can ask questions or where I can find good documentation, I'm probably not going to write a lot about it because I just don't. There's just not enough there to get the help that you need to do it right. And if I can't do it right, then I'm not going to write about it. But if I can do it right or I can at least create several articles that are right, that are really interesting, you know, that, then that motivates me to go ahead and write a book or at least write a series of articles, if that makes sense. Yeah, definitely. So it's like learning by teaching one of our favorite methods of doing that. That's cool. I like it. Awesome. Cool. Thanks for sharing all that. That's. Really enjoyed that. Any final words? Where can people find you? And maybe a final piece of advice for our audience before we let you go. Yeah, you can find me on Twitter. I also have my. My blog, mouse versus python, that you can find me on that, that has links to my YouTube channel and to my Twitter feed. So that's probably. Probably the best place to find me. And final piece of advice would be, you know, believe in yourself. You can, you can become better. You just have to work hard at it. I love it. Awesome. Persistence, consistency, determination. I love it. Awesome. You can do it. Exactly. Well, thank you so much for. For joining us today, tonight, this morning, this evening, this afternoon. Three time zones covering off. We really appreciate your time. And again, just everything you contribute to the python community, and especially and selfishly, our community as well. You're just a key piece of the puzzle and you really such a valuable person to have around and you support people and I love it. So thank you so much. And just one last thing for me, an accountability check. Mike's been chasing me for some questions to answer for his blog and his interview series. So here's my accountability check in. I'm going to get those done. I promise, Mike, I'll have them to you, everyone on the podcast going to hear this and hold me accountable in the next couple of days. Awesome. I look forward to it. That's three days. That's three days. What's the today's. What is it? Wednesday night, September. You'll have it in October. Perfect. All right, well, look, Mike, thanks again. We'll have all the links that you've mentioned today below, your books, your blog, your Twitter feed, everything. Again, we appreciate your time. We appreciate you. Thanks for joining us. I appreciate being on it. Thank you so much. We hope you enjoyed this episode. To hear more from us, go to Pibyte Friends, that is Pibit es friends, and receive a free gift just for being a friend of the show and to join our thriving slack community of Python programmers, go to Pibytes community, that's Pybit es community. We hope to see you there and catch you in the next episode.