Learn Python with Talk Python's 270 hours of courses

#169: Becoming a Python content creator Transcript

Recorded on Friday, Jun 29, 2018.

00:00 Corey Schaefer has been building his YouTube channel of tutorials for many years.

00:03 He recently has made the big shift from taking this hobby project and making it his full-time job.

00:09 You'll hear about how Corey made that transition, what it takes to go pro,

00:13 and even a little bit about the similarities between my work with Talk Python and his projects.

00:18 This is Talk Python to Me, episode 169, recorded June 29, 2018.

00:24 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.

00:44 This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy.

00:48 Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via at Talk Python.

00:55 Corey, welcome to Talk Python.

00:57 Hey, thanks for having me.

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

01:03 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 It's going to be an exciting ride for you, I know. You've been doing it for quite a while, and it's picking up speed.

01:14 That's awesome, and we're totally going to dig into those sorts of things,

01:17 but before we get to them, of course, let's hear your story. How did you get into programming in Python?

01:21 So I got into programming probably a little bit later than most people that you talk to.

01:25 I really started out, I went to Marshall University for computer science,

01:32 and really that was one of my first exposures to computer science and programming in general.

01:36 And I kind of just went and just chose a major.

01:39 My dad was a computer programmer, so I chose that.

01:41 But for the first few years there, I wasn't too passionate about it right off the bat.

01:45 And it wasn't until kind of towards the end of my college career, I got an internship down at Kennedy Space Center in Florida.

01:52 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.

01:59 So whenever I went back from my last semester of college, I was really into it,

02:03 and that's when I started doing most of my self-study and doing my own applications and things like that.

02:07 That sounds so exciting.

02:08 Like Kennedy Space Center, that is really cool.

02:11 First few years I was born, like a few miles from that place, and I lived there.

02:15 And it just seems like such a special place in both the tech science world and sort of in history in general.

02:22 What was it like to work there?

02:23 It was great, yeah.

02:24 It was an amazing place.

02:26 Even if you weren't doing programming, it was just an amazing place in general

02:29 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.

02:36 So I got to see a few launches, which was one of the coolest things I've ever seen in my life.

02:40 And, yeah, and even just driving through the Space Center, seeing all the history, you can go to the old launch pads,

02:45 and they're kind of – some of them are grown over with weeds and stuff now,

02:49 but it's kind of neat to see where all this history was built.

02:52 So, yeah, it was an awesome place to work.

02:53 One of the things that kind of motivated me whenever I worked down there was, you know,

02:57 I'd always put it on a pedestal in terms of people that can work there, which is true.

03:03 I mean, you definitely have some of the smartest people walking around there, but at the same time,

03:08 there's also so many average people there too who have just got there from studying over the years.

03:13 And that kind of rubbed off on me that, you know, there's no reason I can't be here too

03:17 if I start going and putting some effort into this stuff.

03:21 Yeah, that's a really awesome lesson.

03:23 I think that's a great lesson that, you know, a lot of people learn at different stages in life that, like,

03:29 wait a minute, this seems so high level and so impossible, but I see a bunch of sort of normal people that just worked really hard.

03:36 I could do that, right?

03:37 That's a great takeaway, I think.

03:39 Yeah, awesome.

03:40 So what kind of programming did you do there?

03:42 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.

03:50 It was a lot of, and also I got, it was just an internship, so also I was getting, they used Linux systems,

03:56 and that's one of the first times I'd use Linux.

03:57 So I 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.

04:03 I think we were parsing some XML files and things like that, but yeah, nothing too complicated.

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

04:11 Learned a lot when I was there, though.

04:12 Yeah, that's awesome.

04:12 So that experience sort of inspired you to like, hey, this programming thing is actually pretty awesome.

04:18 I'm getting into it more.

04:19 Yeah, yeah, exactly.

04:20 So yeah, whenever I got back from there, I had one semester left in college, and then after I graduated college,

04:26 that's whenever I got my first programming job.

04:28 Probably spent a couple years doing some stuff that wasn't necessarily things that, you know, knowledge that lasts too long.

04:36 Like, for example, for a couple years, I was doing Adobe Flex programming.

04:40 I don't think Adobe Flex is even around anymore.

04:42 That was basically to build Adobe Flash applications.

04:45 There was a time where that was like, you could get some seriously good consulting jobs, like at the early stages of interactive web.

04:54 What is that, like 96, 97, 98 type frame?

04:58 Gosh, that was not that long ago.

05:00 I caught it on the very tail end of when JavaScript kind of replaced it.

05:05 So it was probably around 2010, yeah.

05:07 Okay, cool.

05:08 Yeah, so only about eight years ago.

05:10 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.

05:17 So I got a full-time job as a front-end developer doing JavaScript programming, doing GIS web applications and mapping applications.

05:25 And that was at West Virginia University in Morgantown, West Virginia.

05:30 And from there, that's when I also got exposed to Python.

05:32 We were building some back-end scripts using Python.

05:36 And so that's whenever I wrote my first Python scripts.

05:39 And so that was probably only about five years ago that I started doing that.

05:43 And, yeah, I kind of fell in love with it.

05:45 That's, I started, you know, compared to JavaScript, I was looking at Python.

05:49 And I was like, man, this is a language that I can use to write scripts that move files around in my file system.

05:55 Or I can write desktop applications or command line applications.

05:58 And back in, there's just so much.

06:01 It's such a broad language and so much that there is to tackle with it.

06:05 Yeah, that's one of the great things.

06:06 It's so broad, right?

06:07 Yeah, exactly.

06:08 Yeah, for sure.

06:08 Awesome.

06:09 And so you have what I would consider a slightly unusual job that you're doing day to day.

06:16 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 So, yeah, about whenever I started learning Python about four or five years ago, that's whenever I started making YouTube videos.

06:26 And it kind of sounds counterintuitive to say that I was making videos on Python while I was learning Python.

06:33 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.

06:40 I would just keep notes of any time I was learning something.

06:43 If it wasn't exactly clear to me, then I would go back after I learned it and say, OK, well, why wasn't I understanding this when I went through it first?

06:52 And is there a way that it could have been explained to me that would have made me understand it faster?

06:56 So that's how I started making my first videos.

06:59 And, yeah, so I've been doing those videos for about four years now.

07:04 And I got a full time job working with Python out at the University of Colorado Boulder for about the past three years.

07:10 And I was making videos pretty much the whole time on the weekends.

07:12 And for the first couple of years, it wasn't it was basically just a passion project.

07:17 It was stuff that I was doing and not making any money with it at all.

07:20 I think after the first two years, I was looking at my earnings.

07:23 I was making like less than a dollar a day after two years.

07:26 So it definitely wasn't a money making scheme at the time.

07:28 But, yeah.

07:30 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 full time.

07:39 And a couple of months ago, I was able to do that.

07:42 So, yeah.

07:42 So, yeah.

07:43 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.

07:48 And because 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.

07:56 And be able to know where you picked up or picked off and stuff like that.

08:01 So, yeah.

08:01 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.

08:09 That is awesome.

08:10 Yeah.

08:10 Yeah.

08:11 So, yeah.

08:11 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.

08:20 So, that's 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.

08:28 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.

08:34 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:44 Man, I was just juggling taxes earlier.

08:47 I can very much relate.

08:49 First of all, congratulations.

08:51 That's an awesome move.

08:52 Yeah.

08:52 Thank you.

08:52 Yeah.

08:53 Yeah.

08:53 It's been great so far.

08:54 I'm sure you're really, really happy about it.

08:56 I think this transition that you're talking about here is really tricky for people with computer science degrees or this sort of developer training because nobody teaches you about marketing, accounting, about business structures, about like all this stuff.

09:09 You're like, wait a minute.

09:10 How do I have a retirement account again when I don't have a company that gives me the 401k, right?

09:15 Like, oh, yeah.

09:15 A self-employed person, Ira.

09:17 That's apparently a thing I need to learn about.

09:19 So, you know, sort of what's that experience been like?

09:23 That's probably been the hardest thing, yeah, in terms of just learning how to get the information out there.

09:28 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.

09:37 And if it's good enough, a lot of it's been kind of free marketing from other people.

09:41 So, you know, 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.

09:49 People posting posts on Reddit, and, you know, one of those going popular will bring in a couple thousand people here and there.

09:55 And, yeah, so just stuff like that has really helped with marketing in terms of people just sharing the content online.

10:01 As far as self-marketing, it's – yeah, that's been hard because I'm not a very good designer in terms of, you know, designing images for my courses and things like that.

10:10 So that's been a lot of self-study just going through other online courses and learning 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 Yeah, and I feel like coming from the tech space that marketing feels a little dirty, almost shady, right?

10:31 You're like, I don't really want to do marketing.

10:32 Yuck.

10:32 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.

10:43 I'm trying to spread the word about this stuff, but I have to go through these steps or nobody will come, right?

10:47 It's not like the field of dreams.

10:49 That would be lovely.

10:50 But it really is, right?

10:51 Yeah, that's been one of the hardest things is, you know, some people are so good at selling themselves and, you know, saying, you know, if you take this course, it's the best course out there.

11:00 Trust me, and stuff like that.

11:01 And it's been hard for me to kind of push stuff like that.

11:05 Yeah, and I find, honestly, like a lot of times it's not, which is really rough, right?

11:09 So you feel like, well, if I do the same thing, I'm going to be grouped in the same category.

11:13 So it's a hard balance to strike.

11:15 So I want to run an analogy by you with your NASA background and what you've just gone through.

11:21 So people ask me sometimes, like, how do you get into these places, right?

11:25 Like, I'm doing full-time my podcast and the courses, and you're kind of doing a parallel path in YouTube.

11:31 And the story is very much the same.

11:34 Like, I started the podcast, and I would record from 9 p.m. to 10 p.m.

11:38 And then do the editing until 1 a.m.

11:40 And then wake up and go back to work or do it on the weekends.

11:42 You know, just squeeze it in whenever you can.

11:44 And at some point, it gets good enough that you can actually put more of your time into just that, right?

11:51 And so I think a good analogy for people who are thinking about these types of things is when a rocket takes off, you know, they talk about max Q, right?

11:59 You familiar with max Q?

12:00 I don't think so.

12:01 What is that exactly?

12:02 So max Q is the concept where when the rocket is taking off, it's accelerating faster and faster.

12:08 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 Oh, okay, yeah.

12:15 And as it's trying to break free, it gets harder and harder.

12:17 It has to actually slow down.

12:18 Like, they throttle down the engines for, like, a few seconds after, like, one minute.

12:21 And then it kind of breaks through that, and it, like, takes off again.

12:24 And so going through these processes is very much, I like this max Q.

12:28 Like, the more successful that you get and you still have your job, the more work you've got to, like, double down.

12:34 And it just gets harder and harder and harder until you get to the point where you can, like, break through that.

12:37 And you're like, okay, now I can focus on the one thing.

12:40 And the pressure, at least, of, like, trying to juggle everything lets up.

12:43 Yeah, yeah.

12:44 I think that's a great analogy.

12:45 Yeah, that's, I'd say the hardest part of this whole transition was probably the last six months of work where I saw the goal line of almost being there in terms of being able to do it full time.

12:57 And it felt like I needed, you know, a few more good courses to put out there.

13:00 But, yeah, it was just a lot of work there combined with the work that I was doing full time.

13:05 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 Yeah, and probably, I don't know about you, but that last couple months when you sort of decided, but you're not quite ready, the motivation to keep doing your regular job well is hard to keep there, yeah?

13:23 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.

13:28 And, you know, you're kind of out the door.

13:29 It's really hard.

13:30 So I do want to dig into some of your lessons and series and stuff, and we'll spend a lot of time on that.

13:36 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, you know, sort of trying to teach people in the software development field and in open source and stuff.

13:50 What went right?

13:51 What went wrong?

13:52 Like, what advice do you have for people?

13:53 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.

14:01 Because, like I was saying before, I've had a lot of people contact me just about, you know, kind of as the money.

14:08 They say, hey, can I do this and make a lot of money doing this?

14:11 I would love to.

14:11 And you definitely can after some time.

14:14 And I'm sure it's different for every person.

14:15 But for me especially, if I was just doing it to make a living and just doing it to make money,

14:21 I would have definitely given up in the first two years just because, like I was saying, I was making less than a dollar a day after two years.

14:26 So if it was all about the money, then I would have, yeah, definitely given up way before it was actually started bringing in anything.

14:33 So the first thing I would say is that it just has to be something that you actually enjoy doing and something that you probably would be doing in your free time anyway.

14:41 And I really liked doing the videos and I liked the feedback that I was getting.

14:44 So it was more about that than making money in the first place.

14:48 So that would be my first piece of advice is just that, yeah, it has to be something that you're basically going to be doing anyways.

14:55 So whether that's an open source project or a blog or, you know, making videos, anything like that.

15:00 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?

15:08 Yeah, yeah.

15:10 If you're not going to love it anyway.

15:11 Yeah.

15:12 Other than that, if it's about if people are looking into getting into teaching specifically, one thing that I've kind of learned over the years that and it's kind of evolved, too, in terms of how good you are at it.

15:24 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.

15:30 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.

15:37 And that can be harder than people think.

15:39 Because, you know, if you have all this experience and all this knowledge, it can be hard to actually, you know, remember what it's like to see this for the first time.

15:46 And it's easy to skip over a lot of stuff and and not anticipate what kind of questions people ask or where people get tripped up.

15:52 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 of learning something for the first time.

16:01 I think that is super undervalued.

16:04 And you talked about how it was kind of counterintuitive that, hey, as I'm learning Python, I'm actually creating the videos.

16:10 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.

16:16 But I know I can talk about these things.

16:19 So why don't I just do that and, like, you know, see how it goes.

16:22 Right.

16:22 But I think this starting earlier in that process actually lets you connect with your students a little bit more.

16:30 You're like, yeah, just last week, I couldn't get this thing to install.

16:33 And here's what I actually had to do to make it work rather than, of course, you just, you know, do these other these few commands and it works.

16:38 Right.

16:38 So you're just you know, you're you're sort of the pain is more recent.

16:42 And so you can help people.

16:44 You can sort of have a little better empathy, I think.

16:46 Yeah.

16:46 And I think that's great advice, too, is not to be worried about putting yourself out there.

16:49 It's hard.

16:50 That's a hard stepping stone to get over.

16:51 I definitely had that also.

16:52 I definitely was making videos worried that I would get questions about things that I knew nothing about.

16:57 And 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:05 Yeah, absolutely.

17:09 This portion of Talk Python to Me was brought to you by Datadog.

17:12 Get insights into your Python applications and infrastructures with Datadog's fully integrated platform.

17:18 Debug and optimize your code by tracing requests across web servers, databases and services in your environment.

17:25 Then correlate and pivot between distributed request traces, metrics and logs to troubleshoot issues without switching tools or context.

17:32 Get started today with a 14 day trial and Datadog will send you a free T-shirt.

17:37 Visit talkpython.fm/Datadog for more details.

17:40 Let's talk about some of your video series that you have going on.

17:45 Like you said, you have four years of videos and I didn't count, but it's many pages of little thumbnails.

17:50 So it's quite the set of series and stuff that you put out there.

17:54 And of course, we'll link to your YouTube channel.

17:55 But let's talk about some of the series that you put together that you liked and we'll dig into them a bit.

18:01 Okay, great.

18:02 Yeah, sounds good.

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

18:04 The most popular series on the channel right now is probably my object oriented series.

18:09 I think that's my most popular video.

18:11 I'm not sure how many views that has right now, but it's above all the other ones.

18:15 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.

18:23 So, for example, we show a lot of real world applications for what you're learning in that course.

18:29 And by real world applications, it's not something that I put together that's a real world example.

18:33 It's really actual code like in the standard library.

18:37 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.

18:45 And so we'll open up the daytime 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.

18:58 So, you know, date times can be created by the default way as just saying, okay, I want a date that is the year, month, day.

19:03 But you can also do, usually they start with like a from keyword.

19:07 So from timestamp or something like that.

19:10 So there's multiple ways to create a daytime object.

19:12 And those are all class methods.

19:13 So we open up the standard library, look through there and say, okay, well, here is a class method and here's how date time is using it.

19:19 And this is, and it's doing basically exactly what we just learned in the course.

19:23 And that kind of gives people confidence that, you know, there's millions of people using this code and the daytime module.

19:29 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 Yeah, that's cool.

19:35 Certainly digging into the standard library code is a neat way of doing it.

19:39 You know that it's been optimized for performance.

19:42 It's been, like you said, used by countless numbers of people.

19:46 It's pretty interesting.

19:47 I think certainly class methods and static methods are, they're interesting in that they're almost the same, but not exactly the same.

19:55 And so it's like, well, why would I use a static method over a class method?

19:59 Do you have any thoughts on this?

20:01 So a static method, yeah, static methods can be a little confusing because static methods don't take self or the instance or the class as an argument.

20:10 They're basically, they're basically just regular functions.

20:13 And so people don't really, so they have nothing really to do with like the instance or the class.

20:18 It's really just, it could be a separate function almost.

20:22 And people don't really know when to use static methods.

20:23 But it's, 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.

20:31 So like the example that I use in the, in the series is we're building like an employee object.

20:36 And I'll say, okay, well, you might have like an is workday method, like to check, to pass in a date and see if that is a workday or, you know, something like that.

20:45 So checking if something is a workday, it doesn't actually work on the employee instance or the class itself.

20:51 It could be a separate function altogether.

20:53 But it's kind of related to that, to that object in a way that it might be some functionality that you want to pass on whenever somebody input, imports your class that you created.

21:01 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.

21:08 And yeah, the class methods are basically it's, you're working instead of passing in the instance, like a regular method, you're working on the class itself.

21:16 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 instructors where you can take in different arguments and then return that class with an instance of a newly created class.

21:29 That's right.

21:30 Almost like a factory method.

21:32 Like if you're going to allocate an instance of that class in the class method, you need to know that it's not.

21:38 If you derive from it, then you want to create the derived thing, not the other thing.

21:43 But the fact that the class, the CLS thing is passed in, you could just sort of, you know, call that and get to the constructor.

21:48 Yeah, exactly.

21:49 Yeah.

21:49 Pretty interesting.

21:50 Yeah.

21:51 Okay.

21:51 So what else do you cover in the object oriented series?

21:53 So we also do inheritance.

21:54 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.

22:01 So I never knew how to pronounce.

22:03 I never have actually heard this spoken out loud, but the work zoo library, the one that.

22:08 It ships with a dependency of flask.

22:10 Uh-huh.

22:10 So yeah, we, we, we look in there and we take a look at their HTTP exceptions.

22:15 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.

22:25 And then each higher level exception, like a 404 not found or a 500 internal error, they all inherit from that base HTTP exception.

22:33 So they get all of that code for reuse.

22:36 And then basically they just change like the status code in the method or in the message.

22:41 So it's a, it's kind of a neat way of seeing how a real world library is actually using this efficiently.

22:49 That's a really great example.

22:50 And I think that's one of the places where inheritance makes tons of sense in Python.

22:55 I'm, 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 used for like grouping common behaviors.

23:04 And we could just as well do that in a module with some module level functions or variables, just as, you know, much say like a class with a bunch of static methods, right?

23:14 They're kind of almost equivalent.

23:16 It's just different ways, ways of thinking, but around exceptions, like it really makes a big difference, right?

23:21 Because in your accept various type, you use the inheritance to drive your error handling basically.

23:28 Yeah, exactly.

23:29 Yeah.

23:29 So I really like that.

23:30 That's awesome.

23:31 Another one that I think is probably really popular in, in your set of videos is Python for beginners.

23:36 Like we all want to, you know, maybe write the most advanced, like deep look inside of this aspect of saying like an ORM or something.

23:43 But the truth is most people are just getting into Python.

23:47 Like it's a growing field.

23:48 So most people are coming into it.

23:50 They're not looking for like that super internal deep dive thing.

23:53 Right.

23:54 So this beginner series is probably pretty popular.

23:56 Yeah.

23:56 The beginner series.

23:57 I think that's my second most popular series on the channel behind the object oriented.

24:01 And it's kind of funny because 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, you know, I thought that other tutorials were kind of lacking in and things like that.

24:16 And there's so many good Python beginner series is out there that I wasn't really going to tackle that.

24:22 And not only on YouTube, but just kind of everywhere.

24:25 There's some great resources for learning Python.

24:27 But I think a lot of people will, you know, just kind of get used to a specific instructor.

24:32 And they, you know, even if you recommend a class elsewhere, they'll say, OK, well, you know, I'd really like, though, if you would teach it.

24:40 And so so I put one together and gave in after a couple of years.

24:43 And but, yeah, it's a popular course.

24:45 So we go over, you know, just basic installation and how to set the Python path on Mac and Windows and Linux and things.

24:51 That's where a lot of people get tripped up.

24:53 And also so we touch on basically the data, all the basic stuff, data types, loops and conditionals.

25:01 But once we get up to functions, we kind of try to tie all that back together.

25:05 And again, we pull up.

25:08 We basically write a function that that will check how many days are in a month given a year in a month.

25:15 And that's basically a function that's already written in the standard library.

25:18 I think that's in the calendar or calendar module.

25:21 Maybe I can't remember exactly.

25:22 But, yeah, we go through that and kind of learn or use everything that we learn to build up that function.

25:28 And then when it's all said and done, we can open up the standard library there and see, OK, well, we just basically wrote a function that that a lot of people use on a regular basis.

25:37 So so in that beginner series, I think it's really awesome that you actually start with import anti-gravity because that's both fun and instructive.

25:47 Like, wait a minute.

25:48 Why did importing a thing actually cause an action?

25:50 Isn't that more of a declaration and not a behavior?

25:53 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 and how to append to that path.

26:02 Or you can set the Python path in an environment variable.

26:05 And also, yeah, the import anti-gravity is one part in that series where we say, OK, well, we're importing this module and it does something cool.

26:13 It opens up our web browser.

26:14 Let me interrupt you just for a second, Corey.

26:16 Maybe not everyone has has actually typed import anti-gravity into their Python ripple.

26:22 So if you're listening and you could do that, stop for a second and type import anti-gravity inside the Python ripple.

26:27 If not, tell people what happened.

26:28 Yeah, basically, it's kind of an Easter egg in Python in the sense that it's not super useful, but it opens up your web browser and just kind of sends you to one of the XKCD comics that is kind of talking about a little comic about Python on there.

26:43 That's that's kind of funny.

26:45 So, yeah, it's super, super easy.

26:47 It's just import one line and then it opens up your browser and goes to that comic.

26:51 I think it's really instructful, though, because it's instructful because when you talk about things like the pattern for, you know, if Dunder name equal equal may under main then invoke this behavior like that stuff doesn't really register with people coming from something like C++ or C#.

27:07 You're like, wait a minute.

27:08 What is this weird construct at the end?

27:10 But this sort of going through 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.

27:21 It's like really it helps to break the paradigm that is incongruent with Python.

27:26 People come for this other languages.

27:28 Yeah, exactly.

27:28 Yeah.

27:29 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.

27:39 So if you want to, you know, see, OK, well, what is this module doing that?

27:43 I just, you know, it's opening my browser and opening this comic book.

27:46 But how is it doing that?

27:47 So then you can go into the standard library and just look at the anti-gravity file.

27:52 And it's basically two lines.

27:53 It just kind of imports the web browser and then, you know, uses web browser dot open on that comic.

27:59 And that kind of makes people feel like once they know how to look at that other people's code, they can say, OK, well, now, you know, now I've learned something here.

28:07 So now if I want to open up a web browser to my own web page, then this is how you do it.

28:12 So you can always dig deeper and look under the hood and see what's going on.

28:15 I think that's another really interesting thing with Python as well.

28:19 Yeah, that's a really cool way to kick things off.

28:21 What else do you talk about in that series?

28:22 After the so after we go through all the data types and conditionals and 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, you know, how to how to do basic things with the standard library, like work a little bit with dates and the random module and the math module.

28:39 After we do all that, it's kind of open ended after that.

28:43 So I end the series at a nine part series after we learn how to import.

28:47 And from there, I basically tell people, just like we were talking about before, how Python is such a broad language.

28:52 And after you learn those fundamentals, you can pretty much take it anywhere that you want.

28:57 So, you know, if like I didn't want to continue the series and, you know, teach them about file objects next, like it was the next, you know, obvious thing that people should learn.

29:07 Really, after that, they can you know, if they want to learn how to work with file objects and they can do that or if they want to learn to work with a database and they can do that.

29:14 So after that first nine videos, then it's kind of broken up to I kind of logically ordered the videos in a sense of what I think would be good to learn next.

29:23 But I tell them that from that point on, they can basically skip around and and learn whatever specific subject they want to learn about.

29:29 Yeah, that's one of the challenges of teaching Python is so many people use it for different things, right?

29:34 Like some people may be learning it for data science.

29:36 And so they want to learn all about, you know, that side of things.

29:39 Maybe you're learning for web.

29:41 So you got to learn about frameworks and databases.

29:43 Maybe you're learning it for DevOps.

29:44 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.

29:51 Like it's just like, you know, there's it's one of the real things that's making Python grow so fast is people coming from all these different disciplines.

29:59 But it's really interesting to see different ways of working with Python.

30:03 You know, you've got like the data scientists working with Jupyter Notebooks in this sort of exploratory fashion.

30:08 I've got the web developers building like really structured architectured things with unit tests and code coverage.

30:13 And it's kind of cool to have them all coexist.

30:16 Yeah, exactly.

30:17 That's also one of the challenge.

30:19 Yeah.

30:19 Like you were saying, one of the challenges with teaching Python, too, is, you know, whenever you say that, you know, Python, a lot of people kind of expect that you kind of know every aspect of Python.

30:28 But, yeah, there's just so much so much to cover that.

30:32 Yeah.

30:32 If somebody.

30:33 So, for example, my previous full time job, I was basically doing a lot of web service back end work.

30:40 So, that's kind of why I started with the Flask course as my first course that I put together whenever I first went full time.

30:46 But, yeah, and things like data science and machine learning are things that I want to cover in the future.

30:52 But those are things that, you know, I'm going to have to, you know, buff up on myself because there's just so much there.

30:58 And, yeah, so much to learn with it.

31:00 For sure.

31:00 I think that's an interesting segue to the next series that you put together.

31:04 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.

31:13 And I can just do this off the top of my head where it gets into the point of, like, you know, I've never actually dug into that aspect of what I'm trying to teach people or try to interview people about.

31:22 And it becomes quite the research project, right?

31:25 So, that was sort of the story with your Flask one, right?

31:27 Yeah, the Flask series was the first one that I put together after I went full time.

31:31 And I kind of made a mistake whenever I first did that because whenever I first quit, I kind of saw this huge chunk of free time.

31:40 And I was like, okay, well, now I can start working on large series.

31:43 But probably in hindsight, what I should have done is put together a lot of one-off videos that I could slowly release while I was working on that large series.

31:51 Because, you know, a lot of people had found out that I went full time.

31:55 But then it took me about a month of, you know, doing some research and putting together a blog that I thought, you know, had a lot of features that people would be looking for, like uploading profile pictures and an entire authentication system and setting password reset or email resets and stuff like that.

32:11 And so, yeah, it took me about a month to, you know, research that and record it and edit it.

32:16 And it came out to be about eight hours worth of content.

32:20 And, yeah, so, yeah, that was one series that it's pretty popular.

32:25 It kind of takes a Flask application and you can kind of see how an application like that will evolve over time.

32:30 So, we start out just by, you know, using the default Flask that you can get from the documentation, the hello world, and just in a single file.

32:39 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.

32:46 So, now we have to break it up into packages.

32:48 So, then we start using packages to simplify imports and things like that.

32:53 Oh, 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.

33:04 He does, I think he's been on the podcast before.

33:06 He does a great job with Flask applications.

33:09 And he has a mega Flask tutorial that he put together that's, you know, more advanced than even the series I did on it.

33:15 So, yeah, he does a great job with those.

33:16 Yeah, Miguel's series was really cool.

33:18 And I love the way that he sort of revamped it recently.

33:21 So, yeah, I think your Flask series is quite interesting.

33:25 And it's probably worth talking just a little bit about, like, how much time and energy does it take to put together one of these things?

33:32 So, you said it took for eight hours of published content.

33:36 It took you a month of full-time work.

33:38 That sounds about right to me.

33:40 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:50 And it really depends on what you're teaching, too.

33:53 I mean, 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.

34:00 You'll hear interviews with certain people who say that, you know, it took them forever to just write this one song.

34:06 And then a lot of people say that they just kind of sat down and it just started, you know, coming out and was everything kind of poured out in one session.

34:13 And it's kind of like that with this.

34:15 Like, sometimes it takes me longer to put some videos I can put together, you know, an hour.

34:21 And it just I can record it all on one take and get there in no time.

34:25 And then sometimes it just takes a while to get all these pieces together and make sure that I'm teaching it in a way to where I'm not, you know, repeating the same topics too much.

34:34 And that they're 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.

34:42 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, you know, I wanted the finished application to look nice so that people could have a nice application once they were done.

34:55 So a lot of that time went into, you know, relearning some JavaScript and CSS.

34:59 And that's not even stuff that we really touch on in the video.

35:02 It's just a code snippet that I hand out and say, well, you can use this for the CSS.

35:07 But even that took a while to put together just to make it look presentable.

35:10 So, yeah, a lot of work, a lot of hidden work goes in that a lot of people don't see there.

35:14 This portion of Talk Python to Me has been brought to you by Rollbar.

35:20 One of the frustrating things about being a developer is dealing with errors.

35:24 Relying on users to report errors, digging through log files, trying to debug issues, or getting millions of alerts just flooding your inbox and ruining your day.

35:33 With Rollbar's full stack error monitoring, you get the context, insight, and control you need to find and fix bugs faster.

35:40 Adding Rollbar to your Python app is as easy as pip install Rollbar.

35:44 You can start tracking production errors and deployments in eight minutes or less.

35:48 Are you considering self-hosting tools for security or compliance reasons?

35:52 Then you should really check out Rollbar's compliant SaaS option.

35:56 Get advanced security features and meet compliance without the hassle of self-hosting, including HIPAA, ISO 27001, Privacy Shield, and more.

36:05 They'd love to give you a demo.

36:06 Give Rollbar a try today.

36:08 Go to talkpython.fm/Rollbar and check them out.

36:13 Yeah, I agree.

36:14 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.

36:22 That happens because you're kind of swimming in these ideas and in these spaces where this is like all around you.

36:28 And then eventually it crystallizes in your mind.

36:30 You sit down and it comes out.

36:32 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 work on it, right?

36:41 Yeah, that's exactly right.

36:42 Yeah, you definitely have to know the subject well before you sit down and do that.

36:46 But yeah, that's – I'm sure you probably have the same thing with teaching courses.

36:49 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 will start again.

36:58 And then kind of whenever I'm actually ready to record it, I piece all those together into one finished course that finally comes out.

37:04 But yeah, just even piecing those small pieces together and setting down over time and writing those, it takes a long time if you were to actually add it up altogether.

37:11 Yeah, for sure.

37:12 I have a Google Doc that I think has 63 full course ideas in it, 63 different courses.

37:20 And I'll go back and I'll pull stuff out of there.

37:23 But people are suggesting interesting new courses to me faster than I can – that list is growing.

37:28 It's not shrinking even though I'm doing it all the time.

37:30 I guess one final thing to round that out.

37:33 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, right?

37:43 Like how can this be for 100 days?

37:45 I'm just like, you have no idea, man.

37:47 You have no idea.

37:48 You know, it also comes with like 80 hours of exercises.

37:51 So there's your 100.

37:52 But it took me, Bob Belderbos, and Julian Squira.

37:56 It took us three and a half months each.

37:59 Like that's a full year almost of one – if you did it as one person of just to come up with like that content.

38:05 There's like some serious, serious commitments you got to make here.

38:09 Yeah, I'm sure that, you know, the hours that are actually edited down when it's all said and done too.

38:13 Like I'm sure you have the same experience.

38:15 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.

38:29 So I actually only end up using about a third of everything that was actually recorded.

38:35 So yeah, it takes a while even to cut those down.

38:38 Yeah, it's quite the thing.

38:39 All right.

38:40 So let's touch on the last two because they're both really interesting.

38:42 One is decorators.

38:44 I feel like decorators are quite mysterious to most people, many people in Python anyway.

38:49 Now that's only one video, but it's kind of funny.

38:52 I get a lot of comments in the comment section of that video that they say it's kind of like YouTube inception because it's – because in the decorators video, I basically say, okay, well, we're going to do decorators in this video.

39:04 But if you haven't learned about closures yet, then you might want to go watch my closures video.

39:08 And then in the closures video, I say, well, okay, we're going to learn about closures here.

39:12 But if you haven't watched my first class functions video, then you might want to go watch that first.

39:15 So people kind of get down this rabbit hole.

39:18 But yeah, after – so yeah, first we kind of teach people about first class functions and what that means.

39:23 And basically that means that you can just pass a function around like any other variable.

39:28 So if 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 cannot execute the function and just set it equal to that function ready to be executed.

39:41 And then when it comes to closures, you kind of use that same concept where you can return.

39:48 So within a function, you can return an inner function waiting to be executed.

39:53 And that inner function will kind of remember the context in which the first function was run.

39:59 And then decorators builds on that to where you actually pass in a function and add functionality dynamically.

40:06 So yeah, I mean I can totally understand why it's a confusing subject.

40:09 It took me a long time to wrap my head around it too.

40:12 So yeah, it's confusing just in terms of how much is going on and you kind of got to piece these things together.

40:19 And even after I've taught that video, you still run – and I'm sure this is like this with everybody.

40:26 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 what's going on.

40:38 It's definitely not super intuitive, but it's very useful once you have that down.

40:43 Yeah, it's definitely useful once you learn it.

40:45 But yeah, it's a bit of a mind-blown sort of thing.

40:49 The last series or video that you talked about is something I've been thinking a lot about lately as well is how to volunteer your skills as a software engineer.

40:57 And I feel like software engineers are almost modern-day magicians.

41:02 So much of the world is technical or interacts with technology and devices.

41:08 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.

41:18 We have the skill to do that, right?

41:20 And so how – if you see problems where you're like, well, these people just knew a little programming.

41:24 This would just not be – this could totally change things.

41:28 What do you talk about in this one?

41:29 So yeah, that video, it's – that's a video that I did several years ago.

41:34 And it's a video that I really like a lot, but it's not very popular.

41:38 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.

41:44 And it's not very often that people go back years to see what videos I was making back then.

41:49 So that's one that now that I have a larger audience, I think I'd like to remake that one.

41:53 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 skill set.

42:05 You might think that you have to do something else.

42:07 But yeah, there's tons of things that people who have a tech background can do.

42:11 So one of the first things I 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 Wi-Fi.

42:27 Because it's kind of a misconception that older people don't really care about technology or don't want to use technology.

42:33 But in my experience, I did that for a few years ago.

42:37 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 family or learn how to subscribe to their favorite online news source or anything like that.

42:51 That's one way for – as far as tech people.

42:54 As far as it's – 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.

43:06 So you can do websites for maybe a pet shelter or a local farmer's market or something like that.

43:11 That's a cool idea.

43:12 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?

43:22 I built that thing and here's what it does and here's how this company is using it.

43:26 Here's a way if you've got some free time that you could do one of those projects and it still benefits you very directly in that like when you apply for the job, say, for Django or whatever, you go, yeah, I use Django.

43:37 Look, this thing I did over here and maybe they maybe learned it from your channel or something.

43:42 Who knows?

43:42 That's definitely a great way to have some things added to your portfolio.

43:47 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 corporation or an employer might be interested in?

43:58 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.

44:11 So, for example, you do the back end, which is probably going to be in Python if you're listening to this podcast, but you can also do back end websites and Node.js and PHP and things like that.

44:22 But you also get exposed to the front end doing JavaScript, HTML, CSS.

44:26 If you host the website yourself, you get...

44:30 Maybe Linux and Docker, yeah.

44:31 Yeah, yeah, yeah.

44:32 So if you're hosting the website yourself, you're going to get exposed to Linux and setting up, you know, system security and how domain hosting works and everything.

44:39 So, yeah, doing a website is a great way for people to build up a portfolio because you get exposed to so much.

44:46 And not only that, but it also helps you realize what you like the most.

44:49 So if you, you know, if you liked doing...

44:52 And that's kind of what happened to me is once I started doing back end web work with Python, I realized, hey, I think I want to do this instead of front end work now.

44:59 So it's, you might not know it until you try it.

45:01 And it's the same thing with, you know, maybe somebody will do, put their website up on a Linux system and they really like doing the system administration type of stuff.

45:09 And then they go and do that full time.

45:10 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 That's great advice.

45:19 One of these sorts of examples that people did in a volunteer sense that I thought was pretty cool is something called Humanitarian Toolbox.

45:26 It's at htbox.org.

45:28 Now this, I think, I think the project is mostly a .NET project.

45:31 So Python people might not really care to contribute, but maybe it'll inspire you.

45:35 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.

45:47 It's pretty cool.

45:47 Yeah.

45:48 They're kind of similar to that.

45:49 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.

45:56 And I've never actually contributed to any of these projects, but I saw it in my research for that video.

46:01 And it's kind of the same.

46:02 It has, there's one section that's called Made in Africa.

46:05 And it's a lot of, you know, open source software that people are using over there to stay connected so they can do, you know, yeah, emergency response or SMS type of systems where they can message people back and forth.

46:17 And setting up that infrastructure is, yeah, would be a great thing to work on.

46:22 So it sounds kind of similar to what you're talking about with the Red Cross.

46:25 That's awesome.

46:25 I put the Made in Africa link in the show notes for people.

46:27 Cool.

46:28 Awesome.

46:28 All right.

46:29 So that rounds out the video series that we are going to, the ones we're going to cover, at least for the show.

46:35 But you have a whole bunch and people can come check them out on your YouTube channel, right?

46:38 Yeah.

46:38 Yeah, definitely.

46:39 All right.

46:39 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.

46:48 So you touched on a few things like how to, you have to enjoy it, right?

46:52 You can't just go in there for money.

46:55 You talked about how it took a long time before you saw any success.

46:59 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?

47:12 Like you worked on your channel for a long time before it started to see growth.

47:16 I worked on the podcast for a long time before it was anything that would reasonably put my daughters through college.

47:22 But then it does, right?

47:24 But you've almost got to have this irrational belief that if I just, I'm not there yet.

47:30 I know it's been six months, but I'm just like, yeah, we're going to be way more than $10 next month, I promise.

47:35 Right?

47:36 So it's an interesting thing.

47:38 So you do have to enjoy it and basically have to do it anyway.

47:42 It's like, I would do this anyway.

47:43 Hopefully people enjoy it, right?

47:44 Yeah, exactly.

47:45 Yeah.

47:45 So what other advice do you have?

47:46 Yeah, I'd say that's the biggest piece of advice.

47:49 As far as YouTube and teaching in general, so first of all, yeah, like we were saying, you have to have patience.

47:56 But you also have to have some consistency.

47:58 But you also don't want to be tied down by that consistency.

48:01 So like, for example, you know, 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.

48:12 So like, you know, a lot of people like to put out like a weekly show, like, okay, every Wednesday I'm going to release a video.

48:18 And I think that's great advice.

48:21 And definitely I wouldn't say not to do that.

48:23 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, you know, a week or every other week.

48:31 But I'm not tied to that so much to where I sacrifice the content.

48:35 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.

48:43 Then I would sacrifice the deadlines to make the content better because the content's really the most important thing.

48:48 You want to put out something that you're proud of that you think is going to actually teach people and not just some, you know, quick video that no one's really going to care about just to meet a self-imposed deadline.

48:59 So, yeah, I'd say for blogs and for, you know, 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 Yeah, that's really interesting.

49:14 I think it's good advice.

49:15 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.

49:25 So I couldn't go, but you said you learned some interesting stuff there.

49:28 What was that like?

49:30 Yeah, so that was an awesome experience for me because, you know, this was my first year at PyCon.

49:35 And, you know, usually when I do these videos, I'm just behind the computer.

49:39 I'm not like, you know, interacting with creators all the time, other creators.

49:43 And so that was a really cool session in terms of just bouncing ideas off of each other.

49:47 And it was interesting, too, because it's the first time that I've actually been included in something like that.

49:53 Because, you know, whenever I was learning Python, I was like Al Swigert was there.

49:57 He's the one who wrote Automate the Boring Stuff.

49:59 And Trey Hunter has given a bunch of PyCon talks.

50:02 So it was just kind of interesting being in that group.

50:04 And, you know, some people asking questions like, oh, well, what do you think about this?

50:08 And, you know, it's just kind of interesting in terms of being kind of included in that for now.

50:14 But, yeah, we bounce some ideas off each other in terms of, you know, a lot of people are saying that they were basically saying that they use email lists a lot.

50:22 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 when you know anywhere that you go.

50:32 So if, you know, 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.

50:39 And you can always, you know, email out all of your followers and say, hey, I'm, you know, not doing this anymore.

50:44 I'm going here.

50:45 So you kind of have an audience that can follow you around.

50:47 So, yeah, bouncing ideas like that off of each other was a great way to to learn different techniques and different streaming services and how other people are doing things.

50:56 So, yeah, I thought it was extremely useful.

50:58 That's really cool.

50:59 I definitely want to double down on that.

51:01 Like, I think the sort of the email list side of things and that kind of stuff is very much the iceberg of success for a lot of these things.

51:09 And, you know, the stuff that you don't actually see, the people are like, that person is crazy successful about it.

51:15 But you don't actually see how it is.

51:17 There probably is some sort of email list involved.

51:19 Like I have, you know, some for the podcast and some for the training.

51:23 And it's the relative value.

51:25 I would say, like, I would trade 20,000 Twitter followers for 2,000 email people who actually want to be there.

51:32 Like it's at least that that much of a difference.

51:35 Yeah, because that's people who have gone out of their way to actually, you know, taking the time to subscribe.

51:39 It's so much easier to just get on Twitter and hit follow.

51:42 But, yeah, there's so many of those people who won't get the message that you're trying to send through.

51:46 So, yeah, having a core audience of people who, you know, really listen to the things that you send out is definitely, definitely useful to have.

51:54 Yeah, I just want to say thanks to everybody who subscribed to my list or subscribed to the podcast.

51:58 And I know you feel the same way about your YouTube subscribers, right?

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

52:07 Yeah, for sure.

52:07 So, YouTube can be a tough place to sort of put yourself out there.

52:13 Where, you know, it's like 99% of the people are really friendly and super supportive.

52:17 And then other people, you know, they'll think that you owe them some sort of consulting thing because you talked about something they're having a problem with.

52:24 Or they can just be like outright mean.

52:27 Like, have you had any of those experiences?

52:29 I know that I have and other people who are doing similar stuff have.

52:32 Yeah, so like you said, it's probably a little over more than 99% who are completely positive.

52:39 And then you're going to have that, you know, that less than 1% who definitely kind of give you a hard time.

52:45 And yeah, I've run into that.

52:46 It's one thing that you kind of have to – I actually thought it was going to be worse before I started doing it.

52:53 So it was – because, you know, I look at, you know, news channels on YouTube and stuff like that.

52:58 If you look in the comment section of channels like that, it's just a complete, you know, dumpster fire.

53:03 It's terrible.

53:04 But in this community, it's been fantastic.

53:07 You know, a lot of people are supportive, you know, and other creators even support other creators.

53:12 So it's not like we look at each other as, you know, competitors.

53:16 I've had – you know, I've recommended other people's YouTube channels whenever I don't really haven't covered a subject yet.

53:23 And they've done the same.

53:24 I've seen, you know, people who have YouTube channels who link to my videos.

53:28 And yeah, so it's for the most part very supportive.

53:31 But yeah, that's just like anything on social media these days.

53:35 You kind of have to have slightly thick of a skin to ignore that 1% because those are definitely the ones that kind of stick with you and sting for a while.

53:42 But – Exactly.

53:44 You could have 100 great comments and then one super mean one.

53:48 And somehow that is the takeaway that you take from those messages.

53:52 But I find that I've gotten to the point where, you know, I have definitely not thick skin in general as a person.

53:59 But over the last few years, I definitely have built it up and it's fine.

54:03 But I just wanted to kind of touch on that a little bit for anyone else who's out there thinking about it.

54:07 Just let it roll off.

54:08 It's not the – you're helping most of the people.

54:10 There's a few people that get upset and whatever.

54:13 Yeah, exactly.

54:14 And that's – these days I don't even take it personally.

54:17 I think those people would be upset at no matter what the content is.

54:21 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.

54:26 And so they kind of use it as their own, you know, little punching bag to get on there and say whatever they want to say.

54:32 So – but yeah, it used to bother me more than it did.

54:34 But after doing it for a while, you just got to, yeah, let it roll off.

54:37 Yeah, I'll give you one real quick example just so people kind of get a sense.

54:40 You know, I have two MongoDB courses.

54:43 One of them is eight hours.

54:44 And we talked about how much work that is.

54:46 One of them is two and a half hours and it's not like a copy of the other course.

54:49 It's totally different.

54:50 And I did that from scratch.

54:52 And it took me almost a month of just work to make that free course that I gave away, you know.

54:57 And one of the first comments was, why won't you just give us the full course?

55:01 This is crap.

55:02 I'm just like, are you kidding?

55:03 I spent a full month of my life making zero income to make this for people like you.

55:09 You don't have to love it.

55:11 But please, you know, come on.

55:12 Don't like go out and publicly berate it.

55:14 Right?

55:14 But that kind of stuff, you know, hundreds of people loved it.

55:17 Thousands of people loved it.

55:18 But that one person still kind of bugs me.

55:20 So you just got to get like to the point where like, yeah, that does bug me.

55:24 Yes.

55:24 Stuff like that.

55:25 There's, you know, there's a lot of stuff out there that's, yeah, just not really offered as constructive criticism.

55:30 I mean, I get a lot of constructive criticism and I kind of like that.

55:34 I like whenever people are nice and they say, hey, you know, I, you know, why don't you, I couldn't really watch this.

55:39 You know, on some of my older videos, they were like, you know, this looks great, but I wish you would have made the text larger because I can't see.

55:44 So now stuff like that really helps because I can make better stuff.

55:47 But yeah, there's a lot out there that's not even really meant to be constructive.

55:50 I think the other day I had, let's see, one of them that kind of stuck with me is one of the earlier videos I did.

55:57 Somebody was like, man, this guy's Southern accent is so bad.

55:59 Why would anybody watch this, you know, watch this all the way through?

56:02 And so I was kind of thinking about that, like, man, maybe everybody's going to think that.

56:05 But no, it's 99.9% positive.

56:09 So, yeah.

56:10 Yeah, yeah, yeah.

56:10 Absolutely.

56:11 Absolutely.

56:11 All right.

56:13 So I guess, you know, I don't have enough experience with this side of things, but, you know, maybe people out there might be interested.

56:19 So share as much or as little about this as you want to tell me, like, I don't want to answer this.

56:23 But you talked about in the first couple of years, you only made like $100 a month or something like that.

56:28 And then it became enough that it could be your job.

56:31 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?

56:40 So 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:46 That is a tough question to answer because it's so – it's very – it's different for every person.

56:52 So, like, for me personally, I was able to – I think I quit my job as soon as I reached 100,000 subscribers.

56:59 But sometimes people will have more subscribers with less views, and sometimes they'll have more views with less subscribers.

57:08 So it's kind of hard to – kind of hard to say exactly, you know, the number of subscribers there.

57:14 But one thing I will say is as I was going through the process, let's see, I think I was – I probably was able to quit whenever I was getting about 600,000 views per month.

57:25 And that's – and YouTube has all those analytics for people.

57:28 YouTube's great with analytics in terms of, you know, 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.

57:42 So, yeah, that's about the time I could quit my job.

57:45 And I'm actually trying to move over to different sources of income as well.

57:51 So I'd say right now – and I just made a video about this the other day.

57:55 But I think right now I'm making about 95 percent of my income from YouTube advertisements.

58:00 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.

58:07 But really I would like to build up the fan funding section to where it makes up the majority of my income.

58:13 You know, sites like Patreon.

58:15 I know that you have a Patreon for Talk Python.

58:17 Yeah.

58:18 And that's – I've never experimented with Kickstarter.

58:20 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.

58:31 And you have, you know, a goal that you're trying to reach.

58:34 And Patreon is more monthly contributions to an ongoing project.

58:39 So, you know, for people who are making consistent content like Talk Python, people can just support that on a monthly basis.

58:46 So I would really like to build up the fan funding section of the income more so that I wouldn't have to rely as much on YouTube.

58:53 Because 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.

59:01 Like if I was to go from, you know, 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.

59:15 So then you can just be – you know, those are the only people that you, you know, are really looking out for are the people who are actually paying for your content and worrying less about advertisers and sponsors and stuff like that.

59:26 Yeah, that's really interesting.

59:27 I think it's a good path for where you are and where you're going.

59:30 And it seems like a great way to connect with people.

59:34 I don't push my Patreon stuff that much because if somebody supports the podcast by donating $1 a week, that's about $50.

59:42 Or if they could buy one class a year, that's also about $50.

59:47 And if they buy the class, then they get something extra.

59:50 Whereas the Patreon, they kind of – I don't really have any perks there.

59:54 So I don't push that super hard.

59:56 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 Yeah, exactly.

01:00:06 All right.

01:00:06 Well, Corey, this has been super interesting.

01:00:09 And I think we're just about out of time here.

01:00:11 So let me ask you the final two questions.

01:00:14 So if you're going to write some Python code, what editor do you use?

01:00:17 Although we could go to your YouTube channel and discover this probably.

01:00:20 But go ahead and tell me that.

01:00:21 That's probably the most common question that I get in my comment section is what editor I'm using in the videos.

01:00:27 So I'm using – I have a few videos where I set up different development environments.

01:00:31 But the one that I'm actually using the most is Sublime Text.

01:00:34 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.

01:00:47 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.

01:00:56 I think that PyCharm might have something like that in a presentation mode.

01:01:00 But I – you know, 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.

01:01:08 But I've heard great things about PyCharm too, though.

01:01:10 Yeah, very nice.

01:01:11 Yeah, definitely Sublime Text is great.

01:01:13 And then notable PyPI package.

01:01:15 Yeah, I think the package I probably use most often is SQLAlchemy or SQLAlchemy.

01:01:22 And that's basically just because, you know, it's hard to touch any application these days that doesn't have some kind of database in the back end.

01:01:29 Even if that's, you know, a desktop application, you might be using SQLite on the file system or a web application you'll be doing, you know, maybe a Postgres in the background.

01:01:38 And, yeah, SQLAlchemy is great because it gives you this, you know, something that you can interact with and even switch databases around.

01:01:46 You know, you can use SQLite for development and then go to Postgres for production.

01:01:51 And all of that code just stays the same that you've written for SQLAlchemy.

01:01:54 So that's definitely the one I think I use most often.

01:01:57 Yeah, that's a really nice one.

01:01:58 And the ability to just change the connection string for production to development and maybe even have a totally different database, like you said, is really great.

01:02:07 Yeah.

01:02:07 So I've been recently been playing with Alembic.

01:02:10 Have you been playing with that?

01:02:10 Alembic.

01:02:11 Is that, I don't think I have used that.

01:02:13 It comes from Mike Bayer as well, and it integrates with SQLAlchemy to do migrations.

01:02:19 So as your class schema changes, you can just say apply these changes to upgrade my database in production or in staging as those changes roll in.

01:02:28 It's really nice.

01:02:29 Okay.

01:02:29 Yeah, that's right.

01:02:29 I have actually used that on one project.

01:02:31 And, yeah, that is a nice addition to SQLAlchemy as well.

01:02:35 Yeah, I like those together.

01:02:36 All right.

01:02:37 So final call to action.

01:02:38 I know lots of people out there are like, I would love to do something kind of like this.

01:02:44 But what would you say to them?

01:02:45 Basically, I would just say to, you know, just to get started.

01:02:49 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.

01:02:56 And then you can just slowly roll it out.

01:02:59 You know, a lot of people feel like they have to have this big production setup before they even do their very first, you know, attempt at something like this.

01:03:07 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.

01:03:17 Or if you're making videos, as long as you have, you know, you can buy a cheap microphone for about $20.

01:03:23 The first videos I did, I didn't even have a microphone.

01:03:26 So it was just, you know, recorded off my computer.

01:03:28 And people don't mind that stuff as much as you think they would.

01:03:32 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 Yeah, that's awesome.

01:03:38 I started the podcast with a $55 microphone and $5 worth of software.

01:03:43 So, yeah, yeah.

01:03:44 Yeah.

01:03:45 So it's not as complicated as what a lot of people make it out to be.

01:03:48 It's just getting that first step, taking that first step and just doing it.

01:03:53 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.

01:04:01 Right.

01:04:01 Like, who did you ask permission to start your YouTube channel from?

01:04:04 Oh, yeah, exactly.

01:04:05 Yeah, yeah.

01:04:05 There's nobody.

01:04:06 Nobody, right?

01:04:07 Nobody that you have to check with.

01:04:08 Yeah.

01:04:09 Yeah.

01:04:09 Same here.

01:04:10 And so many of the people who are doing stuff like us, they just decided, I'm just going to do this.

01:04:14 And a lot of people sort of see, you know, I kind of think it's sort of under an undertone in their thinking, not super obvious.

01:04:22 But they feel like I've got to get to some stage where people will accept me and 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.

01:04:33 Not really.

01:04:34 You just got to go out there and get started.

01:04:35 And, you know, there's no gatekeepers.

01:04:37 It's up to you.

01:04:38 Go and do it.

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

01:04:40 Yeah.

01:04:40 All right, Corey, thanks for being on the show.

01:04:42 This is really awesome.

01:04:43 And super congratulations on going full time on this.

01:04:46 That's amazing.

01:04:47 Yeah, thanks a lot.

01:04:48 I really appreciate you having me on.

01:04:49 I have listened to your podcast since probably the first episode and I never thought I would actually be on it.

01:04:54 So it's really cool to be on here.

01:04:57 That's really awesome.

01:04:58 Well, I'm happy to have you.

01:04:59 This is cool stuff you're doing.

01:05:00 So happy to share it.

01:05:01 Take care.

01:05:02 All right.

01:05:03 Take care.

01:05:03 Thanks a lot.

01:05:03 This has been another episode of Talk Python to Me.

01:05:08 Our guest this week was Corey Schaefer.

01:05:10 And this episode has been brought to you by Datadog and Rollbar.

01:05:13 Datadog gives you visibility into the whole system running your code.

01:05:18 Visit talkpython.fm/datadog and see what you've been missing.

01:05:22 Don't even throw in a free t-shirt for doing the tutorial.

01:05:24 Rollbar takes the pain out of errors.

01:05:27 They give you the context and insight you need to quickly locate and fix errors that might have gone unnoticed until your users complain, of course.

01:05:35 As Talk Python to Me listeners, track a ridiculous number of errors for free at rollbar.com slash talkpythontome.

01:05:43 Want to level up your Python?

01:05:44 If you're just getting started, try my Python jumpstart by building 10 apps or our brand new 100 days of code in Python.

01:05:51 And if you're interested in more than one course, be sure to check out the Everything Bundle.

01:05:55 It's like a subscription that never expires.

01:05:57 Be sure to subscribe to the show.

01:05:59 Open your favorite podcatcher and search for Python.

01:06:01 We should be right at the top.

01:06:03 You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm.

01:06:12 This is your host, Michael Kennedy.

01:06:14 Thanks so much for listening.

01:06:15 I really appreciate it.

01:06:16 Now get out there and write some Python code.

01:06:18 I'll see you next time.

01:06:39 Thank you.

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