Monitor performance issues & errors in your code

#169: Becoming a Python content creator Transcript

Recorded on Friday, Jun 29, 2018.

00:00 Michael Kennedy: Corey Schafer has been building his YouTube channel of tutorials for many years. He recently has made the big shift from taking his hobby project and making it his full time job. You'll hear about how Corey made that transition, what it takes to go pro, and even a little bit about the similarities between my work with Talk Python and his projects. This is Talk Python To Me, Episode 169, recorded June 29th, 2018. Welcome to Talk Python To Me, a weekly podcast on Python, the language, the library, the ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy, keep up with the show and listen to past episodes at, and follow the show on Twitter via @TalkPython. Corey, welcome to Talk Python.

00:57 Corey Schafer: Hey, thanks for having me.

00:59 Michael Kennedy: Yeah, it's really great to have you here, another Python creator putting out content for the whole world, huh?

01:03 Corey Schafer: Yeah, actually I've been doing that now for about only a few months, so I'm kind of new to it, but it's been fun so far.

01:10 Michael Kennedy: It's going to be an exciting ride for you, I know you've been doing for quite a while and it's picking up speed. That's awesome and we're totally going to dig into those sorts of things, but before we get to them of course let's hear your story, how did you get into programming and Python?

01:22 Corey Schafer: So I got into programming probably a little bit later than most people that you talk to. I really started out, I went to Marshall University for Computer Science, and really that was one of my first exposures to computer science and programming in general. And I kind of just went and just chose a major, my dad was a computer programmer so I chose that. But for the first few years there I wasn't too passionate about it right off the bat and it wasn't until kind of towards the end of my college career I got an internship down at the Kennedy Space Center in Florida and a lot of people down there were super passionate about their jobs and loved what they did and that kind of rubbed off on me, so whenever I went back for my last semester of college I was really into it and that's when I started doing most of my self-study and doing my own applications and things like that.

02:07 Michael Kennedy: That sounds so exciting, like Kennedy Space Center, that is really cool. First few years I was born like a few miles from that place and lived there, it just seems like such a special place in both the tech science world and sort of in history in general. What was it like to work there?

02:23 Corey Schafer: Oh it was great, yeah, it was an amazing place just even if you weren't doing programming it was just an amazing place in general because there's so much that you can see and do there because you can, just go out on the beach and watch a space shuttle launch so I got to see a few launches which was one of the coolest things I've ever seen in my life, and yeah, and even just driving through the space center and seeing all the history, you can go to the old launch pads and they're kind of some of them are grown over with weeds and stuff now, but it's kind of neat to see these, where all this history was built, so yeah, it was an awesome place to work. One of the things that kind of motivated me whenever I worked down there was I'd always put it on a pedestal in terms of people that can work there and which is true, I mean you definitely have some of the smartest people walking around there, but at the same time there's also so many average people there too who have just got there from studying over the years and that kind of rubbed off on me that there's no reason I can't be here too if I, if I start going and putting some effort into this stuff, so.

03:22 Michael Kennedy: Yeah, that's a really awesome lesson, I think that's a great lesson that a lot of people learn at different stages in life that like wait a minute, this seems so high level and so impossible, but I see a bunch of sort of normal people that just work really hard, I can do that, right? That's a great takeaway I think. Awesome. So what kind of programming did you do there?

03:42 Corey Schafer: Whenever I was there I was doing mostly some, I think I was doing C++ but I wasn't very good with C++ at the time, it was a lot of, and also I got, it was just an internship so also I was getting, they used Linux systems and that's one of the first times I've used Linux, so I've spent a lot of the time just kind of learning my way and navigating around and writing some command line applications for them to parse. I think we were parsing some XML files and things like that but yeah, nothing too complicated.

04:09 Michael Kennedy: That's cool, but basically that experience.

04:11 Corey Schafer: I learned a lot when I was there though.

04:13 Michael Kennedy: Yeah, that's awesome, so that experience sort of inspired you to like hey, this programming thing is actually pretty awesome, I'm getting into it more.

04:19 Corey Schafer: Yeah, yeah exactly, so whenever I got back from there I had one semester left in college and then after I graduated college that's whenever I got my first programming job, probably spent a couple of years doing some stuff that wasn't necessarily things that knowledge that lasts too long. Like for example, for a couple of years I was doing Adobe Flex programming, I don't think Adobe Flex is even around anymore, that was basically to build Adobe Flash applications, so.

04:46 Michael Kennedy: There was a time where that was like, you could get some seriously good consulting jobs like at the early. Early stages of interactive web. What is that like, 96, 97, 98 type frame?

04:58 Corey Schafer: Gosh, that was no, not that long ago, it's, I caught it on the very tail end when JavaScript kind of replaced it. So it was probably around 2010, yeah.

05:08 Michael Kennedy: Okay, cool.

05:09 Corey Schafer: Yeah, so only about eight years ago. And then so after that I got my first job where I really felt like I was learning some technologies that were going to be around for a while so I got a full time job as a front end developer doing JavaScript programming, doing GIS web applications and mapping applications, and that was at West Virginia University in Morgantown, West Virginia, and from there that's when I also got exposed to Python, we were building some backend scripts using Python. And so that's whenever I wrote my first Python scripts, so that was probably only about five years ago that I started doing that and yeah, I kind of fell in love with it, I started, compared to JavaScript I was looking at Python and I was like man, this is a language that I can use to write scripts that move files around in my file system or I can write desktop applications or command line applications and backend, there's just so much, it's such a broad language and so much that there is to tackle with it, so.

06:05 Michael Kennedy: Yeah, that's one of the great things is that it's so broad, right?

06:08 Corey Schafer: Yeah, exactly.

06:08 Michael Kennedy: Yeah, for sure. Awesome, and so you have what I would consider a slightly unusual job that you're doing day to day, so why don't you tell people about the big move that you've recently made and what you're up to now.

06:20 Corey Schafer: So yeah, about whenever I started learning Python about four or five years ago that's whenever I started making YouTube videos and it kind of sounds counter-intuitive to say that I was making videos all along Python while I was learning Python, but really that's originally why I started making the videos was just to kind of solidify what I was learning and put that out for other people. I would just keep notes of anything anytime I was learning something. If it wasn't exactly clear to me then I would go back after I learned it and say okay, well why wasn't I understanding this when I went through it first and is there a way that it could've been explained to me that would've made me understand it faster. So that's how I started making my first videos and yeah, so I've been doing those videos for about four years now and I've got a full time job working with Python out at the University of Colorado Boulder for about the past three years and I was making videos pretty much the whole time on the weekends, and for the first couple of years it wasn't, it was basically just a passion project, it was stuff that I was doing and not making any money with it at all. I think after the first two years I was looking at my earnings, I was making like less than a dollar a day after two years, so it definitely wasn't a money making scheme at the time. But yeah, and then two years after that it just kind of grows exponentially and got to the point where I started thinking man, maybe I can do this fulltime and a couple of months ago I was able to do that, so yeah. So yeah, now my day to day is now that I'm doing it full time it really opens up a lot of time to work on larger courses, and 'cause before it was hard working on the weekends to do a large course because it's really hard just to keep the continuity from weekend to weekend and be able to know where you picked up, where you picked off and stuff like that, so yeah, being able to do it every day and be able to keep my mind where I left off last time and it really helps doing those larger courses now, so.

08:09 Michael Kennedy: That is awesome.

08:09 Corey Schafer: Yeah, yeah. So yeah, the day to day basically is as far as work hours goes it's pretty much broken up into either creating videos that I already feel comfortable teaching, like some of the videos that I'm ready to record right now and a lot of research for videos that I want to record, but that I need to brush up on the topics first. And now for the past couple of months I've also been spending a little time just learning how to do this as a business now, so that's kind of the more boring stuff in terms of learning picking out different health insurance and retirement plans and if I want to make a different account for taxes and boring stuff like that.

08:45 Michael Kennedy: Man I was just juggling taxes earlier, I can very much relate. First of all, congratulations, that's an awesome move.

08:52 Corey Schafer: Yeah, thank you, yeah, yeah it's been great so far.

08:54 Michael Kennedy: I'm sure you're really, really happy about it. I think this transition that you're talking about here is really tricky for people with computer science degrees or the sort of developer training because nobody teaches you about marketing, accounting, about business structures, about like all this stuff, you're like wait a minute, how do I have a retirement account again when I don't have a company that gives me the 401K, right? Like oh yeah, self-employed person IRA, that's apparently a thing I need to learn about. So sort of what's that experience been like?

09:23 Corey Schafer: That's probably been the hardest thing, yeah in terms of just learning how to get the information out there, I've actually gotten, I'd say that a lot of that has been kind of lucky in terms of like I'll put out content that I think is good and if it's good enough a lot of it's been kind of free marketing from other people. So the Python weekly email list was big when it got on there a couple of times and I really saw a lot of people come in from that, people posting posts on Reddit and one of those going popular will bring in a couple thousand people here in there. And yeah, so just stuff like that has really helped with marketing in terms of people just sharing the content online. As far as self-marketing, that's been hard 'cause I'm not a very good designer in terms of designing images for my courses and things like that, so that's been a lot of a self study, just going through other online courses and learning how to, how to create all that and put it out there on social media, making a Facebook and a Twitter and all that stuff to push that out to people who are interested.

10:25 Michael Kennedy: Yeah, and I feel like coming from the tech space that marketing feels a little dirty, almost shady, right, like I don't really want to do marketing, ugh, yuck. But at some point like if you were going to do these types of things that you and I are doing you more or less have to go, like okay well, there is a positive side to I'm trying to help people, I'm trying to spread the word about this stuff, but I have to go through these steps or nobody will come, right, it's not like the field of dreams, that would be lovely. It really is, right?

10:51 Corey Schafer: Yeah, that's been one of the hardest things is some people are so good at selling themselves and saying if you take this course, it's the best course out there, trust me, and stuff like that, and I've, it's been hard for me to kind of put up stuff like that.

11:05 Michael Kennedy: Yeah and I find honestly like a lot of times it's not, which is really rough, right? So you feel like well if I do the same thing I'm going to be grouped in the same category, so it's a hard balance to strike.

11:16 Corey Schafer: Exactly.

11:17 Michael Kennedy: So I want to run an analogy by you with your NASA background and what you've just gone through. So people ask me sometimes like how do you get into these, these places, right? Like I'm doing full time, my podcast and the courses, and you're kind of doing a parallel path in YouTube, and the story is very much the same, like I started the podcast and I would record from 9 PM to 10 PM and then do the editing until one AM and then wake up and go back to work or do it on the weekends, just squeeze it in whenever you can. And at some point it gets good enough that you can actually put more of your time into just that, right? And so I think a good analogy for people who are thinking about these types of things is when a rocket takes off, they talk about max Q, right, you're familiar with max Q.

12:00 Corey Schafer: Don't think so, what is that exactly?

12:02 Michael Kennedy: So max Q is the concept where when the rocket is taken off it's accelerating faster and faster and it's going through like the low atmosphere at high enough speeds that it's the maximum aerodynamic force on the rocket.

12:14 Corey Schafer: Oh okay, yeah.

12:15 Michael Kennedy: And as it's trying to break free it gets harder and harder it has to actually slow down, like they throttle down the engines for like a few seconds after like one minute and then it kind of breaks through that and it like takes off again. And so going through these processes is very much and like this max Q like the more successful that you get and you still have your job the more work you got to like double down and it just gets harder and harder and harder until you get to the point where you can like break through that and you're like, okay now I can focus on the one thing and the pressure at least of like trying to juggle everything lets up.

12:43 Corey Schafer: Yeah, yeah, I think that's a great analogy, yeah, that's, I'd say the hardest part of this whole transition was probably, probably the last six months of work where I've saw the goal line of almost being there in terms of being able to do it full time and it felt like I needed a few more good courses to put out there, but yeah, it was just a lot of work there just combined with the work that I was doing full time and it's, yeah, that's definitely the most stressful part is that last little bit before you actually do break through and go full time.

13:12 Michael Kennedy: Yeah and probably I don't know about you, but that last couple of months when you've sort of decided but you're not quite ready, the motivation to keep doing your regular job well is hard to keep there. Yeah? Yeah, you're just thinking about, you're just thinking about okay, as soon as I get this in place I'm going to be doing this other thing and you're kind of out the door, it's really hard. So I do want to dig in to some of your lessons and series and stuff and we'll spend a lot of time on that but I guess kind of while we're still on the subject here maybe talk about like lessons that you learned in going through that process of going out on your own as a person working in sort of trying to teach people in the software development field and in open source and stuff, what went right, what went wrong, like what advice you have for people.

13:54 Corey Schafer: Well one piece of advice I would have is that it has to be something that you actually are really passionate about and something that you enjoy because like I was saying before if I've had a lot of contact made just about kind of as the money, they say hey can I do this and make a lot of money doing this, I would love to. And you definitely can after some time and I'm sure it's different for every person, but for me especially if I was just doing it to make a living and just doing it to make money I would've definitely given up in the first two years just because like I was saying I was making less than a dollar day after two years, so if it was all about the money then I would've, yeah, definitely given up way before it was actually started bringing in anything. So the first thing I would say is that just it has to be something that you actually enjoy doing and something that you probably would be doing in your free time anyway, and I really liked doing the videos and I like the feedback that I was getting, so it was more about that than making money in the first place. So that'd be my first piece of advice is just that yeah, it has to be something that you're basically going to be doing anyways. So whether that's an open source project or a blog or making videos, anything like that.

15:00 Michael Kennedy: Yeah, I guess if you really want to make money maybe just move to New York or London and just get a stock trading job automating it with Python or something, right? If you're not going to love it anyway.

15:12 Corey Schafer: Yeah, if it's about, if people were looking into getting into teaching specifically one thing that I've kind of learned over the years and it's kind of evolved too in terms of how good you are at it, but one of the best things you can do when you're actually teaching courses is and it's a skill that is kind of hard to come by but you have to kind of be able to put yourself in the position of mentally of somebody who's seeing something for the first time and that can be harder than people think, because if you have all this experience and all this knowledge it can be hard to actually remember what it's like to see this for the first time and it's easy to skip over a lot of stuff and not anticipate what kind of questions people ask or where people get tripped up. So if people are specifically looking into teaching that's one thing that I would recommend too is just try to get better at putting yourself back in that position of learning something for the first time.

16:01 Michael Kennedy: I think that is super undervalued and you talked about how it was kind of counter-intuitive that hey as I'm learning Python I'm actually creating the videos, and I don't know about you but one of the feelings I had was like I really don't know enough to like put myself out there as an expert. But I know I can talk about these things so why don't I just do that and like see how it goes, right? But I think this starting earlier in that process actually lets you connect with your students a little bit more, you're like yeah, just last week I couldn't get this thing to install and here's what I actually had to do to make it work rather than of course you just, do these other, these few commands and it works, right? So you just, you're sort of the pain is more recent and so you can help people, you can sort of have a little better empathy I think.

16:46 Corey Schafer: And I think that's great advice too is not to be worried about putting yourself out there, it's hard, that's a hard stepping stone to get over, I definitely had that also, I definitely was making videos worried about getting questions about things that I knew nothing about, and but yeah, after you put out the first videos everybody's real appreciative that you just are showing them anything that was a hurdle for you.

17:04 Michael Kennedy: Yeah, absolutely. This portion of Talk Python To Me was brought to you by Datadog. Get insights into your Python applications and infrastructures with Datadog's fully integrated platform. Debug and optimize your code by tracing requests across web servers, databases, and services in your environment, then correlate and pivot between distributed request traces, metrics, and logs to troubleshoot issues without switching tools or context. Get started today with a 14 day trial and Datadog will send you a free T-shirt. Visit for more details. Let's talk about some of your video series that you have going on, like you said you have four years of videos, and I didn't count but it's many pages of little thumbnails, so it's quite the set of series and stuff that you put out there and of course we'll link to your YouTube channel. But let's talk about some of the series that you put together that you liked and dig into 'em a bit.

18:01 Corey Schafer: Okay great, yeah, that sounds good.

18:03 Michael Kennedy: What's the first one you want to talk about?

18:05 Corey Schafer: The most popular series on the channel right now is probably my object oriented series, that's I think that's my most popular video, I'm not sure how many views that has right now, but it's above all the other ones. I think that people enjoy the object oriented series because it's kind of taught a little bit different than some of the other courses that are online in terms of, so for example, we show a lot of real world applications for what you're learning in that course and by real world applications it's not something that I've put together that's a real world example, it's really actual code like in the standard library, we'll open that up and see like okay, if we're doing like static and class methods like, so class methods can be used as alternative constructors, and so we'll open up the datetime library and see okay well, and for people who don't know what an alternative constructor is basically it's multiple ways of creating an object or instantiating an object. So date times can be created by the default way as just saying okay, I want a date that is the year, month, day, but you can also do usually they start with like a from key or so from timestamp or something like that, so there's multiple ways to create a datetime object and those are all class methods. So we open up the standard library, look through there, and say okay well here we say class method and here's how datetime is using it and this is, and it's doing basically exactly what we've just learned in the course and that kind of gives people confidence that there's millions of people using this code in the datetime module, so they know it's going to be something that is, that applies to the real world what they're learning at the time.

19:34 Michael Kennedy: Yeah that's cool. Certainly digging into the standard library code is a neat way of doing it. that it's been optimized for performance, it's been like you said, used by countless numbers of people, it's pretty interesting. I think certainly class methods and static methods are they're interesting in that they're almost the same, but not exactly the same. And so it's like well why would I use a static method over a class method. Do you have any thoughts on this?

20:01 Corey Schafer: So a static method, yeah static methods can be a little confusing because static methods don't take self or an instance or the class as an argument, they're basically just regular functions and so people don't really, so they have nothing really to do with like the instance or the class, it's really just, it could be a separate function almost and people don't really know when to use static methods but it's really a function that yeah, it doesn't operate on the instance or the class, but it does have a relation to the class. So like the example that I use in the, in the series is we're building like an employee object and I'll say okay you might have like an is_workday method, like to check, to pass in a date and see if that is a work day or something like that. So checking if something is a workday it doesn't actually work on the employee instance or the class itself, it could be a separate function altogether, but it's kind of related to that object in a way that it might be some functionality that you want to pass on whenever someone imports your class that you created. So that's kind of what a static method is in the sense of why you might include that in an object or in a class. And yeah, the class methods are basically it's you're working, instead of passing into instance like a regular method you're working on the class itself, so and like I said you can use that to set class attributes if you want or a lot of people use them for alternative constructors where you can take in different arguments and then return that class with an instance of a newly created class that's.

21:30 Michael Kennedy: Right, almost like a factory method. Like if you're going to allocate an instance of that class in the class method you need to know that it's not, if you derive from it then you want to create the derived thing, not the other thing, but the fact that the class, the cls thing is passed in you can just sort of call that and get to the constructor.

21:47 Corey Schafer: Yeah, exactly.

21:49 Michael Kennedy: Yeah, yeah, pretty interesting. Okay, so what else do you cover in the object oriented series?

21:54 Corey Schafer: So we also do inheritance, so inheritance is another one where we kind of go through the lesson, but then we also open up the standard library and see how it's done. So I never knew how to pronounce, I never have actually heard this spoken out loud, but the Werkzeug library, the one that shifts with the dependency of Flask, so yeah, we look in there and we take a look at their HTTP exceptions and that's a great example of inheritance used well there because they have their base HTTP exception which gives you all of this functionality and then each higher level exception, like a 404 not found or 500 internal ware, they all inherit from that base HTTP exception, so they get all of that code for reuse and then basically they just change like the status code in the method or in the message. So it's, it's kind of a neat way of seeing how a real world library is actually using this efficiently.

22:48 Michael Kennedy: Yeah and that's a really great example and I think that's one of the places where inheritance makes tons of sense in Python. I'm a big fan of classes and inheritance but I do feel like they can be a little bit overused in Python because sometimes it's just useful for like grouping common behaviors and we can just as well do that in a module with some module level functions, variables, just as say like a class with a bunch of static methods, right? They're kind of almost equivalent, it's just different ways of thinking, but around exceptions like it really makes a big difference, right, 'cause then your accept various type you use the inheritance to drive your error handling basically.

23:28 Corey Schafer: Yeah exactly.

23:29 Michael Kennedy: Yeah, so I really like that, that's awesome. Another one that I think is probably really popular in your set of videos is Python for Beginners. Like we all want to maybe write the most advanced like deep look inside of this aspect of say like an ORM or something but the truth is most people are just getting into Python, like it's a growing field so most people are coming into it, they're not looking for like that super internal deep dive thing, right? So this beginner's series is probably pretty popular.

23:56 Corey Schafer: Yeah, the beginner series, I think that's my second most popular series on the channel behind the object oriented and it's kind of funny 'cause it took me a long time to put a beginner series together because originally I was only going to do videos where I didn't think that there was I thought that other tutorials were kind of lacking in and things like that, and there's so many good Python beginner series out there that I wasn't really going to tackle that and not only on YouTube but just kind of everywhere there's some great resources for learning Python. But I think a lot of people will just kind of get used to a specific instructor and even if you recommend a class elsewhere they'll say, okay well I really like though if you would teach it and so I put one together and gave in after a couple of years, but yeah, it's a popular course and we go over, just basic installation and how to set the Python path on Mac and Windows and Linux and things, that's where a lot of people get tripped up. And also so we touch on basically the data, all the basic stuff, data types, loops, and conditionals, but once we get up to functions we kind of try to tie all that back together and again, we pull, we basically write a function that will check how many days are in a month given a year and a month, and that's basically a function that's already written in the standard library, I think that's in the calendar module maybe, I can't remember exactly. But yeah, we go through that and kind of learn or use everything that we learn to build up that function and then when it's all said and done we can open up the standard library there and see okay well, we just basically wrote a function that a lot of people use on a regular basis, so.

25:38 Michael Kennedy: So in that beginner series I think it's really awesome that you actually start with import antigravity 'cause that's both fun and instructive. Like wait a minute, why did importing a thing actually cause an action, isn't that more of a declaration and not a behavior?

25:53 Corey Schafer: Yeah that's one of the more popular videos on there is where we go over imports and kind of show what the sys.path is and how to append to that path or you can set the Python path in an environment variable and also yeah, the import antigravity is one part in that series where we say okay, well we're importing this module and it does something cool, it opens up our web browser.

26:14 Michael Kennedy: Let me interrupt you just for a second Corey. Maybe not everyone has actually typed import antigravity into their Python REPL, so if you're listening and you can do that, stop for a second and type import antigravity inside the Python REPL. If not, tell people what happens.

26:29 Corey Schafer: Yeah, basically it's kind of an Easter egg in Python in the sense that it's not super useful but opens up your web browser and kind of sends you to one of the XKCD comics that is kind of talking about, a little comic about Python on there that's kind of funny. So yeah, it's super, super easy, it's just import one line and then it opens up your browser and goes to that comic.

26:51 Michael Kennedy: I think it's really instructful though, instructful, because when you talk about things like the pattern for if the __main__, then invoke this behavior, like that stuff doesn't really register if people come in from something like C++ or C#, you're like wait a minute, what is this weird construct at the end, but this sort of, going into this experience is like oh I see actually how functions and classes get defined and how things get imported and brought into my namespace and all these sorts, it's like really, it helps break the paradigm that's incongruent with Python, people coming from these other languages.

27:28 Corey Schafer: Yeah exactly, yeah and it makes it super easy to like even if you're wondering how that imported code works then I mean you always have the opportunity in Python to just look underneath the hood, so if you want to see, okay well what is this module doing that I've just, it's opening my browser and opening this comic book, but how is it doing that? So then you can go into the standard library and just look at the antigravity file and it's basically two lines, it's just kind of imports the web browser and then uses on that comic and that kind of makes people feel like once they know how to look at that other people's code they can say oh okay, well now I've learned something here so now if I want to open up a web browser to my own web page then this is how you do it. So you can always dig deeper and look under the hood and see what's going on and I think that's another really interesting thing with Python as well.

28:19 Michael Kennedy: Yeah, that's a really cool way to kick things off. What else do you talk about in that series?

28:23 Corey Schafer: After the, so after we go through all the data types and conditionals and for loops and everything like that and then the importing and taking a look a little bit at the standard library in terms of how to do basic things with the standard library like work a little bit with dates and the random module and the math module, after we do all that it's kind of open ended after that. So I end the series at a nine part series after we learn how to import and from there I basically tell people just like we were talking about before how Python is such a broad language and after you learn those fundamentals you can pretty much take it anywhere that you want. So if like I didn't want to continue the series and teach 'em about file objects next, like it was the next obvious thing that people should learn, really after that they can, if they want to learn how to work with file objects they can do that or if they want to learn how to work with the database then they can do that. So after that first nine videos then it's kind of broken up to I kind of logically ordered the videos in the sense of what I think would be good to learn next, but I tell 'em that from that point on they can basically skip around and learn whatever specific subject they want to learn about.

29:29 Michael Kennedy: Yeah, that's one of the challenges of teaching Python is so many people use it for different things, right? Like some people may be learning it for data science and so they want to learn all about that side of things. Maybe you learn for web so you got to learn about frameworks and databases. Maybe you learn it for DevOps. And if you're in one class of people you do not want to be learning about DevOps when you're trying to do data science. I can just like there's, it's one of the real things that's making Python grow so fast is people coming from all these different disciplines, but it's really interesting to see different ways of working with Python. you've got like the data scientists working with Jupyter notebooks in this sort of exploratory fashion. We got the web developers building like really structured architectured things with unit testing and code coverage, and it's kind of cool to have them all coexist.

30:16 Corey Schafer: Yeah exactly, that's also one of the, yeah, challenge, yeah, like you're saying one of the challenges with teaching Python too is like whenever that you say that Python a lot of people kind of expect that you kind of know every aspect of Python, but yeah, there's just so much, so much to cover that yeah, if somebody. So for example, my previous full time job I was basically doing a lot of web service backend work so that's kind of why I started with the Flask course as my first course I said I put together whenever I first went full time, but yeah, and things like data science and machine learning or things that I want to cover in the future, but those are things that I'm going to have to buff up on myself because there's just so much there and yeah, so much to learn with it.

31:00 Michael Kennedy: For sure, I think that's an interesting segway to the next series that you put together because both with the podcast and with the courses that I'm doing at some point it hits a limit of like I have totally tons of experience doing this and I can just do this off the top of my head where it gets in the point of like I've never dug into that aspect of what I'm trying to teach people or trying to interview people about and it becomes quite the research project, right, so that was that was sort of the story with your Flask one, right?

31:28 Corey Schafer: Yeah, the Flask series was the first one that I put together after I went full time and I kind of made a mistake when I first did that because whenever I first quit I kind of saw this huge chunk of free time and I was like okay well now I can start working on large series. But probably in hindsight what I should've done is put together a lot of one off videos that I could slowly release while I was working on that large series because a lot of people have found out that I went full time but then it took me about a month of doing some research and putting together a blog that I thought had a lot of features that people would be looking for like uploading profile pictures and entire authentication system and setting password, or email resets and stuff like that. And so yeah, it took me about a month to research that and record it and edit it and it came out to be about eight hours worth of content and yeah, so yeah that was one series that it's pretty popular, it kind of takes a Flask application and you can kind of see how an application like that will evolve over time, so we just start out just by using the default Flask that you can get from the documentation, the hello world, and just in a single file. And then build that up to where okay, well if something gets a little more complicated then it's we can't really hold it in this single file anymore. So now we have to break it up into packages. So then we start using packages to simplify imports and things like that. And to give credit where credit is due where I learned a lot of that stuff with the imports and circular dependencies and things like that was from a lot of talks by Miguel Greenberg, he does, I think he's been on the podcast before, he does a great job with Flask applications and he has a Mega Flask tutorial that he put together that's more advanced than even the series I did on it, so yeah, he does a great job with those.

33:16 Michael Kennedy: Yeah, Miguel's series was really cool and I love the way that he sort of reamped it recently. So yeah, I think your Flask series is quite interesting and it's probably worth talking just a little bit about how much time and energy does it take to put together one of these things. So you said it took for eight hours of published content it took you a month of full time work. That sounds about right to me, but I'm not sure everybody who comes along understands how much effort goes into creating these short, relatively short little bits that come out the other side.

33:51 Corey Schafer: And it really depends on what you're teaching too, I mean it's, it's kind of similar to like as an analogy I'd probably say it's kind of similar to like writing music or something like that, you'll hear interviews with certain people who say that it took them forever to just write this one song and then a lot of people said that they just kind of sat down and it just started coming out and was everything kind of poured out in one session and it's kind of like that with this, like sometimes it takes me longer to put, some videos I can put together an hour, and just I can record it all on one take and get there in no time, and then sometimes it just takes a while to get all these pieces together and makes sure that I'm teaching it in a way where I'm not repeating the same topics too much and that we're kind of touching on all the topics that people would want to learn about in terms of polished finished application and things like that. So it kind of one of the things that took me the longest was just it's been so long since I've touched front end development that I wanted the I wanted the finished application to look nice so that people could have a nice application once they were done, so a lot of that time went into relearning some JavaScript and CSS and that's not even stuff that we really touch on in the video, it's just a code snippet that I hand out and say, well you can use this for the CSS, but even that took a while to put together just to make it look presentable, so yeah, a lot of work, a lot of hidden work goes in that a lot of people don't see there.

35:17 Michael Kennedy: This portion of Talk Python To Me has been brought to you by Rollbar. One of the frustrating things about being a developer is dealing with errors, ugh, relying on user's report errors digging through log files, trying to debug issues, or getting millions of words just flooding your inbox and ruining your day. With Rollbar's full stack air monitoring you get the context, insight, and control you need to find and fix bugs faster. Adding Rollbar to your Python app is as easy as pip install rollbar. You can start tracking production errors and employments in eight minutes or less. Are you considering self hosting tools for security or compliance reasons? Then you should really check out Rollbar's compliance SaSS option. Get advanced security features and meet compliance without the hassle of self-hosting, including HIPPA, ISO 27001, Privacy Shield, and more. They'd love to give you a demo. Give Rollbar a try today, go to and check 'em out. Yeah, I agree, I think when you talk about the people who just, or the times in which you just sit down and stuff just flows out you couldn't do that from scratch though, that happens because you're kind of swimming in these ideas and in these spaces where this is like all around you and then eventually it crystalizes in your mind, you sit down and it comes down. But if you just took a random person off the street, right, they probably wouldn't have that happen because they haven't been thinking about it for a month before they decided to like work on it, right?

36:41 Corey Schafer: Yeah, that's exactly right, yeah, you definitely have to know the subject well before you sit down and do that. Yeah, that's, I'm sure you probably have the same thing with teaching courses, but I've got folders and folders of just thousands of ideas where I have kind of started writing videos and then stopped and then we'll start again, then kind of whenever I'm actually ready to record it I piece all of those together into one finished course that finally comes out. But yeah, just even piecing those small pieces together and sitting down over time and writing those it takes a long time if you were to actually add it up altogether, so.

37:13 Michael Kennedy: Yeah, for sure. I have a Google doc that I think has 63 full course ideas in it, 63 different courses, and I'll go back and I'll post that file there, but people are suggesting interesting new courses to me faster than I can like, that list is growing, it's not shrinking even though I'm doing it all the time. I guess one final thing to round that out, like I just saw a comment on Reddit saying about my 100 Days of Code course, saying oh the course is only 17 hours of like polished edited video, like how can this be for 100 days? It's like you have no idea man, you have no idea. it also comes with like 80 hours of exercises, so there's your 100. But it took me, Bob Belderbos, and Julian Sequeira, it took us three and a half months each where like that's a full year almost if we did it as one person of just to come up with like that, that content. There's like some serious, serious commitments you got to make there.

38:09 Corey Schafer: Yeah I'm sure that the hours that are actually edited down when it's all said and done too like I'm sure you have the same experience, but like whenever I said that there was about eight hours of Flask finished content that was edited down probably I think those unedited videos before cutting out all the dead spots was about 22 hours of content that was, so it, I actually only end up using about a third of everything that was actually recorded so yeah, it takes a while even to cut those down.

38:38 Michael Kennedy: Yeah, it's quite the thing. All right, let's touch on the last two 'cause they're both really interesting. One is decorators, I feel like decorators are quite mysterious to most people, many people in Python anyway.

38:49 Corey Schafer: Now that's only one video but it's kind funny, I get a lot of comments in the comment section of that video that they say it's kind of like YouTube inception because in the decorator's video I basically say we're going to do decorators in this video, but you have not learned about closures yet then you might want to go watch my closures video, and then in the closures video I say well okay, we're going to learn about closures here but if you haven't watched my first class functions video then you might want to go watch that first. So people kind of get down this rabbit hole. But yeah, after so yeah, first we kind of teach people about first class functions and what that means and basically that means that you can pass a function around like any other variable. So you can set a variable equal to a function or you can either execute the function and set it to the return value or you can not execute the function and just set it equal to that function ready to be executed. And then when it comes to closures you kind of use that same concept where you can return, so within a function you can return an inner function waiting to be executed, and that inner function will kind of remember the context in which the first function was run. And then decorators builds on that to where you actually pass in a function and add functionality dynamically. So yeah, I mean I can totally understand why it's a confusing subject, it took me a long time to wrap my head around it too, and so yeah, so it's confusing just in terms of how much is going on and you kind of got to piece these things together and even, even after I've taught that video you still run and I'm sure this is like this with everybody, but if you're reading someone else's code and you run into a complicated decorator then you kind of got to sit down and be like okay, let me map all this out here and see exactly, exactly what's going on. It's definitely not super intuitive but it's very useful once you have that down.

40:43 Michael Kennedy: Yeah it's definitely useful once you learn it, but it yeah, it's a bit of a mind, mind blowing sort of thing. The last series or video that you talked about is something I've been thinking a lot about lately as well, how to volunteer your skills as a software engineer. And I feel like software engineers are almost modern day magicians, so much of the world is technical, interacts with technology and devices, and we're the people who can kind of wave the magic keyboard and then something comes into existence that solves one of these problems or something along those lines. And we have the skills to do that, right? And so how, if you see problems where like if these people just knew a little programming this would just not be, this could totally change things, what are you talking about in this one?

41:30 Corey Schafer: So yeah, that video, it's, that's a video that I did several years ago and it's a video that I really like a lot, but it's not very popular, and I think the reason it's not very popular is just because I think when I released that video I only had like a few hundred subscribers and it's not very often that people go back years to see what videos were, I was making back then. So that's one that now that I have a larger audience I think I'd like to remake that one, but yeah, in that video I basically talk about when people think about volunteering they, especially as software developers you might not think that you can actually volunteer using your skillset, you might think that you have to do something else. But yeah, there's tons of things that people who have a tech background can do. So one of the first things I've mentioned is at senior sitters or assisted living homes, you can go in and this isn't exactly software related, but you can go in and just, show people how to set up emails or connect to WiFi, 'cause that's it's kind of a misconception that older people don't really care about technology or don't want to use technology, but in my experience I did that for a few years, a few years ago, and you go in and they definitely want to stay connected and they want to get pictures of their grandkids and set up their email so that they can keep in touch with the family or learn how to subscribe to their favorite online news source or anything like that. That's one way for as far as tech people, as far as being more software related I also talk about how you can, build websites for free for certain organizations that might not be able to actually afford to hire somebody, so you can do websites for maybe a pet shelter or a local farmer's market or something like that.

43:11 Michael Kennedy: That's a cool idea and one of the things so many people who are getting into Python need before they can actually reasonably go get jobs is some experience and something they can point at and go, that thing, I built that thing and here's what it does and here's how this company is using it. Here's the way if you've got some free time that you can do one of those projects and it still benefits you very directly in that like when you apply for the job, let's say for Django or whatever, yeah, you use Django, look, this thing I did over here, and maybe they maybe learned it from your channel or something, who knows.

43:43 Corey Schafer: That's definitely a great way to have some things added to your portfolio. I get that question all the time, people asking me what is a real world project that I can do that a computer or that a a corporation or an employer might be interested in? And usually, yeah, usually I tell them that like one of my top recommendations is to build a website because when you build a website from scratch you get so much, you get your hands involved in so many different areas. So for example, you do the backend which is probably going to be in Python if you're listening to this podcast, but you can also do backend websites in Node.js and PHP and things like that, but you also get exposed to the frontend doing JavaScript, HTML, CSS. If you host the website yourself you get.

44:29 Michael Kennedy: Maybe Linux and Docker, yeah.

44:31 Corey Schafer: Yeah, yeah, yeah, so if you're hosting the website yourself you're going to get exposed to Linux and setting up, system security and how domain hosting works and everything. So yeah, doing a website is a great way for people to build up a portfolio because you get exposed to so much, and not only that, but it also helps you realize what you like the most, so if you, if you liked doing, and that's kind of what happened to me is once I started doing backend web work with Python I realized hey I think I want to do this instead of front end work now. So it's, you might not know it until you try it and it's the same thing with maybe somebody will do, put their website up on a Linux system and they really like doing the system administration type of stuff and then they go and do that full time, so not only is it a great way to get a portfolio built up but it's also a great way to kind of identify where your strong points are and what you enjoy the most.

45:18 Michael Kennedy: That's great advice. One of these sorts of examples that people did in a volunteer sense that I thought was pretty cool is something called Humanitarian Toolbox, it's at, now this I think, I think the project is mostly a .NET project so Python people might not really care to contribute, but maybe it's like a thing that the Red Cross and other organizations like them can use for like hurricanes and earthquakes and stuff like that to help connect people and victims and sort of after stuff strikes, it's pretty cool.

45:47 Corey Schafer: Yeah and kind of similar to that there's a, if you go to GitHub I think it's under, it used to be under GitHub Showcases but now I think it's under GitHub Collections, and I've never actually contributed to any of these projects, but I saw it in my research for that video and it's kind of the same, it has, there's one section that's called Made in Africa, and it's a lot of, open source software that people are using over there to stay connected so they can do emergency response or SMS type of systems where they can message people back and forth, and setting up that infrastructure would be a great thing to work on. So it sounds kind of similar to what you talk about with the Red Cross.

46:25 Michael Kennedy: That's awesome, I put the Made in Africa link in the show notes for people.

46:28 Corey Schafer: Cool, awesome.

46:28 Michael Kennedy: All right, so that rounds out the video series that we are going to, the ones we're going to cover at least for the show, but you have a whole bunch and people can come check them out on your YouTube channel. Right?

46:38 Corey Schafer: Yeah, yeah, definitely.

46:39 Michael Kennedy: All right, so in the last bit of time that we got I think I want to talk a little bit about some of the mechanics of just being successful on YouTube. So you touched on a few things like how to, you have to enjoy it, you can't just go in there for money, you talked about how it took a long time before you saw any success. And I think one of the things that is as human beings, especially people who are human beings who are excited about a thing you're about to embark upon it's really hard to understand the non linearity of these types of things, right? Like you worked on your channel for a long time before it started to see growth. I worked on the podcast for a long time before it was anything that would reasonably put my daughters through college. But then, then it does, right? But it's, you almost got to have this like irrational belief that if I just, I'm not there yet, I know it's been six months but like yeah, we're going to be way more than 10 dollars next month, I promise. Right, and so an interesting thing. So you do have to enjoy it and basically you have to do it anyway, it's like I would do this anyway, hopefully people enjoy it, right?

47:45 Corey Schafer: Yeah, exactly.

47:46 Michael Kennedy: Yeah, so what other advice you have?

47:47 Corey Schafer: Yeah, I'd say that's the biggest piece of advice. As far as YouTube and teaching in general, so first of all, yeah, like we were saying you have to have patience. But you also have to have some consistency, so but you also don't want to be tied down by that consistency, so like for example, if you get on and look up YouTube advice on how to be a successful YouTuber for example one of the top things you always see is to be consistent. So like a lot of people like to put out like a weekly show, like okay, every Wednesday I'm going to release a video. And I think that's great advice and definitely I wouldn't say not to do that, but also don't be afraid to break away from advice like that as well, because I try to be consistent in terms of releasing a week or every other week, but I'm not tied to that so much to where I sacrifice the content. So if you have like a deadline coming up and it's like okay well I told people I would put this out, but the content's really not that good, then I would sacrifice the deadlines to make the content better, because the content's really the most important thing, you want to put out something that you're proud of, that you think is going to actually teach people and just some, quick video that no one's really going to care about just to meet a self-imposed deadline. So yeah I'd say for blogs and for YouTube or any kind of teaching or any kind of content creation, content should be the first and foremost thing that you think about whenever you put stuff out.

49:13 Michael Kennedy: Yeah, that's really interesting, I think it's good advice. You and Dan Bader had an open session at PyCon covering some of these ideas and I was hoping I could make it but I was at my booth doing my booth thing, so I couldn't go but you said you learned some interesting stuff there, what was that like?

49:30 Corey Schafer: Yeah, so that was an awesome experience for me because this was my first year at PyCon and usually when I do these videos I'm just behind the computer, I'm not like interacting with creators all the time, other creators, and so that was a really cool session in terms of just bouncing ideas off of each other and it was interesting too because it's the first time that I've actually been included in something like that because whenever I was learning Python I was like Al Swaggart was there, he's the one who wrote Automate the Boring Stuff and like Trey Hunter has given a bunch of PyCon talks, so it's just kind of interesting being in that group and some people asking questions like oh well what do you think about this? And it's just kind of interesting in terms of being kind of yeah, included in that for now. But yeah, we bounced some ideas off of each other in terms of a lot of people were saying that they were basically saying that they use email lists a lot, so that's one thing that I'm kind of lacking on is setting up a good emailing list because that's something that you can kind of take anywhere, anywhere that you go. So if YouTube was to fall through and I have to move to a different platform then that email list is still something that stays with you and you can always email out all of your followers and say hey, I'm not doing this anymore, I'm going here, so you kind of have an audience that can follow you around. So yeah, bouncing ideas like that off of each other was a great way to learn different techniques and different streaming services and how other people are doing things. So yeah, I thought it was extremely useful.

50:58 Michael Kennedy: That's really cool, I definitely want to double down on that like I think the sort of email list side of things and that kind of stuff is very much the iceberg of success for a lot of these things and the stuff that you don't actually see, the people are like well that person is crazy successful about it, but you don't actually see how it is. There probably is some sort of email list involved. I have some for the podcast and some for the training and it's the relative value, I would say like I would trade 20,000 Twitter followers for 2,000 email people who actually want to be there. Like it's just at least that much of a difference.

51:35 Corey Schafer: Yeah, 'cause that's people who have gone out of their way to actually taken the time to subscribe. It's so much easier to just get on Twitter and hit follow, but yeah, there's so many of those people who won't get the message that you're trying to send through, so yeah, having a core audience of people who, really listen to the things that you send out is definitely, definitely useful to have.

51:54 Michael Kennedy: Yeah and I just want to say thanks to everybody who's subscribed to my list, so subscribed to the podcast, and I know you feel the same way about your YouTube subscribers, right?

52:01 Corey Schafer: Yeah, that's definitely the only reason that I, that we can do it full time for sure.

52:07 Michael Kennedy: Yeah, for sure. So YouTube can be a tough place to sort of put yourself out there, it's like 99% of the people are really friendly and super supportive and then other people, they'll think that you owe them some sort of consulting thing because you talked about something they're having a problem with or they can just be like outright mean, like have you had any of those experiences, I know that I have and other people who are doing similar stuff have.

52:32 Corey Schafer: Yeah, but so like you said, it's yeah, probably a little over more 99, the 99% who are completely positive, and then you're going to have that, that less than 1% who definitely kind of give you a hard time. And I, yeah, I've run into that, it's one thing that you kind of have to, I actually thought it was going to be worse before I started doing it, so it was because I look at, news channels on YouTube and stuff like that, if you look in the comments section of channels like that it's just a complete, dumpster fire, it's terrible. But in this community it's been fantastic. a lot of people were supportive, and other creators even support other creators, so it's not like we look at each other as competitors, I've had, I've recommended other people's YouTube channels whenever I don't really haven't covered a subject yet and they've done the same, I've seen people who have YouTube channels who link to my videos and yeah, so it's for the most part very supportive, but yeah, that's just like anything on social media these days, you kind of have to have slightly thick of a skin to ignore that 1% 'cause those are definitely the ones that kind of stick with you and sting for a while, but.

53:43 Michael Kennedy: Exactly, you could have a 100 great comments and then one super mean one and somehow that is the takeaway that you take from those messages, but I find that I've gotten to the point where I have definitely not thick skin in general as a person, but over the last few years I definitely have built it up and it's fine. But I just wanted to kind of touch on that a little bit for anyone else who's out there is thinking about it, just let it roll of, it's not, you're helping most of the people, there's a few people that get upset and whatever.

54:13 Corey Schafer: Yeah, exactly, and that's, and that's, these days I don't even take it personally, I think those people would be upset no matter what the content is, I think some people are just looking for an outlet and they kind of forget that there's another person on the other side of the computer and so they kind of use it as their own little punching bag to get on there and say whatever they want to say. So but yeah, it used to bother me more than it did, but after doing it for a while you just got to, yeah, let it roll off.

54:37 Michael Kennedy: Yeah, I'll give you one real quick example just so people kind of get a sense. I have two mongodb courses, one of 'em is eight hours and we talked about how much work that is, one of 'em is two and a half hours and it's not like a copy of the other course, it's totally different, and I did that from scratch, and it took me almost a month of just work to make that free course that I gave away,? And one of the first comments was well why won't you just give us the full course, this is crap. I'm just like are you kidding, I spent a full month of my life making zero income to make this for people like you, you don't have to love it but please come on, don't like go out and publicly berate it, right? But that kind of stuff, hundreds of people loved it, thousands of people loved it, but that one person still kind of bugs me. So you just got to get like to the point where like yeah it doesn't bug me.

55:24 Corey Schafer: Yeah, stuff like that there's, there's a lot of stuff out there that's yeah, just not really offered as constructive criticism. I mean I get a lot of constructive criticism and I kind of like that, I like whenever people are nice and they say hey why don't you, I couldn't really watch this, on some of my older videos they were like, this looks great but I wish you would've made the text larger 'cause I can't see, so now stuff like that really helps because then I can make better stuff. But yeah, there's a lot of out there that's not really meant to be constructive. I think the other day I had let's see, one of kind stuck with me is one of the earlier videos I did, somebody was like man this guy's Southern accent is so bad, why would anybody watch this, watch this all the way through? And so I was kind of thinking about that, like man, maybe everybody's going to think that, but no, it's 99.9% positive, so yeah.

56:10 Michael Kennedy: Yeah, yeah, yeah, absolutely, absolutely. All right, so I guess I don't have enough experience with this side of things, but maybe people out there might be interested. So share as much or as little about this as you want. Tell me like I don't want to answer this. But you talked about in the first couple of years you only made like 100 dollars a month or something like that, and then it became enough that it could be a job. Like what level of subscribers and views and like how frequently do you have to put stuff out where it's like okay, I could reasonably call this my job if I did that. Like what's the bar for people to aim for if they wanted to do something like that I guess is what I'm asking.

56:47 Corey Schafer: That is a tough question to answer because it's so, it's very, it's different for every person. So like for me personally I was able to, I think I quit my job as soon as I reached 100,000 subscribers, but sometimes people will have more subscribers with less views and sometimes they'll have more views with less subscribers, so it's kind of hard to, kind of hard to say exactly, the number of subscribers there. But one thing I will say is as I was going through the process, let's see I think, I probably was able to quit whenever I was getting about 600,000 views per month and YouTube has all those analytics for people, YouTube's great with analytics in terms of telling you your demographic and when people stop watching your videos and how many people are watching your videos and where they're being found from, whether they're being found in search results or external Urls. So yeah, that's about the time I could quit my job and actually trying to move over to different sources of income as well. So I'd say right now and I just made a video about this the other day, but I think right now I'm making about 95% of my income from YouTube advertisements, so when people go to watch a video YouTube plays an ad before the video and then the creator gets a chunk of that money. But really I would like to build up the fan funding section to where it makes up the majority of my income, sites like Patreon, I know that you have a Patreon for Talk Python. And that's, I've never experimented with Kickstarter, I know you've done some Kickstarter things that. So basically for people who don't know the difference between Patreon and Kickstarter is that Kickstarter is really meant to fund like one single project and you have, a goal that you're trying to reach and Patreon is more monthly contributions to an ongoing project, so for people who are making consistent content like Talk Python, people can just support that on a monthly basis. So I would really like to build up the fan funding section of the income more so that, so that I would not have to rely as much on YouTube, 'cause like I was saying before in terms of having an email list where people can follow you to any platform that's kind of the same concept with fan funding. Like if I was to go from YouTube to something like Twitch and start doing more live streams through something like Twitch then I wouldn't have to worry that I was losing that YouTube income if I had the majority coming from fan funding. So then you can just be, those are the only people that you, are really looking out for or the people who are actually paying for your content and worrying less about advertisers and sponsors and stuff like that.

59:26 Michael Kennedy: Yeah, that's really interesting. I think it's a good path for where you are and where you're going, it seems, it seems like a great way to connect with people. I don't push my Patreon stuff that much because if somebody supports the podcast by donating one dollar a week that's about 50 dollars or if they could buy one class a year that's also about 50 dollars and if they buy the class then they get something extra, whereas the Patreon they kind of, there's not, I don't really have any perks there, so I don't push that super hard, but the multiple angles of staying in touch, the multiple ways that you can interact with people and help them and they can give back definitely is worth pursuing.

01:00:05 Corey Schafer: Yeah exactly.

01:00:06 Michael Kennedy: All right, well Corey this has been super interesting and I think we're just about out of time here. So let me ask you the final two questions. So if you're going to write some Python code what editor do you use? Although we could get a YouTube channel and discover this probably, but go ahead and talk to me.

01:00:21 Corey Schafer: That's probably the most common question that I get in my comments section is what editor I'm using in the videos. So I'm using, I have a few videos where I set up different development environments, but the one that I'm actually using the most is Sublime Text. So and that's, I didn't choose Sublime Text, for any reason, other than the fact that it is very minimalist and it doesn't have any bells and whistles getting in the way and that makes it good for recording videos because then people can just focus on the actual code instead of seeing all these extra options off to the side. I think that PyCharm might have something like that in a presentation mode, but I Sublime Text is working for me so well right now that I haven't taken the time to check out other IDEs that might be useful, but I've heard great things about PyCharm too though.

01:01:11 Michael Kennedy: Yeah, very nice, yeah definitely Sublime Text is great. And then notable PyPI package.

01:01:15 Corey Schafer: Yeah, I think the package I probably use most often is SQLAlchemy and that's basically just because, it's hard to touch any application these days that doesn't have some kind of database in the back end, even if that's a desktop application you might be using SQLite on the file system or a web application you'll be doing, maybe a Postgres in the background, and yeah, SQLAlchemy is great because it gives you this, something that you can interact with and even switch databases around, you can use SQLite for development and then go to Postgres for production and all of that code just stays the same that you've written for SQLAlchemy so that's definitely the one I think I use most often.

01:01:57 Michael Kennedy: Yeah, that's a really nice one and the ability to just change the connection string for production to development and maybe even have a totally different database like you said it's really great. So I've been recently been playing with Alembic, have you been playing with that?

01:02:12 Corey Schafer: Alimbic, is that, I don't think I have used that.

01:02:13 Michael Kennedy: It comes from Mike Bayer as well and it ingreates with SQLAlchemy to do migrations. So as your class schema changes you can just say apply these changes to upgrade my database in production or in staging as the change is rolling, it's really nice.

01:02:29 Corey Schafer: Okay, yeah that's right, I have actually used that on one project and yeah, that is a nice, a nice addition to SQLAlchemy as well.

01:02:35 Michael Kennedy: Yeah I like those together. All right, so final call to action, I know lots of people out there are like I would love to do something kind of like this, but what would you say to them?

01:02:46 Corey Schafer: Basically I would just say to just to get started, if you want to do something like that just start keeping notes about what you want to present to people, what you want to start creating, and then you can just slowly roll it out. a lot of people feel like they have to have this big production set up before they even do their very first, attempt at something like this, but really, you can just if you're doing a blog you can just get on and write up your blog in a text editor and put it out to a site like GitHub Pages or something like that or if you're making videos, as long as you have, you can buy a cheap microphone for about 20 dollars, the first videos I did I didn't even have a microphone, so it was just recorded off my computer. And people don't mind that stuff as much as you think they would, so yeah, just getting started and getting your foot in the door with stuff like that is the best way to go.

01:03:37 Michael Kennedy: Yeah, that's awesome, I started the podcast with a $55 dollar microphone and $5 worth of software, so.

01:03:43 Corey Schafer: Yeah, yeah. Yeah, so it's as complicated as what a lot of people make it out to be, it's just, just getting that first step, taking that first step and just doing it.

01:03:53 Michael Kennedy: I have one other thing to throw out there for people to sort of follow on with that is we live in a world where there are no longer gatekeepers, right? Like who did you ask permission to start your YouTube channel from?

01:04:05 Corey Schafer: Oh yeah, exactly, yeah, yeah, there's nobody.

01:04:07 Michael Kennedy: Nobody, right?

01:04:08 Corey Schafer: Nobody that you have to check with, yeah.

01:04:10 Michael Kennedy: Yeah, same here, and so many of the people who are doing stuff like us, they just decided I'm just going to do this, and a lot of people sort of see, tend to think it's sort of under, an undertone in their thinking not super obvious, but they feel like I've got to get to some stage where people will accept me, where people are going to kind of like I'm good enough that some channel or some platform will accept me to do my work. Not really, just got to go out there and get started, and there's no gatekeepers, it's up to you, go into it.

01:04:39 Corey Schafer: Yeah, I think that's great advice.

01:04:40 Michael Kennedy: Yeah. All right, Corey thanks for being on the show, this is really awesome and super congratulations on going fulltime on this, that's amazing.

01:04:47 Corey Schafer: Yeah, thanks a lot, I really appreciate you having me on, I have listened to your podcast since probably the first episode and I never thought I would actually be on it so it's really cool to be on here, so.

01:04:57 Michael Kennedy: That's really awesome, well I'm happy to have you. This is cool stuff you're doing. So happy to share it. Take care.

01:05:03 Corey Schafer: All right, take care, thanks a lot.

01:05:05 Michael Kennedy: This has been another episode of Talk Python To Me. Our guest this week was Corey Schafer and this episode has been brought to you by Datadog and Rollbar. Datadog gives you visibility into the whole system running your code. Visit and see what you've been missing. They'll even throw in a free T-shirt for doing the tutorial. Rollbar takes the pain out of errors. They give you the context insight you need to quickly locate and fix errors that might have gone unnoticed until your users complain of course. As Talk Python To Me listeners track a ridiculous number of errors for free at Want to level up your Python? If you're just getting started try my Python Jumpstart by Building 10 apps or our brand new 100 Days of Code in Python. And if you're interested in more than one course be sure to check out the everything bundle. It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite pod catcher and search for Python, we should be right at the top. You can also find iTunes feed at /itunes, Google Play feed at /play, indirect RSS feed at /rss on This is your host, Michael Kennedy, thanks so much for listening, I really appreciate it. Now get out there and write some Python code.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon