Learn Python with Talk Python's 270 hours of courses

#194: Learning (and teaching) Python in a vacuum Transcript

Recorded on Friday, Jan 4, 2019.

00:00 How do you learn to program when you're working in a vacuum?

00:03 Sure, there are resources on the internet, but sometimes just bouncing ideas off other people

00:08 in person makes a huge difference. Join me along with Rusty Gregory as we discuss how he's learning

00:14 and teaching Python in a small town in Vermont. This is Talk Python to Me, episode 194, recorded

00:21 January 4th, 2019.

00:23 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the

00:41 ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter

00:46 where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm

00:50 and follow the show on Twitter via at talkpython. Hey, everyone. Before we get to our conversation

00:56 with Rusty, I want to tell you about a new course we just launched, Introduction to Ansible.

01:01 This one was created by Matthew Mackay of Full Stack Python. If you're involved with deploying

01:06 a web app or managing servers, especially Python web apps, you owe it to yourself to check out

01:11 Ansible. It provides a declarative way to provision, configure, and evolve infrastructure and applications.

01:17 What makes it even better is it's written in and can be extended in Python. Check out the course

01:23 over at training.talkpython.fm. Corporate and team options are available too. Now let's talk with Rusty.

01:29 Rusty, welcome to Talk Python.

01:31 Wow. Thank you. Thank you for having me. It's good to be here.

01:34 Yeah, it's great to have you here. Super excited to talk about learning Python and teaching Python

01:39 in your world. But before we get to all that stuff, let's just start with your story. How do you get

01:44 to program in Python? I've been playing around with the web for quite a long time. I had a basic

01:49 class in high school back in the early 90s. And then basically, I started to work on the school

01:55 web page when I got hired out of school and taught myself HTML and CSS and kind of made the transition

02:02 from using WYSIWYG editors into using Notepad++ and learning the code that way.

02:09 I think that's really interesting. I don't feel like WYSIWYG editors are really much of a thing.

02:14 They used to be big. I don't know if people listening realize how big they were. There was

02:18 FrontPage and there was Dreamweaver and there was Visual Studio with its ASP.NET stuff. And it was

02:26 very programming. It was like, write your website in Word.

02:29 I feel like once you went to CSS, that WYSIWYG editors couldn't really keep up with it.

02:35 So then after that, you were just better off typing in code.

02:38 I was thinking that as well. WYSIWYG editors, I guess the best they could do was tables.

02:43 Right. Here's your table. Change the color in your table if you like it. Stretch it to the right.

02:49 I mean, didn't the early days of the web feel like a lot of borderless tables? That was crazy.

02:53 It really was. Everything was a table and merged cells and all that kind of stuff. It was great.

02:58 But then once we had many different sizes of screens to deal with, it didn't really meet the

03:03 deeds of what we were going to. And then mobile, there's no way you could do a table-based design

03:08 in mobile.

03:08 Yeah. You don't care too much about responsive tables these days.

03:10 No. When I first started teaching HTML, we had to design two different sites, right? There was a

03:17 mobile site for something and then there was a regular site.

03:19 Oh, that's right. I remember. Do you remember the .m domains? Or like if it was, you know,

03:24 talkpython.fm and be m.talkpython.fm. I totally forgot about that subdomain.

03:28 And there was all the horrible converters that you could use to just click a button and change

03:34 your site into something that worked on mobile. And yeah, it was a lot of work.

03:38 Yeah. Yeah, it was a lot of work. Programming used to be hard. It still is, but in a different way.

03:42 I do want to just ask you a little bit about the CSS since that's part of your transition here. I feel

03:48 like when you're trying to write websites, it's just so hard to get them to do what you want them

03:55 to do and behave correctly until you sort of bite the bullet and learn CSS. And, you know, maybe it's

04:01 a two or three week really hard studying period, but then on the other side, it just opens things up.

04:08 I mean, you did a lot of CSS. How do you feel?

04:10 It became a lot of fun, actually. It wasn't as much hard work kind of doing things. And in the early

04:15 days of CSS, not all the browsers understood everything. So you had to, there's only certain

04:20 things you could do and then you had to hack it back. So it worked on IE or whatever it was that

04:23 you were doing, but it was a lot of fun. It really added the fun and made me want to go further.

04:28 I started just buying CSS books and, you know, everybody took you through the basics of one site

04:33 here. We're going to start this site. We're going to end up with this site. So, you know,

04:36 just designed three or four sites as I read through these books. And eventually every book I bought,

04:41 I'd already read, you know, I already knew what they were saying. So I finally felt confident at

04:45 that point.

04:45 That's really cool. I think the book that I learned CSS through was something called CSS,

04:51 the missing manual. I think that was it. That's a good one. Nice. Okay. So you started out with

04:56 front page and, and WYSIWYG stuff and you sort of graduated to real web development, right? With CSS.

05:02 And where'd the story go from there?

05:03 Basically I started a little website business. We had two daughters at a time instead of one

05:09 and I needed to earn some extra money. So I started doing small websites for people.

05:13 And then I found that there was a job open at a junior college and it was, I was making just as

05:18 much money teaching web design as I was creating sites for small businesses, you know, small local

05:24 businesses at that time. So that was a great jump for me. So I love to, I work at an elementary school

05:29 during the day. So it was great to go and work with adults in the evenings and, and kind of get

05:34 my coding fix at the same time. It was a lot of fun. And that got me into WordPress eventually. So

05:39 then as soon as I got into WordPress, there was a, you can use a lot of WordPress without having to

05:44 get too heavy into databases or PHP at all. In fact, you really don't have to know anything about

05:49 that if you don't want to. But when I started with WordPress, you still had to create your own

05:52 database programmatically. And then, and the updates were as a matter of overwriting files and things

05:58 like that. So it was a nerve wracking kind of a process. So I had to learn a little bit more

06:03 about PHP so I could fix things when I broke them, but I never was able to create anything in PHP. I

06:08 was only able to, to just change things. It was mostly a read only language for you. Correct. Yeah.

06:14 But it was, I knew I wanted to learn it. So then I bought a couple of PHP books and I could never,

06:20 ever crack it. I never got past, you know, just trying to figure out what the difference between

06:24 integers and, and, and everything, not that that was too much, but it was, it was boring.

06:28 So I never got into the part where I could get to functions or creating stuff in there.

06:32 Yeah. PHP takes a lot of heat or negativity from real programming languages or whatever, but

06:37 a lot of the web runs on PHP and WordPress in particular, like a serious amount of what you do

06:44 on the web is interact with WordPress, right? And PHP. And of course, Facebook.

06:47 I feel like I could go back now and it would be, it would be easy because I've got the basics down,

06:51 but I could never get past the basics. And you know, every, every book I bought only showed me,

06:55 you have to know these things so you can become proficient. So, but I never got to the part where

06:59 I was proficient. I'd give up before that. Yeah, of course. Do you think that is because

07:04 PHP is always, as least as I see it, it's always like mixed in with the web. So you're,

07:11 you're programming in a webpage where something like Python or JavaScript, you can do it separately.

07:17 Yes.

07:18 Yes.

07:18 See, it's sort of learn it in isolation and then bring it into the web.

07:22 Right. There's a lot of moving parts when you're playing with, yeah. When something that's inside

07:27 WordPress or yes. Yeah. Exactly.

07:30 For me, I couldn't really grasp a lot of the programmatic programming concepts for me,

07:34 writing functions, how those interacted, you know, sticking things in hooks, all that didn't

07:38 necessarily make sense. I didn't have anybody to ask at the time. I live in a pretty remote part of

07:43 the world and there's no formal training for any kind of those languages around here. There's no,

07:49 there's nobody I could ask, you know, other than message boards and message boards weren't even that

07:53 huge at the time, actually, or at least mine, my experience with them wasn't very big at the time.

07:57 I feel like there's a lot more communities out there that you can jump into these days. And we'll,

08:01 we'll dig into that a little bit, a little bit later.

08:04 Yep. So, yeah. So what are some of the, if you had, you know, not a lot of people or, or official training,

08:09 like what are some of the resources you had available?

08:11 There was a podcast, WP Tavern. I used to listen to a lot. Then he had a forum. There was a CSS

08:16 tricks was a great place. And that gentleman also had a forum there. So I go to those places. There's

08:22 a guy called Justin Tadlock, who was a big influence that wrote a lot of the stuff about best practices

08:27 and how to do things the right way when you're, when you're writing. I didn't really know there was

08:30 such a thing as sloppy code and good code at the time. So I actually started to take some of his

08:34 plugins for WordPress and just kind of change them to do things that I wanted. You know,

08:38 I could, I could open up as one of his plugins and then see how, where he'd put different things

08:43 and start to just change the language, you know, so it matches what I wanted to do and figure out

08:47 how to do things that way.

08:48 Yeah. Sounds good. So you gave us a little bit of what you do day to day, but maybe expand on that

08:55 just a little bit. So folks know where you're coming from.

08:57 Sure. I'm an educational technology specialist at a K6 school here in Northern Vermont and spend most

09:03 of my day kind of doing staff training, managing databases. I run the state testing for my school.

09:09 I teach digital citizenship directly to kids. We work with the hour of code event and basically just

09:16 kind of all around stuff. We have a hardware guy that does all the hardware stuff, but if you need

09:21 to know how something works at school, then I'm usually the person that you ask. And if something's

09:24 broken, we go to Josh. So yeah.

09:27 Nice. This keyboard doesn't work. Call Josh.

09:30 Exactly. If I can't fix it in 10 seconds, it gets moved on to him.

09:35 Yeah, exactly. So it sounds pretty interesting, like a bunch of different things. What does

09:40 digital citizenship entail? I can imagine things about that, but maybe tell us what it means when

09:46 you're teaching it.

09:47 It's teaching kids what the correct behavior is online, how to get around, you know, basically

09:52 that if it happens online, it's the same as if you'd done something to somebody in real life. It's also

09:57 being aware of, you know, advertisements. And I taught a lesson on Photoshopped images online and

10:03 things like that. Just trying to get kids an awareness of the digital world.

10:07 Yeah. I think that's pretty important. I think it's going to get harder. It's going to get harder too.

10:11 It is. A lot of kids are using technology, kind of not necessarily in the shadows, but not parents

10:17 aren't aware of what's going on. You know, as long as the kids are quiet, a lot of, a lot of the

10:21 population that I work with, the parents are kind of happy and then they don't ask a lot of questions.

10:25 So it's kind of our job to make sure that they are aware of all these things that are going on out

10:29 there.

10:29 Exactly. I'm also a big fan of the hour of code. We kind of are a little bit out of phase with the

10:35 right time to talk about it, but it's, you know, since it's usually December, but

10:39 maybe tell people real quick about the hour of code as well.

10:42 Hour of code is a movement that started about three or four years ago. I want to say maybe we're in the

10:46 fourth or fifth year and it's a movement to try and get every child exposed to coding for an hour

10:52 during the, during the school year, just to, just an hour to get started. We try and get to every kid

10:57 in school and make sure that they have an opportunity to code for an hour and just basically intro everybody

11:02 to it. And it's also an intro for students and the staff or sorry, the staff of the adults that work at

11:07 our schools to try and get them exposed to what's what coding means and how easy it is to get started.

11:12 We never really get in depth in the hour of code, but it's really just designed to be an introduction.

11:17 We're not trying to train everybody to be a computer scientist, but we want everybody to understand what goes on in

11:22 their computers.

11:22 Yeah. People will probably get tired of me saying that, but I really think that we don't need a whole lot more

11:27 programmers, but I think we need a lot more people with some specialty that also have programming skills to amplify

11:33 that specialty. I think the hour of code is, is right in line with like that, like inspire you to think,

11:39 Oh, this programming thing I could do. And I'm also interested in biology. So maybe, you know,

11:45 some point down the road, you're like, Oh, I need to automate this thing. I can program that. I can

11:48 figure out how to program that.

11:49 That's exactly how we approach it at our school. And I think most schools are that way as well. You know,

11:53 we don't expect everybody to do it for the rest of their lives, but we want people to be more

11:57 than a consumer if we can help it.

11:59 Yeah. We definitely need more creators and fewer consumers. What kind of technology do you teach? Do you teach

12:06 scratch or you said elementary school? So these are first or kindergarten to fifth, sixth grade, something like

12:13 that.

12:13 Yep. We're K6. So I basically, we don't get much further than scratch. I've had a couple of Python students so far,

12:19 but just very, very basic stuff. They're going on to middle school where they might have more opportunities

12:24 there. So for the most part, if I can get kids and access to kids and get a small group of scratch

12:31 creators, then that's what I'll do on a regular basis. So we're starting to do that on a, you know,

12:36 every six weeks, eight weeks, change out the group and just trying to get kids a little bit excited.

12:39 And if I can get them to understand loops and maybe if we get to a variables, that'd be great.

12:44 Yeah, for sure. What grade levels did you go through with this on?

12:49 So fifth and sixth grade, sixth grade is where I get the most access to kids. So that's where I'll work the

12:54 with the scratch. And that's the only place that I would really even try Python.

12:57 Yeah, I think definitely you have to be a decent typist, decent reading level and stuff to do written

13:04 code. You know, I did an hour code thing a couple of times at my daughter's school and we did it when

13:09 she was in first grade, I think. And we ended up doing it with everybody from first grade through

13:15 fifth grade over that, that week. And the teachers and the administration were kind of blown away about

13:21 how much the first, second, third graders actually took to it and could do it. Like, I don't even know

13:26 if we could do it with them. Like they'd be really young. By the end, they had all these great little

13:30 things built and it was super cool.

13:32 Yeah, it's a lot of fun. Actually, with the hour of code, we do do kindergarten all the way through

13:35 sixth grade. We do iPad apps from kindergarten, first, second grade from code cards. And then

13:41 there's, I want to say, a block box island. And there's a couple of different activities and

13:46 they're mostly just, you know, a little drag and drop, five or six instructions in a row kind of

13:50 thing. And then the hour of code has hundreds of activities that I let the kids, the older kids get,

13:55 the more choice they get. And that's where they first start with this program called code combat,

14:00 which is the first time where they can actually start typing in code. And it's a great introduction

14:05 to, and that's where I got started actually with Python.

14:08 I want to ask you more about code combat, but I realized I sort of jumped ahead on your story

14:13 without letting you talk about how you went from WordPress into Python.

14:15 No worries. It got a little long. So yeah, WordPress, I spent a lot of time in that for years and years

14:21 and years. And then actually the hour of, or the hour of code two years ago, I decided I was going to

14:26 try and learn a little bit more actual coding. Cause I don't know that, I mean, HTML and CSS is, is writing code, but I don't necessarily consider it. It's not programmatic

14:35 code. So I started with code combat after the hour of code. And then I bought a subscription to it,

14:41 which is, it was like $75 for a lifetime kind of access to all the activities. And it opened up a lot

14:47 more activities and I just banged away at it all summer. And things finally started to stick for me.

14:53 I finally was getting used to the syntax and all that type of stuff. And then I bought a couple

14:58 other books after that, but code combat is really what kind of got me over the hump. And you know,

15:02 it's a program written for a, you know, fifth and sixth graders to expose them to coding, but I found

15:08 it really, really valuable as kind of an introduction.

15:10 This portion of talk Python to me is brought to you by Linode. Are you looking for hosting that's fast,

15:17 simple, and incredibly affordable? Well, look past that bookstore and check out Linode at

15:22 talkpython.fm/Linode. That's L I N O D E. Plans start at just $5 a month for a dedicated server

15:29 with a gig of Ram. They have 10 data centers across the globe. So no matter where you are or where your

15:34 users are, there's a data center for you. Whether you want to run a Python web app, host a private Git server,

15:39 or just a file server, you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network,

15:46 24 seven friendly support, even on holidays, and a seven day money back guarantee. Need a little help

15:51 with your infrastructure. They even offer professional services to help you with architecture, migrations,

15:56 and more. Do you want a dedicated server for free for the next four months? Just visit talkpython.fm

16:02 slash Linode. So I had not heard of code combat before, and I checked it out when you mentioned

16:09 it in the show notes. And it is really cool. I really like it. Yeah, it is. It's a really great

16:14 way. I think they've really kind of hit on just enough intro, you know, for each concept and then

16:19 getting you to use it over and over again. It really was just kind of the repetition. And it might bore

16:24 some people, but it was really what I needed for everything to just kind of stick. Yeah. So maybe I'll

16:29 try to describe it for folks and you'll have to correct my description because it's only from a little

16:33 bit of experience. So you go in there, you've got this kind of like universe of places and you can go

16:38 through these different areas and they teach or challenge you with different skills. Some of

16:42 them are just calling functions. Some of them are strings, you know, like standard stuff. And it

16:47 looks like you can do it in Python and Java, but I like to see that the default is Python or JavaScript.

16:51 Sorry. The default is Python. That's, that's really cool. And what I really like about it is it

16:57 feels almost exactly like scratch or one of these visual programming languages. But what I don't like

17:04 about those is they, they show you, well, here's this block and there's that, here's the,

17:09 the move block and here's the loop block and all that kind of stuff, but it doesn't feel like

17:14 programming, right? It's still like a big step to go from getting experience with that to actually

17:18 writing a program, right? It's like a totally different way to be. Right. Whereas, yeah. Whereas

17:24 this it's, you actually start writing code from the beginning, but it's so supportive,

17:29 right? You type like one or two characters and here's the list of the four or five things you can

17:35 do. It's really nice. Right. Yeah. The autocomplete's really handy there. Yeah. It's a great bridge

17:39 between the two. Yeah. So I, I definitely think this is a super cool thing for anyone, either really early

17:45 learning to program or, you know, interacting with kids or other folks who are really early. This is,

17:51 it's really great. Yeah. I wouldn't hesitate to recommend it as a beginning place for children

17:54 for certain. Yeah. Yeah. For sure. I think I'm going to do some stuff. My daughter still has a few

17:58 days vacation before school goes back. I might do a few, a few little dungeons or whatever you call

18:03 them with her on this one. That's cool. So yeah, I like that. So you started, you started messing around

18:07 with that for our code and you're like, Hey, this Python thing, not bad. Yeah. Automate the boring

18:11 stuff was recommended to me. I got onto, I started working with a millennial, who introduced

18:16 me to Reddit and, basically started searching on there for what people recommended to get started

18:22 and automate the boring stuff was, was really quite high in the top of everybody's list as a good

18:27 book to get started with. So I picked that up and basically I am the target audience for, for that book.

18:34 That's cool. I've had Al Swigert on the show before and talked about his book, but maybe just

18:39 summarize, like some of the stuff that's covered there and why you're the target audience.

18:42 Basically he says it's, you know, it's for people who just want to learn a little bit of code to help

18:46 with their job. And basically a lot of what I do is managing other people's information.

18:50 So it goes through and it talks about how to crop pictures and how to, you know, with Python,

18:55 and then it goes into how to work with spreadsheets with Python and just all these different,

18:59 like day-to-day tools that you could do. I mean, maybe if your job's, you know, building houses,

19:02 maybe they're not day-to-day tools, but for me or somebody who works at an office,

19:06 it was really, really eyeopening. And also I was, I wanted to learn programming at the same time.

19:10 So it was really, really great for me at the time I had, I was redoing the website and,

19:14 had all the pictures for the staff members. And so I just get a disc with, you know, 600 pictures on it.

19:20 And I wrote a program that went through and cropped each picture and resized it to the size that I

19:25 wanted. So I could put them on the website. And it was brilliant. I mean, that was like,

19:28 I was hooked from the moment I did that. That was, yeah. You probably had that disc. You're like, this is going to take three days.

19:34 Yeah. It probably took me longer to write that program than it would have if I had sat there

19:38 and stared at the computer and, you know, clicked incessantly for five or six hours, but it was a

19:44 great experience.

19:44 You escape with your sanity though.

19:46 That's right.

19:47 Yeah. I think that that's really a great way to leverage some of the, both programming skills you

19:53 have and learn new programming skills. A lot of times I'll find myself doing something repetitive.

19:57 I'm like, why is this just, this is a part of my day that is just really mundane and involves a lot

20:03 of copy and paste or other mindless things. And then I'll just realize, you know what,

20:07 if I just take an hour, write a little program to do this, then I'll never have to do this again.

20:12 You know what I mean? And I'll always do it right.

20:14 I see more and more opportunities for those types of things these days. You know,

20:17 it's just a matter of convincing people at work that that's valuable.

20:23 Yeah, that's true. That's true. I think that, I mean, that's a challenge around

20:27 software and management. Let's put them as, you know, it's even things like, should we take the

20:35 time to write unit tests? Well, the prototype works, just make it the real one. You know what I mean?

20:40 Things like that. But when I was in that position working a lot, I, people would ask me for estimates

20:46 like, Michael, how long is this feature going to take? And that features estimate would include

20:51 how long it took to write tests. It would include how long it would take to write like these little

20:56 helper scripts and stuff. And I wouldn't say, well, this much for the helper script, this much for the

20:59 test, this much for the main feature. It was like, it's going to take four days. Okay. You know,

21:03 and I just was sort of a don't ask, don't tell type of, like, I'm not going to talk about it.

21:08 They're not going to ask me. I'll give them something good on the deadline that's better than they

21:12 thought. So it'll be fine. Yeah. Yeah. That's cool. So you had the automate the boring stuff book.

21:16 You said there's some other books that you also enjoyed.

21:18 Yep. Headfirst Python. I really liked a lot. I teach with a headfirst book for my HTML and CSS class.

21:23 So I kind of went to that first because I liked the style that they do it. Headfirst Python was great.

21:28 Took me through it, introduced me to Flask. And since I was already kind of a web guy anyway,

21:32 that was an even bigger breakthrough for me. So that was a great book. And I learned a lot about Flask.

21:38 Basically, I stopped that book as soon as I learned enough about Flask to go out and start

21:41 Googling my own answers for things. And I was able to write my first couple of web apps,

21:45 Yeah. You have a cool web app for the state parks in Vermont, right?

21:49 Yeah.

21:50 Tell us about that.

21:50 Yeah. Nobody's ever actually used it. A little known fact about that, but not even my wife,

21:55 whom I kind of built it for. So basically, there's this program in Vermont where if you go and you

22:00 visit all the parks, they give you like these three worksheets that you work through and you get

22:05 certain points for it. If your kids build a rock tower on the beach, you take a picture and you get 10

22:10 points for it. It has to be in a state park or whatever. And you get 250 points. Then you take all your

22:14 pictures together and you send them off. So basically, if you look at a lot of the advertisements

22:18 in Vermont, it's like us and our friends and our kids on the advertisements, because they basically

22:22 take your pictures doing all these activities and put them up all over the place. So anyway,

22:25 at the end of the summer, usually all three couples, we all get together and sit there and go through all

22:30 this paperwork and do everything to make sure we have enough points to send off these things.

22:34 then you get free entry to the parks the next year. So I was like, well, what if I could write

22:40 something that would do this? So for us, well, it didn't really do it, but it did all the thinking

22:44 for us anyway. So I wrote a little web app that you can log in. I had to teach myself how to make cookies

22:48 and things like that. So you can sign in and then you can go through all of the activities are listed.

22:54 You just choose an activity and then you hit submit and then you can upload your pictures to it.

22:59 And then it keeps track of how many points you've got. You have to have so many things from each

23:03 category. So it keeps track of all that information for you. It renames your picture with the name of

23:08 the activity. And at the end, you can hit a little button and it zips all your pictures up and you can

23:13 download it. And then you could just give that to the state and everything's all set.

23:16 That's cool. So as part of the state program, do you get like something back? Do you just get posted?

23:21 Do you get to be part of the ads or what do you get for doing it?

23:23 That's what you're getting. You mean the average user?

23:26 Yeah. If the average user goes through this thing that the state's put together. Yeah.

23:29 You get a free entry into all the state parks the next year.

23:33 Okay. That's pretty nice.

23:34 Yeah. It's a decent trade-off. Plus there's always a chance that you're going to see your

23:38 kids on the poster when you go into the park or whatever as well. Yeah. So I thought that would

23:43 be a great use. It was a great, you know, it's basically all this was just bookkeeping,

23:47 but I just kind of put it all into a little web app and made accounts for all my friends. And I think

23:53 not even my wife has used it yet. So, but it was a lot of fun to great. It was a lot of fun to make.

23:59 And yeah, I learned a lot doing it. It basically got me back into trying to learn a bit more about

24:04 JavaScript because as soon as I started putting things on the, in the app, I wanted them to look

24:09 nice. So then I had to go back in and JavaScript and jQuery and stuff has changed a lot since I played

24:14 with it a bunch. So I got back into learning jQuery or, and then even trying to figure out if it

24:19 was worth learning jQuery still. So yeah. So you use Angular, you use React.

24:24 Exactly. It took me days to figure out what all those were.

24:27 I know. Sometimes it's just, you know, a little jQuery will go a long ways.

24:31 Yeah. That's pretty cool. I feel like this example highlights one of the things that can really help

24:36 folks level up their, their learning and their programming skills is to build a little project

24:44 app. Right. And if you wanted to, you could definitely expand this out, make this a like a

24:49 really, truly public, a public website, maybe even try to convince some of the folks to list it on like

24:56 the park pages where they talk about these things, stuff like that. Right. So, but just going through

25:00 this project, I'm sure you've learned so many things, right?

25:03 It was. Yeah. I learned, I learned a huge amount about Flask and about templates and, and all those,

25:08 how everything interplays. And again, like I said, I teach myself cookies to make sure it was like a

25:12 sign in only site. And that was a huge, and then how to store actual information. You know, I stored

25:17 everything in Jason files and every time there was a new page, I'd unpackage it and then I'd dump it

25:22 back at the end and stuff. So I've, I figured out how to get around that and I don't have to do that

25:25 anymore. And so the next thing for me is learn databases so I can make sure I can stick it in

25:30 a database and stop having to stick things in, in Jason files. So.

25:34 Yeah, for sure. And that makes a lot of sense. I think it's, it's these things that really help,

25:40 help people learn, you know, these little projects and that's great. You also talked about some other

25:45 resources. What else you got? Yeah. Well, along the way, like I was trying to learn Python with the

25:50 intention of eventually teaching it. So like my goal is to, to teach it in a school setting at some

25:56 point. So I kept really kind of meticulous notes about everything that I was using along the way.

26:01 Python tutor, there's a, there's a website called Python tutor visualize. They give you look for

26:06 visualize Python, you'll get to it. And it basically shows you, you know, you put your code in the left

26:11 hand side and then on the right hand side, as you create a variable, it's kind of like a debugger,

26:15 but it's very, very, very visual. You can actually see what each variable represents. So if you're

26:20 trying to go through a loop and you're trying to figure out what happens inside the loop, you know,

26:23 what X is equal to at this time and, and what two things are actually trying to match or,

26:28 or whatever, you can actually see that on the side. And that was a huge, huge breakthrough for

26:32 actually being able to understand what happens in a loop and understand when I'm trying to work with

26:37 a dictionary, like what that variable actually is at that point in time. And that was a huge

26:42 breakthrough for me. That was a lot of fun to play with. Yeah. Python tutor is a cool project.

26:45 I fill up, whoa. He's doing a lot of neat stuff with it. Yeah. So that was great. Replit was really

26:51 good. Repl.it. Since I teach in a school that is all Chromebook. And I think a lot of educators

26:56 these days are teaching in Chromebook schools. Replit was a great find. And it's since I found

27:02 it like a year and a half ago, it's changed so much and matured a lot. Now you can host your own

27:07 data files and things like that on there. And that was a great thing. So you can just put something in

27:11 there and then hit the run button and you go, it's like we'll have a little terminal. That was a lot of

27:16 fun to play with. And that's a lot of fun. Also, if you're looking for help online, you can put

27:20 everything in there and then you could just say, here's what I've got so far, instead of trying to

27:23 go through and explain everything. And posting up a question on something like Reddit is really

27:29 great for the answers you might get, but it takes a lot of effort to get it up there. Something like

27:33 Replit makes it a lot quicker. You can actually show people what you've got.

27:37 Right. Yeah. If you're going to say, hey, I'm having this challenge or why does this do this?

27:41 Right. Having something like a Replit link or maybe a gist or something like that, like where

27:47 where it's not just, I'm trying to use this function and it's behaving weirdly. It's like,

27:51 okay, well no one can help you with that. Right. But this is, this is super cool. You know, another

27:56 resource that I think for Chromebooks that's just recently announced and they actually sponsored

28:02 the show a little while ago, but I'm just saying this because I think it's really cool. It's this

28:05 thing called coder.com. Yeah. I heard you talk about that actually. Yeah. Coder.com is basically

28:10 a Docker container that you get for free plus Visual Studio code in the browser. So if you're on a

28:18 Chromebook or something, you can just go to coder.com and go there and you have, you know,

28:21 a bunch of Docker containers and a little terminal, you can install whatever you want. Right. You have

28:26 like root access to your Docker terminal and your Docker container basically. So it's really nice. So

28:32 anyway, just throwing that out there as another one. All right. Keep going. You got a bunch here.

28:36 So Socratic is a YouTube channel and they've got a lot of great videos describing little concepts,

28:43 little bite-sized concepts in Python. I think it could work for a lot of languages, but it's Python

28:47 specific. And that was a big help for just kind of understanding, you know, you want to figure out

28:52 what a list comprehension is or something that you can go there and find that. They'll explain exactly

28:56 what it is, you know, nice production values and really, really informative. That was really good.

29:01 Okay. That one I haven't heard of. I'll check that one out. Yep. Prettyprinted.com is a guy who's

29:06 doing a lot of great YouTube videos on Flask specifically. A lot of, again, just little

29:11 bite-sized things on Flask. And that was huge for me because there's not a lot of people out there that

29:16 do very specific things for Flask as far as YouTube goes. So that was a great find.

29:22 That's a good one. That's Anthony Herbert and he's doing, yeah, he's doing good stuff as well.

29:26 With Flask, like he said, mostly with Flask, but Python. Uh-huh.

29:29 Realpython.com. And I know you've had Dan Bader on your show a few times or quite a bit,

29:34 even. Yeah. And RealPython is great. I started reading it before he took it over. It was a

29:41 decent resource then. And now it's just amazing. Like he's coming out with things so often,

29:45 I don't have time to catch up and read them all.

29:47 I know. I can't read it either. It's like a little booklet.

29:49 I'd almost appreciate if they released once a week and then I could actually keep up with it. But yeah,

29:53 so it's, it's been really, really, really good. I go there, you know, like I started using the

29:57 path lib library because, I read an article there and even though I feel it makes my life

30:02 harder than just using OS a lot of the times, it's a great, great resource.

30:05 Yeah, that's cool. I definitely agree with that one.

30:07 I spent a lot of time on Reddit.com, the learn Python there, just, kind of browsing sometime

30:13 if I'm bored, if I have 10 minutes to kill, I'll go there. Or if I have a question, and I have

30:17 the energy to, actually go through it, and explain it, I'll put stuff there. I've always,

30:23 always had really good luck. Only one time has somebody said, did you read the docs? Yeah. Which

30:28 is like, yeah, like the worst answer ever. Yeah. Q and A sites on the internet. People can be mean,

30:32 but I feel learn Python is pretty nice. Yeah. As far as like actual sites, those are the,

30:37 those are the main ones that I'd pulled up and I've been kind of recording. I've, you know,

30:41 a Google keep site where I just have any minor thing that I find I'll throw on there,

30:45 but those would be great places to start for somebody else who's in a similar position. You

30:49 know, I was working with a guy before that was learning Python kind of around the same pace as

30:53 me. I went with Flask and he was doing a lot of data stuff. he was a runner, so he was pulling his,

30:59 you know, information out of Strava and playing with it and making maps and, you know, recording

31:03 different things. And he worked a lot with APIs. So I learned a lot from APIs from him. And then

31:07 it was a lot of fun when we were working together, but he's, he's since taken a different job. So I'm

31:12 kind of back on my own again. You lost your, your one colleague to bounce programming ideas off,

31:17 right? I did. I'm actually, I've got a, his replace that I've actually kind of talked into

31:21 using a bit of Python for this and that. So, we've been playing a lot with, just,

31:25 we use the Google app suite and you can kind of interact with that with Python if you're clever.

31:29 And, we've been trying to do that a bit lately. So yeah, it's been fun.

31:32 Yeah. Yeah. That's really cool. It can be a big challenge to be isolated like that. Right. I

31:37 mean, even in 2018, especially earlier in your career to just be doing it totally on your own,

31:44 you know, cause I'm sure you've had lots of experiences like that where you're like, this

31:50 is not working. I know there's a two minute fix to make it work. Right. I've been trying to find

31:56 that for a day now and I still know what it is, but if I could ask somebody, they would just show me

32:00 that this is the problem. Right. Yeah. And if I could craft a good question for a half an hour,

32:04 I can post it on Reddit and I will get my answer probably by the end of the day, or, you know,

32:08 it'd be great just to have a relationship with somebody where you could say, Hey,

32:10 remember that project I was on while I've gotten to this point and I have to do this or that, or,

32:14 you know, or Hey, can you come over and look over my shoulder? That would be great. But yeah,

32:18 even in where I live, there isn't any place where I can go to take a formal Python class at like a

32:24 university. You know, there's three universities an hour away from me, but that's it. And even then there's,

32:30 there's very few opportunities for things like that. Like I'm ready to take a, some sort of a

32:34 SQL course so I can try and get, you know, to the next level on that. And it's just, it's tough to

32:38 find things like that. I can't take a computer course online. Not a formal one. I've taken, you know,

32:43 I've followed a few, you know, smaller courses online, but like a semester long courses is not

32:48 really an option for me, my learning style. Yeah. I'm not a big fan of those, to be honest,

32:52 either. I know there's like the MIT and courses and stuff that you can follow along and the Stanford

32:58 courses online. And I just feel like, you know, those are structured to be the format that somebody

33:07 who is in a university every day, taking six other or five other courses, and that's going to fit into

33:14 their homework, attend course pattern a little here and there. But, you know, honestly, what you learn

33:19 in those courses, you could condense that to a week or four days, not, you know, 16 weeks. If you didn't

33:27 treat it that way. I get so much from the discussion, you know, the discussion in class

33:31 that people's questions and going off on tangents to be able to read the room. There's so much,

33:34 there's so much involved in that. So, especially with the programming course,

33:38 it's something that I really want is an instructor in the room. Yeah. And those sort of MOOC classes,

33:45 they don't typically have that. I mean, maybe they've got like a higher TA for the online version,

33:49 but that's, that's not the same. Right.

33:52 This portion of Talk Python to Me is brought to you by Rollbar. Got a question for you. Have you

33:57 been outsourcing your bug discovery to your users? Have you been making them send you bug reports? You

34:02 know, there's two problems with that. You can't discover all the bugs this way. And some users

34:06 don't bother reporting bugs at all. They just leave sometimes forever. The best software teams practice

34:12 proactive error monitoring. They detect all the errors in their production apps and services in real time

34:18 and debug important errors in minutes or hours, sometimes before users even notice. Teams from

34:23 companies like Twilio, Instacart and CircleCI use Rollbar to do this. With Rollbar, you get a real

34:29 time feed of all the errors. So you know exactly what's broken in production and Rollbar automatically

34:35 collects all the relevant data and metadata you need to debug the errors. So you don't have to sift

34:40 through logs. If you aren't using Rollbar yet, they have a special offer for you. And it's really

34:44 awesome. Sign up and install Rollbar at talkpython.fm/Rollbar. And Rollbar will send you a $100 gift

34:52 card to use at the Open Collective, where you can donate to any of the 900 plus projects listed under

34:58 the Open Source Collective or to the Women Who Code organization. Get notified of errors in real time

35:03 and make a difference in Open Source. Visit talkpython.fm/Rollbar today.

35:09 So while you're throwing out these ideas of places people can go and check out stuff, and I think they're all

35:14 really well, really good ones. A couple also I'll throw out there is you talked about code combat, which I

35:20 think is really cool. There's also Check.io, which is a similar idea and has Python. I kind of feel like

35:26 code combat is better for beginners, whereas this Check.io is really nice, but it's you kind of have to be able to

35:34 program directly, right? It's like more free-formed answers. But it's pretty cool as well. It's kind of a

35:41 similar gamification. The thing I like about that is you can compare your solution to other solutions

35:46 that other people have. So you can see like, here's the five ways this was solved. And I always find like,

35:51 like I learned different things about my own programming style by comparing the answers. For example,

35:57 I realized that I implicitly optimized for performance considerations, whereas I didn't think I was doing

36:05 that. I'm just like, I'm just going to solve this. But I had solved it slightly more complicated. Oh,

36:09 yeah, I could probably use this other simpler thing, but this is going to be a better answer.

36:13 You know what I mean?

36:14 As far as problems go, I think that's probably a good one to have.

36:16 Yeah, probably. It probably is. But it just like, it made me realize that like, that's a thing that I do

36:23 because I didn't even notice, right? But once you compare your answer to five others, you're like,

36:27 well, why is this so short? I'm like, oh, because you could have done this, but I didn't actually want

36:30 to do that because, you know, whatever. And also the Code Challenges platform from PyBytes,

36:34 similar, similar to CheckIO that you kind of got to write proper code, but that one's nice.

36:40 I'll throw in Code Wars as well while we're talking about that. Code Wars is a very similar one. Again,

36:45 you grab an account and then they throw like, there's like eight different levels and you work your way up

36:50 the levels, but it's, it's language agnostic. So you can solve the different issues with whatever

36:55 language you choose or multiple languages or things like that. And again, once you, once you finish,

37:01 they'll actually have tests that are written that they'll run against your code. So, you know,

37:06 if you didn't, yeah, if you didn't make everything lowercase, so it works through this, you know,

37:12 it'll fail the tests or things like that. So that's a pretty neat one. I find I never usually have

37:17 the energy to just go and pick out a random problem that, because they're, they get pretty

37:23 complicated pretty quick. Yeah. Yeah. I totally, totally agree. So I, one more I'll throw out real

37:28 quick is Anvil, Anvil.Works. I had them on the show as well. And basically that is a super easy way to

37:34 create 100% Python based web apps. And the reason I'm bringing it up in this context is my daughter went

37:41 through and she's like, dad, I want to create a web app. I'm like, yeah, that's a lot of work.

37:45 There's a lot of concepts for us to cover. I mean, she's like nine at the time, right?

37:48 So, but you can go through this and you can write JavaScript E Python that runs where JavaScript

37:56 would normally run. And you can drag and drop stuff and you get like a backend that's already set up.

38:00 It's, it's really cool. Like my daughter created at nine, created like a pretty cool little data

38:04 driven web app out of it. And I thought, okay, well, if a nine-year-old can do it and have fun,

38:09 this is actually pretty cool.

38:10 Very cool. So is it, does it just run inside Anvil when you're finished or do you,

38:14 can you download it?

38:15 It has to run inside Anvil. So you got to have an account there basically, which is a bit of a

38:20 drawback, but it also means it has the better integrations, right?

38:23 Right.

38:23 But what I really like about this is one of the examples is so often programming is taught in

38:28 terminals and repls and like how many beginner programmers and kids and stuff go, oh my God,

38:34 it's so amazing. I printed, you know, right. They're just completely, the expectation is not

38:40 that I'm going to do something interesting in a terminal or whatever, right. They need some visual

38:46 feedback. And like one really nice way to get visual feedback is the web. If it's not like too hard to

38:51 make it work. And I think this strikes a good balance.

38:53 Excellent.

38:54 Yeah. So what are, you know, talk about some, some of the roadblocks and maybe like what we can

39:00 do to help folks, especially who are learning in a vacuum because they don't have any colleagues or

39:06 they don't really know anybody or something like this.

39:09 Yeah. Boy, I don't know. It's, it's been a, it's been a slog actually. You know, I mean,

39:14 things are getting, you have to get to the point where you get the vocabulary to ask the questions

39:18 questions and that takes a little while to get there.

39:20 The online space is really good for helping people, but you have to have like a minimum level

39:26 before you can pop your head up and not just be dismissed as like knowing nothing at all.

39:31 You know what I mean?

39:32 Yeah. And even just to Google, Google your question first, right? You've got to know exactly what you're

39:36 trying to do at using the right nomenclature, right? So that's tough to get to. I think it depends

39:43 on your learning style. I mean, my learning style, I've been following web tutorials for years and

39:48 years and years. So it's pretty easy for me to just kind of get on and deep search, whatever I'm

39:52 looking for. I don't know that I have any solutions. I'd really like to see more classes available,

39:58 you know, in high school where you can get started and things like that. I'm part of a group that's

40:02 trying to make that happen here in Vermont. So I think that's really where we have to get the access.

40:07 Yeah, absolutely. I think it would certainly help more kids see that as an option. I think.

40:13 What about mentors?

40:14 Mentors would be great. You still have to find a place where you can kind of make those connections.

40:21 You know, meetup groups and things like that could be kind of intimidating. I'm part of like a code

40:25 meetup group in Burlington, but you know, I head down and I don't know too many people there and

40:29 everybody else seems to know each other there. You know, you can kind of listen to conversations and,

40:32 oh yeah, I just got a job with this new startup or whatever. It's not like a lot of basic

40:36 meetups out there. Like WordPress has these things called WordCamps in there. And I've heard you talk

40:41 a lot about PyComs, but the WordCamps are always kind of aimed at beginners as well for the most part.

40:47 And I don't know that we have anything common like that because WordCamps happen kind of all over the

40:52 place and they're really, really common.

40:54 Yeah. It sounds almost like you need like a learning to code meetup type of thing, not like I'm a pro and

41:02 here's how, how we use Docker to optimize this other thing or whatever, right?

41:06 Yeah. So we've got a lot of, not a lot. We have a few conventions for teachers tech conventions throughout

41:11 the year. So my goal is to kind of go and show off some of the things I'm doing with Python at those

41:16 things to try and get other teachers aware of kind of what can happen.

41:20 Yeah. I do think there's some opportunities at some of these, these main conferences like PyCon,

41:26 for example. But, you know, they're only once a year or maybe a couple of times a year. If you

41:30 factor all the local ones you could get to, you also have to be at a certain level before you're

41:35 willing to say, I'm going to travel to Cleveland.

41:37 Right.

41:37 To go to a conference for programmers.

41:40 Right.

41:41 And that's going to help me get into programming, right? That's a pretty hard stretch to make. I think

41:46 it's true, but I don't think that most people would believe it.

41:50 Right. Yeah. And maybe just exposure to some sort of language to get started. Because I've,

41:55 I've heard a lot of people, a lot of the guests on your show, they're always like, oh yeah,

41:58 I used Python for a few things. I did. I started writing in this language and, and I'm here,

42:03 I am learning Python. I'm thinking to myself, that's crazy. How could you just go over and do like

42:07 one thing, like I couldn't do that in this, this other language. And then I started, I bought a

42:11 JavaScript book about four or five months ago and I started going through like, oh, this isn't that

42:15 bad. This isn't that bad. I could, you know, if I had a little task to do in this, I could do that.

42:19 And so then if I want to use not jQuery for something, I feel pretty confident I can do that

42:23 now. And I can go and Google what I need to do because I've, I know the concepts in general.

42:28 So that's, that's a big help. So, you know, just exposure to some sort of language would help you

42:33 if you want to then learn Python later on.

42:35 Yeah, absolutely. I definitely think that learning your second language is an important step.

42:41 Whatever that programming language is, it, once you know, too, you're like, oh, I've learned

42:46 multiple programming languages. Now, all of a sudden the third, fourth, and fifth seem way more

42:51 approachable. You know what I mean? It's not scary.

42:53 If you want to go anywhere near the web, you're going to need about, you know, three or four languages

42:57 under your belt that you, you know, if you just knew CSS, people would probably laugh at you.

43:01 You couldn't do anything early. I totally agree. The web is tricky because

43:05 you'd really do have to do three or four programming languages. You've got to do some

43:09 kind of database. So SQL or something along those lines, you've got to do a server side language.

43:15 So Python or something, you've got to do JavaScript, CSS and HTML. Maybe you can get away with no

43:20 JavaScript for a while, but that's still four to five.

43:22 Yeah. You can only not do JavaScript until you want people to like, enjoy what they're looking at.

43:26 Then you, then you, then you're pretty much going to have to do that too.

43:29 Yeah. Yeah, exactly. Exactly. Interesting. I don't really know a whole lot for the

43:34 learning in a vacuum stuff that'll help. I do think there's some opportunities for

43:39 a couple of things. I think there are some online communities. I know there's a bunch and I don't

43:44 really track them that carefully, but there's some Slack channels and like, I have a Gitter channel for

43:49 the podcast at gitter.im slash talk dash Python. And people go in there and ask questions like,

43:55 Hey, I'm trying to do this. Any ideas on which is better or how I should do that? And sometimes

43:58 there's a lot of good conversation there. There's the Pythonista cafe from real Python and Dan Vader.

44:03 There's the PyBytes Slack channels. Those are all places people could drop in and, you know,

44:09 talk to other folks that are maybe at different levels, you know, or, or at their level rather.

44:13 Yeah. There's still, there's still that human side of things that really in the early days can help.

44:19 Yeah. I definitely, when I started programming, it was very much in isolation. Maybe there was one

44:23 other person that kind of knew some stuff in the very early days. And then, you know, it's just a

44:29 hand, like two or three of us at a company of scientists or other places, right. Where we all

44:36 knew some stuff, but it, it was definitely a lot of a challenge to. Yeah. Even just one person that

44:41 you can kind of geek out with and talk about different things or, you know, concepts and stuff. It just,

44:45 it just really, really helps. Yeah. So I've been, I'm concentrating on growing the number of

44:50 budding coders around me. Yeah. You pass that off, automate the boring stuff around.

44:54 That's right.

44:55 Hey, have you seen this? Check this out. That's really cool. One other thing that you did bring

45:01 up that, that may be interesting is Python Anywhere. Yeah.

45:05 Yeah. Have you used that?

45:06 So as soon as I started making my web app, I basically, you know, had to figure out how to

45:10 get it out there to the wide world. I've always used Bluehost as like my web host. And it was,

45:15 I started looking at how to run Python on it and it just didn't seem like it was going to be possible.

45:20 There were like ways you could hack it, you know, to make it happen, but there wasn't like a path to

45:24 getting something on there. So then asking around again, I found Python Anywhere and it was really,

45:30 really easy to start. Other than the fact that the very first app that I tried to put on there,

45:34 as soon as I put it on there, the home director was different. So everything was broken.

45:37 I think I almost cried. It was, yeah, I'd worked for three months getting this work on my computer.

45:42 And then I put it up on there. I was so psyched that it just broke. So it's been about two days

45:46 going back in there and rewriting all the paths. But yeah, it was great once I got it working.

45:51 And Python Anywhere allows you to put up, it gives you one site, you know, you're just going to get,

45:56 you know, your username dot Python Anywhere. It's free. So if you're just playing around and learning

46:01 how to do things, it's a great, great resource. I've been trying to get my app on DigitalOcean,

46:08 just because I want to be able to, I like the pricing structure for DigitalOcean. Like I'm ready

46:12 to take it to the next level and have a little bit more control over things. But I followed the

46:17 tutorial so many times and I get to a certain point, everything's working, everything's working. Then I

46:21 try and do the Gunicorn level and nothing. So that's a bridge I'm going to cross one of these days.

46:28 Yeah, that's definitely a challenge. I mean, both of you, you touched on this a couple of levels

46:32 at the, like, I just, I built this thing. It's working. How do I get it on the internet? Like

46:36 that is, you know, for a lot of folks, that is a huge challenge because they probably don't have a

46:40 whole lot of Linux admin experience. Something like Bluehost, they maybe don't really support Python,

46:47 but you already have an account with them. Like, well, how can I cram my Python app

46:50 into their structure? And that probably doesn't fit. It's definitely another step that you have to take

46:57 going through these words. It's certainly a challenge.

47:00 Yeah, I was on Reddit actually explaining problems because it gets down to this

47:03 sockets issue and you got to say, you know, it's got to go to this socket. And I know it's some kind

47:07 of like a permission problem, but so I was trying to explain it on there and I was kept going. I was

47:12 like, oh, it works great on Python anywhere. But as soon as I get over here, the guy's like, well,

47:15 if you don't really understand sockets, maybe you should just be on Python anywhere. So I'm like,

47:19 well, maybe there's some truth to that. So I've given up for the time being and just kind of

47:24 going there. But if I wanted to create something serious, that would be a roadblock for me. So,

47:29 and I guess there's other places.

47:31 Well, I totally understand what he's saying there, but at the same time,

47:35 how will you ever understand sockets if you don't beat your head through to against this wall and get

47:42 through it on Linux and get the thing set up, right? Like it's not like, well, you just need

47:47 another more year experience and sockets will be obvious, right? Like, you know, Linux sockets for

47:52 transporting between Nginx and Genicorn, right? Like that, that skill is not like you're going to

47:57 ambiently pick that up, right? You have to just go through that step and maybe, maybe more time,

48:02 it would be easier. But at the same time, I don't know. I do think there's a lot of power in learning

48:06 how to just deploy your app on Linux, right? Whether that's Linode, DigitalOcean or something else.

48:12 I think those are some of the really best hosts, right?

48:15 That's like the next level, right? You could actually make what you want happen. Because one of the things

48:19 that coding has done for me is made me feel like a little kid again. Like I can do anything,

48:23 you know, like not, I can't do anything, but you know what I mean? It's made me feel like my,

48:26 you know, my computer is, is this huge, like wonderful machine that I can create stuff on.

48:31 And that's been a wonderful, wonderful feeling. But then if you can't show it to anybody and get it

48:35 out there in the world, it definitely falls a little short because then it's just you telling

48:39 people what you did as opposed to being able to show off, you know, what you created. So it was great to

48:44 find Python anywhere. It was really, really was awesome. And it's a great resource. And you know,

48:48 it's just a little bit more expensive than any other options. So it's easy enough to get your

48:52 stuff out there, but to take it to that next level, there's definitely, you know, I mean,

48:55 there's experience and skill that needs to happen to make that happen.

48:58 I definitely appreciate that. It makes me feel like a kid again, right? Like when you're a kid,

49:03 you feel like you can build anything. Like think of the days of like Lego or Hot Wheels or all those

49:09 kinds of things that you fiddle with as kids, right? The little building block stuff. And it's just like,

49:14 yeah, I can do that in the digital world.

49:16 You're going from being a consumer to being a creator again. Like we did this thing. I love

49:20 my school week two years ago at my school. And it was, you know, it's, I love my school week. My

49:24 principal comes out and she's like, Oh, can we get every kid in the school to tweet during this time?

49:28 I was like, well, I don't really know. We don't really want to give them the password, you know?

49:31 So she's like, well, I tell you what, you get it all in a Google form and I will sit and I'll set my

49:36 alarm and I'll tweet every five minutes. I'll tweet, you know, three of them out. And I'm like,

49:39 I don't think that's probably how you should be spending your time. I think we could figure out something

49:44 different. So, yeah, we, you know, we spent all this time looking around online and we found

49:48 something that worked with Google sheets and it was this auto tweeter and everything. Well, last year

49:52 for this event, I created that, you know, I, I wrote it and it was, you know, it was rock solid. I did

49:57 exactly what we wanted instead of having to, you know, we probably tried out seven different systems

50:01 years before, before we were coding. So it just gives us that ability to take control of those types

50:06 of tasks.

50:06 That's so cool. It's just like, cause it's not that big of a project.

50:09 No, it isn't really, but it can make a big difference to who, who it's for, right?

50:13 Yeah. You find out what Python package you need and you write a loop and that was it. It was pretty

50:17 cool.

50:18 Yeah. The real danger is that it goes crazy.

50:20 Yeah. We did get a few complaints that people telling us that we were tweeting a little too

50:25 much, but it wasn't my idea. I was just carrying it out just in my defense.

50:30 But you know, if it gets stuck in a loop or something, yeah, then, then you'd have a lot of tweets. That'd be bad. But no, that's really, really cool.

50:39 You also, you talked about building stuff again and, and being a creator. I think one of the things

50:45 that would be really nice that you talked about would be to have little devices or IOT things for

50:52 kids. Right. And there's definitely some good options for Python there.

50:55 Yeah. I listened to your podcast where you interviewed the guy that did the Python for

51:00 microbits or not micro, yeah, microbits. And I went to, that was the same weekend we had this

51:05 convention and I went down there and I got to play with microbits for the very first time, like an

51:09 hour and a half after, cause I listened to your podcast while I was driving to it and it was

51:13 fantastic. Yeah. I'm pretty psyched about microbits now I have to say. So my wife is, is English.

51:19 We used to live there for a while. We're first married. So I've kind of connected a lot to,

51:23 I follow a lot of English kind of education news. I was pretty excited to be able to get

51:27 ahold of these things and I'd really like to kind of replicate what they did in England,

51:32 kind of here in Vermont. I haven't taken any steps towards the whole BBC microbit and all

51:36 that kind of stuff, right? Yeah. Trying to get one in every sixth grader's hands would be amazing. So that's one of my long-term goals here. It's maybe shorter

51:44 term goals, but just to try and seek out funding, you know, from some Vermont businesses and things

51:48 like that. Cause we've got a couple of cool big tech companies here that might be amenable to

51:53 something like that. But they're really, really great for kids just to kind of see what they're

51:56 doing. You hold it in your hand and see the effects of your code.

51:59 Yeah. I definitely think one of the keys in the early stages of getting involved in this kind of

52:05 stuff is early feedback, quick feedback and visual feedback of some type, right?

52:11 Right.

52:11 And if you're putting together a little device and you know, the fan blows every time you walk by it,

52:16 or, you know, it counts the number of people that walk through the door. Like that's pretty,

52:19 pretty concrete.

52:20 Yeah. Very cool. And Scratch just made, Scratch just updated Tuesday or Wednesday.

52:26 And now it's got an extension in there so you can write in Scratch. It'll show up on the micro bits

52:30 even. So it's very, very neat kind of bridge for kids to get that.

52:34 Yeah. And they're not super expensive. You know, it's not like trying to get a laptop for everybody.

52:39 It's right.

52:40 It feels like it's half a funding problem and half a bureaucracy problem.

52:44 Right. Yeah. Making people think that it's, realize that it's important, you know,

52:47 that's, that's always the challenge.

52:49 We're lucky that we have, the BBC and the UK for plowing through and doing that the first time.

52:55 And they've got like, you know, one of the podcasts I did with Nicholas about that,

52:59 we talked a lot about the results, right? They have not just having done it, but they did like

53:03 sort of studied the outcomes, which I thought was really cool as well.

53:06 Yeah. They lead the way in quite a few different things. I mean, they were put, they put smart

53:09 boards, you know, and everybody in every room in the entire country, you know, all at once and,

53:13 and things like that, that really make a big impact. Things that you can't do because of the way our

53:17 education system is structured compared to theirs. So it's pretty neat.

53:20 Right. Yeah. A lot of, other countries have very, like more nationwide, the same education.

53:27 Right.

53:27 Whereas us, you know, there's cities or towns five miles apart have totally different

53:33 bureaucracies manage that, right? It's, it's quite different.

53:36 We have a more different here. Every, my kids go to a school of 106 children and they have

53:42 their own school board. It's, it's unique.

53:44 Yeah. Unique. I'll leave it at that.

53:47 So, another thing you were talking about is, computer science education and Python.

53:52 Yeah. I'm, I'm a member of a computer science advocacy group for Vermont and,

53:57 there's some people from the state education agency are involved. And then there's a number of

54:02 educators involved as well. And we're just kind of running into this thing where, I'm probably

54:06 the only, Pythonista in the group. I think, there's a lot of Java teachers because your AP

54:12 computer science stuff is, is, uses Java.

54:15 Right. So if you want to be an AP computer science teacher in the United States, you basically had to

54:19 learn Java. And once you learn Java, if you're not a programmer, why would you learn other languages?

54:23 Exactly. Or, you know, there's just, it's just kind of an old school mindset, you know, this right

54:29 nowadays, you probably want to have a few different languages available, but anyway, so we're really

54:34 struggling with the number of people who can teach computer science. You know, it's, it's not an

54:39 easy subject to necessarily grasp the amount of teachers that we have in there. And one of the

54:45 things I always say is if you have a computer science degree, you're probably going to go and

54:49 make a lot more money than you are instead of deciding to come in and be a teacher and spend

54:53 most of your day trying to tell kids to get off their phones and pay attention or do whatever,

54:58 rather than, work at an office and not have to deal with those types of things. So,

55:03 yeah, so we're trying to kind of increase the amount of people who can teach computer science

55:08 and just kind of on an introductory level. I don't think, I don't know how much there's going to be

55:13 into getting people into, you know, being able to teach AP classes and things like that, but

55:17 you got to start somewhere. Absolutely. Well, you know, if, if you got, let's say a hundred teachers to learn Python and be able to teach at a basic level,

55:25 surely some of them would just pick up things like automate the boring stuff. They would get

55:30 interested and they would just naturally get better. I think in our entire state,

55:34 they figured we had 43 people that were qualified.

55:39 So it's, yeah, so there's a, there's a number of challenges again. And, you know,

55:42 a lot of them are, are older folks too, that are, that are on their way out of education. So

55:47 it's a, yeah, there's lots of challenges in there to getting it started. I'd like to see more teachers

55:52 learn basic coding because a lot of what's going on in schools right now is teaching regular teachers

55:58 how to teach some, you know, some things. And there's a lot of like, we'll learn with the kids

56:03 and that type of stuff, as opposed to, I'd love to see more and more teachers just take a introductory

56:09 Python course and, you know, and, and actually, yeah, maybe pick up, automate the boring stuff.

56:13 I didn't see the value in those types of things. I think if you could get your average teacher to realize

56:17 that, that coding isn't just something that they're going to do for an hour on Tuesdays,

56:22 is that it could be interesting in general and just get that, you know, to see somebody's eyes light up

56:26 when the first time that they, you know, they write a program that, that creates a file on their computer

56:30 and then writes to it or something is just really powerful.

56:34 Yeah. Or there's some project, there's some thing that they were doing over, like some report

56:38 they've got to write every month that was dreadful. And then all of a sudden they can push a button

56:42 and, you know, half a second later, it's done. It's like, oh, this is like a magic wand.

56:47 Yeah. I actually, I wrote a program that went through and so we have training, you know, beginning

56:54 of the year trainings, bloodborne pathogens, all that kind of stuff. And, and normally everybody

56:58 has to sign off on a piece of paper. Well, they, they, they made that electronic a couple of years

57:03 ago. And then it was always, so then I created like a spreadsheet that aggregated everything,

57:07 just, you know, just using Google, Google apps. And then every two weeks I get an email from my

57:13 principal that said, oh, Hey, how many people still need to complete this, this and that. And I have to

57:17 go through it and write it all, you know, type or copy and paste it into an email and send it to her.

57:21 And then she would contact everybody. Well, I automated that the other day,

57:24 our beginning of this year with, with Python. And now it just sends out the emails to people,

57:30 you know, on Friday afternoons or Monday mornings, I think I did it Monday morning. So they wouldn't

57:34 just say it was a Friday afternoon. Yeah. And those types of things, I actually got a hug from my

57:38 assistant principal when I wrote that one, cause she was so excited that it was actually, it was

57:42 working and people were finishing what they needed to do on time. So that was pretty cool. Those types of

57:46 projects are fun. Yeah. That's awesome. Like she no longer has to be the bad person who goes around

57:51 and nags everyone about something. Yep. And she gets an email based saying, also, you know, I, I,

57:56 I just made two lists, one list for the people who were going to get the email, one list for her and

58:00 everybody who was going to get an email. And then she gets an email with all the people on it. So

58:03 it was a great solution. If I don't say so myself. Yeah, that's cool. It's actually,

58:08 highlights, an interesting thing that you hear a lot around code reviews, right? So code reviews,

58:15 you look at the code and other more, probably more at least equally experienced programmers look at

58:20 and go, well, this is good, but you need to change this or that. And there's a lot of stuff that just

58:24 linters and other automated systems can do like, oh, the indent is wrong here. This line is too long.

58:30 This function has too many lines, et cetera, et cetera. Right. Like when people sort of nitpick like

58:35 that, they come across as this annoying person that always nitpicks on the details when we're trying

58:40 to talk about something more important. Right. Right. But if just an automated build tells you,

58:45 Hey, your code is not quite right because X, Y, and Z, like that doesn't cause the same

58:49 emotional reaction as it does that kind of stuff. So it feels like it must be similar here. Right.

58:55 I created a dummy account to send the emails out from. So it wasn't me.

59:00 So there's my school automated, you know, email account now. So.

59:04 Yeah. And it's the same type of thing. It's right. Like the, well, the system knows I haven't done it.

59:08 It says I have to do it. So I guess I'll do it. So I stopped getting this email or eventually someone's

59:12 going to talk to me, but right. Like taking it away from having the person do the nagging is,

59:17 it's kind of a nice touch. One final thing we have time for, and then we'll have to wrap it up.

59:21 Sure.

59:21 You had some thoughts about music education and programming education.

59:25 Yeah. So one of your podcasts recently, you were saying that geometry was a good place to replace,

59:31 good class to replace computer science with. And I really thought that was a great suggestion.

59:36 actually I've been telling that to people since then, but I've always, I've always figured that

59:40 music was a great example of what the education has done to kind of create more musicians in the world.

59:47 Right. So in my school, there's around 600 kids and we have two music teachers, no computer teachers.

59:53 Well, I mean, I kind of fulfill that role, but no official, you know, computer curriculum that goes

59:59 all the way through, but we, we have an instrumental teacher and a vocal teacher and they go through

01:00:04 and every kid gets exposed to it. And when you get into fourth grade, then you get to choose an

01:00:07 instrument and you get, and you get small group lessons and things like that. And then you go on

01:00:12 and my best friend is the music teacher at the middle school and high school. And then he gets the same

01:00:16 kind of cadre of kids that go all the way through and they do, they do all these activities and it's,

01:00:21 you know, it's, it's a very select group that has chosen to kind of be in this thing. But then you get

01:00:25 a lot of musicians out of this, people who have chosen to go into that, you know, they get pulled out of

01:00:29 class because it's important to get to their individual lessons they put on concerts, all this,

01:00:34 that's a lot of effort to go into this thing that isn't math, science or reading. And I think that's a

01:00:39 great model that we could do with computers. Like what if we, so I went to this computer science teacher

01:00:44 conference in Rhode Island. We all drove down in this van for like six hours together and everybody in the

01:00:50 van was a musician except me, you know, right. And they were all computer people. I could imagine going to

01:00:54 like some kind of music weekend or music teacher convention and looking around in the van and having

01:00:59 like, you know, six out of seven people be programmers as well would be pretty cool.

01:01:03 Yeah. I definitely think that's something to aim for. That's awesome.

01:01:05 Yeah. Everybody, everybody learns to kazoo and then you pick your instrument, you know,

01:01:09 what if everybody learned scratch and then you got to pick it, you know, you got to either go

01:01:12 the JavaScript or Python way afterwards or whatever, you know, whatever it might be just to,

01:01:17 to funnel that and support it in the same way we do with music. And if you want to see parents get up

01:01:22 in arms about something, try and cancel a music program. They will go bats over something like that.

01:01:27 Yeah, for sure. The point of the music program is not to make everybody a musician, right?

01:01:33 Right. Well, professional musicians.

01:01:35 Yeah. Professional musician, right? Like as their job, right? It's not like, well, you first take this

01:01:42 music class and that music class so that then you can go start the next Pearl Jam or whatever. It's just,

01:01:47 so you have some, you know, musical skills, right? For life.

01:01:50 Everybody agrees that music is important and everybody agrees that it's a life enriching thing.

01:01:55 Everybody agrees that, you know, we want more music in the world and that it's valuable for kids to do

01:02:00 this. So we're going to put these resources into it. And you got to wonder why, you know,

01:02:03 why, why technology isn't to that quite same level. Although technology does kind of bleed into just

01:02:08 about everything else at this point. So it's could be different. So it does bleed in, but it almost

01:02:13 always bleeds in, in the sense that it's a consumer situation, right? Like game biology class.

01:02:19 So I use SAS to do the stats on my lab. Right. But I didn't, I didn't create.

01:02:26 We spend all of our time trying to find the perfect tool to do this instead of creating a tool that

01:02:31 might help it, you know, like, oh, we have to sort through all these other things and figure out what

01:02:35 might do this.

01:02:35 Exactly. Exactly. So, yep. I'm still of the belief that geometry is interesting, but not as,

01:02:41 as useful as programming and the same types of things, logical thinking, like sort of proof type

01:02:48 stuff, all that. It's the same as programming. Agreed. You've converted me. Awesome. Well,

01:02:52 I have no control over the geometry anywhere, but I can at least say my, say my thoughts. I did,

01:02:57 I do have a couple of math degrees, so I've, I've thought about it some. And I got quite far in my

01:03:04 math education without really using much. I learned it all in geometry. I'm pretty sure.

01:03:09 We'll leave it at that, I guess. All right. So, Rusty, I think we have to put the main

01:03:15 conversation and sort of leave it there. All right. It's time for the two questions as always. So if

01:03:19 you're going to write some Python code, what editor do you use? Adam. Yeah. Adam's cool. Yeah. I had a

01:03:24 student show it to me when we were in my HTML class and I've been a huge fan. I kind of thought,

01:03:29 why isn't he using what I've told him to use? And I started using it after he left class that night.

01:03:33 It's wonderful. I really like it. This kid won't listen to me. This kid's really bright.

01:03:39 He was right. I never let him know that, but he was. Yeah. That's pretty cool. And a notable

01:03:43 PI PI package? I love PI G sheets. Is that for talking to Google sheets?

01:03:47 It does. It talks to Google sheets and allows you to just kind of manipulate them as Python objects

01:03:51 and do all kinds of things. And I kind of consider them like a poor man's database. So that's pretty

01:03:56 much how we use them. We're able to have, you know, people enter things into Google sheets,

01:04:00 which is really easy to get information in there. Then I could do all kinds of cool stuff with it in

01:04:04 Python once it's in there. Yeah. I can see that being really useful for organizations like yours,

01:04:09 where you're not going to build a whole app for them to do a thing, but if you can share a Google

01:04:14 sheet with them and then just code against that, like they can still do their manual entry, but then

01:04:18 you can generate all the analysis just by pushing a button or typing a CLI command.

01:04:24 Yep. It's all out there in the web too. You don't have to, you know, get people access to it or have a

01:04:27 server or anything like that, that, that people have access to. Yeah, exactly. Yep. Yeah. It's online

01:04:32 and shared without you running infrastructure. Yeah. Very cool. All right. So final call to action,

01:04:37 people are learning Python or learning to teach Python. What do you have for them? I would say

01:04:43 automate the boring stuff, code combat would be great and repl it. If you're trying, if you're in a

01:04:49 teaching situation, that's a great place where you can share code and check things out. Yeah. All right.

01:04:55 Well, it was really interesting to talk about all these ideas with you and I've got some stuff to

01:04:59 go check out as well. So thanks Rusty. Perfect. Thank you. Bye. This has been another episode of

01:05:05 Talk Python to Me. Our guest on this episode was Rusty Gregory and it's been brought to you by

01:05:11 Linode and Rollbar. Linode is your go-to hosting for whatever you're building with Python. Get four

01:05:18 months free at talkpython.fm/Linode. That's L-I-N-O-D-E. Rollbar takes the pain out of errors.

01:05:26 They give you the context and insight you need to quickly locate and fix errors that might have gone

01:05:30 unnoticed until users complain, of course. Track a ridiculous number of errors for free as Talk

01:05:36 Python to Me listeners at talkpython.fm/rollbar. Want to level up your Python? If you're just

01:05:43 getting started, try my Python Jumpstart by Building 10 Apps course. Or if you're looking

01:05:48 for something more advanced, check out our new async course that digs into all the different types

01:05:53 of async programming you can do in Python. And of course, if you're interested in more than one of

01:05:57 these, be sure to check out our Everything Bundle. It's like a subscription that never expires.

01:06:02 Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We

01:06:06 should be right at the top. You can also find the iTunes feed at /itunes, the Google Play feed

01:06:11 at /play, and the direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy.

01:06:18 Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.

01:06:23 Thank you.

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