How do you learn to program when you're working in a vacuum?
Sure, there are resources on the internet, but sometimes just bouncing ideas off other people
in person makes a huge difference. Join me along with Rusty Gregory as we discuss how he's learning
and teaching Python in a small town in Vermont. This is Talk Python to Me, episode 194, recorded
January 4th, 2019.
Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the
ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter
where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm
and follow the show on Twitter via at talkpython. Hey, everyone. Before we get to our conversation
with Rusty, I want to tell you about a new course we just launched, Introduction to Ansible.
This one was created by Matthew Mackay of Full Stack Python. If you're involved with deploying
a web app or managing servers, especially Python web apps, you owe it to yourself to check out
Ansible. It provides a declarative way to provision, configure, and evolve infrastructure and applications.
What makes it even better is it's written in and can be extended in Python. Check out the course
over at training.talkpython.fm. Corporate and team options are available too. Now let's talk with Rusty.
Rusty, welcome to Talk Python.
Wow. Thank you. Thank you for having me. It's good to be here.
Yeah, it's great to have you here. Super excited to talk about learning Python and teaching Python
in your world. But before we get to all that stuff, let's just start with your story. How do you get
to program in Python? I've been playing around with the web for quite a long time. I had a basic
class in high school back in the early 90s. And then basically, I started to work on the school
web page when I got hired out of school and taught myself HTML and CSS and kind of made the transition
from using WYSIWYG editors into using Notepad++ and learning the code that way.
I think that's really interesting. I don't feel like WYSIWYG editors are really much of a thing.
They used to be big. I don't know if people listening realize how big they were. There was
FrontPage and there was Dreamweaver and there was Visual Studio with its ASP.NET stuff. And it was
very programming. It was like, write your website in Word.
I feel like once you went to CSS, that WYSIWYG editors couldn't really keep up with it.
So then after that, you were just better off typing in code.
I was thinking that as well. WYSIWYG editors, I guess the best they could do was tables.
Right. Here's your table. Change the color in your table if you like it. Stretch it to the right.
I mean, didn't the early days of the web feel like a lot of borderless tables? That was crazy.
It really was. Everything was a table and merged cells and all that kind of stuff. It was great.
But then once we had many different sizes of screens to deal with, it didn't really meet the
deeds of what we were going to. And then mobile, there's no way you could do a table-based design
in mobile.
Yeah. You don't care too much about responsive tables these days.
No. When I first started teaching HTML, we had to design two different sites, right? There was a
mobile site for something and then there was a regular site.
Oh, that's right. I remember. Do you remember the .m domains? Or like if it was, you know,
talkpython.fm and be m.talkpython.fm. I totally forgot about that subdomain.
And there was all the horrible converters that you could use to just click a button and change
your site into something that worked on mobile. And yeah, it was a lot of work.
Yeah. Yeah, it was a lot of work. Programming used to be hard. It still is, but in a different way.
I do want to just ask you a little bit about the CSS since that's part of your transition here. I feel
like when you're trying to write websites, it's just so hard to get them to do what you want them
to do and behave correctly until you sort of bite the bullet and learn CSS. And, you know, maybe it's
a two or three week really hard studying period, but then on the other side, it just opens things up.
I mean, you did a lot of CSS. How do you feel?
It became a lot of fun, actually. It wasn't as much hard work kind of doing things. And in the early
days of CSS, not all the browsers understood everything. So you had to, there's only certain
things you could do and then you had to hack it back. So it worked on IE or whatever it was that
you were doing, but it was a lot of fun. It really added the fun and made me want to go further.
I started just buying CSS books and, you know, everybody took you through the basics of one site
here. We're going to start this site. We're going to end up with this site. So, you know,
just designed three or four sites as I read through these books. And eventually every book I bought,
I'd already read, you know, I already knew what they were saying. So I finally felt confident at
that point.
That's really cool. I think the book that I learned CSS through was something called CSS,
the missing manual. I think that was it. That's a good one. Nice. Okay. So you started out with
front page and, and WYSIWYG stuff and you sort of graduated to real web development, right? With CSS.
And where'd the story go from there?
Basically I started a little website business. We had two daughters at a time instead of one
and I needed to earn some extra money. So I started doing small websites for people.
And then I found that there was a job open at a junior college and it was, I was making just as
much money teaching web design as I was creating sites for small businesses, you know, small local
businesses at that time. So that was a great jump for me. So I love to, I work at an elementary school
during the day. So it was great to go and work with adults in the evenings and, and kind of get
my coding fix at the same time. It was a lot of fun. And that got me into WordPress eventually. So
then as soon as I got into WordPress, there was a, you can use a lot of WordPress without having to
get too heavy into databases or PHP at all. In fact, you really don't have to know anything about
that if you don't want to. But when I started with WordPress, you still had to create your own
database programmatically. And then, and the updates were as a matter of overwriting files and things
like that. So it was a nerve wracking kind of a process. So I had to learn a little bit more
about PHP so I could fix things when I broke them, but I never was able to create anything in PHP. I
was only able to, to just change things. It was mostly a read only language for you. Correct. Yeah.
But it was, I knew I wanted to learn it. So then I bought a couple of PHP books and I could never,
ever crack it. I never got past, you know, just trying to figure out what the difference between
integers and, and, and everything, not that that was too much, but it was, it was boring.
So I never got into the part where I could get to functions or creating stuff in there.
Yeah. PHP takes a lot of heat or negativity from real programming languages or whatever, but
a lot of the web runs on PHP and WordPress in particular, like a serious amount of what you do
on the web is interact with WordPress, right? And PHP. And of course, Facebook.
I feel like I could go back now and it would be, it would be easy because I've got the basics down,
but I could never get past the basics. And you know, every, every book I bought only showed me,
you have to know these things so you can become proficient. So, but I never got to the part where
I was proficient. I'd give up before that. Yeah, of course. Do you think that is because
PHP is always, as least as I see it, it's always like mixed in with the web. So you're,
you're programming in a webpage where something like Python or JavaScript, you can do it separately.
Yes.
See, it's sort of learn it in isolation and then bring it into the web.
Right. There's a lot of moving parts when you're playing with, yeah. When something that's inside
WordPress or yes. Yeah. Exactly.
For me, I couldn't really grasp a lot of the programmatic programming concepts for me,
writing functions, how those interacted, you know, sticking things in hooks, all that didn't
necessarily make sense. I didn't have anybody to ask at the time. I live in a pretty remote part of
the world and there's no formal training for any kind of those languages around here. There's no,
there's nobody I could ask, you know, other than message boards and message boards weren't even that
huge at the time, actually, or at least mine, my experience with them wasn't very big at the time.
I feel like there's a lot more communities out there that you can jump into these days. And we'll,
we'll dig into that a little bit, a little bit later.
Yep. So,
yeah. So what are some of the, if you had, you know, not a lot of people or, or official training,
like what are some of the resources you had available?
There was a podcast, WP Tavern. I used to listen to a lot. Then he had a forum. There was a CSS
tricks was a great place. And that gentleman also had a forum there. So I go to those places. There's
a guy called Justin Tadlock, who was a big influence that wrote a lot of the stuff about best practices
and how to do things the right way when you're, when you're writing. I didn't really know there was
such a thing as sloppy code and good code at the time. So I actually started to take some of his
plugins for WordPress and just kind of change them to do things that I wanted. You know,
I could, I could open up as one of his plugins and then see how, where he'd put different things
and start to just change the language, you know, so it matches what I wanted to do and figure out
how to do things that way.
Yeah. Sounds good. So you gave us a little bit of what you do day to day, but maybe expand on that
just a little bit. So folks know where you're coming from.
Sure. I'm an educational technology specialist at a K6 school here in Northern Vermont and spend most
of my day kind of doing staff training, managing databases. I run the state testing for my school.
I teach digital citizenship directly to kids. We work with the hour of code event and basically just
kind of all around stuff. We have a hardware guy that does all the hardware stuff, but if you need
to know how something works at school, then I'm usually the person that you ask. And if something's
broken, we go to Josh. So yeah.
Nice. This keyboard doesn't work. Call Josh.
Exactly. If I can't fix it in 10 seconds, it gets moved on to him.
Yeah, exactly. So it sounds pretty interesting, like a bunch of different things. What does
digital citizenship entail? I can imagine things about that, but maybe tell us what it means when
you're teaching it.
It's teaching kids what the correct behavior is online, how to get around, you know, basically
that if it happens online, it's the same as if you'd done something to somebody in real life. It's also
being aware of, you know, advertisements. And I taught a lesson on Photoshopped images online and
things like that. Just trying to get kids an awareness of the digital world.
Yeah. I think that's pretty important. I think it's going to get harder. It's going to get harder too.
It is. A lot of kids are using technology, kind of not necessarily in the shadows, but not parents
aren't aware of what's going on. You know, as long as the kids are quiet, a lot of, a lot of the
population that I work with, the parents are kind of happy and then they don't ask a lot of questions.
So it's kind of our job to make sure that they are aware of all these things that are going on out
there.
Exactly. I'm also a big fan of the hour of code. We kind of are a little bit out of phase with the
right time to talk about it, but it's, you know, since it's usually December, but
maybe tell people real quick about the hour of code as well.
Hour of code is a movement that started about three or four years ago. I want to say maybe we're in the
fourth or fifth year and it's a movement to try and get every child exposed to coding for an hour
during the, during the school year, just to, just an hour to get started. We try and get to every kid
in school and make sure that they have an opportunity to code for an hour and just basically intro everybody
to it. And it's also an intro for students and the staff or sorry, the staff of the adults that work at
our schools to try and get them exposed to what's what coding means and how easy it is to get started.
We never really get in depth in the hour of code, but it's really just designed to be an introduction.
We're not trying to train everybody to be a computer scientist, but we want everybody to understand what goes on in
their computers.
Yeah. People will probably get tired of me saying that, but I really think that we don't need a whole lot more
programmers, but I think we need a lot more people with some specialty that also have programming skills to amplify
that specialty. I think the hour of code is, is right in line with like that, like inspire you to think,
Oh, this programming thing I could do. And I'm also interested in biology. So maybe, you know,
some point down the road, you're like, Oh, I need to automate this thing. I can program that. I can
figure out how to program that.
That's exactly how we approach it at our school. And I think most schools are that way as well. You know,
we don't expect everybody to do it for the rest of their lives, but we want people to be more
than a consumer if we can help it.
Yeah. We definitely need more creators and fewer consumers. What kind of technology do you teach? Do you teach
scratch or you said elementary school? So these are first or kindergarten to fifth, sixth grade, something like
that.
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,
but just very, very basic stuff. They're going on to middle school where they might have more opportunities
there. So for the most part, if I can get kids and access to kids and get a small group of scratch
creators, then that's what I'll do on a regular basis. So we're starting to do that on a, you know,
every six weeks, eight weeks, change out the group and just trying to get kids a little bit excited.
And if I can get them to understand loops and maybe if we get to a variables, that'd be great.
Yeah, for sure. What grade levels did you go through with this on?
So fifth and sixth grade, sixth grade is where I get the most access to kids. So that's where I'll work the
with the scratch. And that's the only place that I would really even try Python.
Yeah, I think definitely you have to be a decent typist, decent reading level and stuff to do written
code. You know, I did an hour code thing a couple of times at my daughter's school and we did it when
she was in first grade, I think. And we ended up doing it with everybody from first grade through
fifth grade over that, that week. And the teachers and the administration were kind of blown away about
how much the first, second, third graders actually took to it and could do it. Like, I don't even know
if we could do it with them. Like they'd be really young. By the end, they had all these great little
things built and it was super cool.
Yeah, it's a lot of fun. Actually, with the hour of code, we do do kindergarten all the way through
sixth grade. We do iPad apps from kindergarten, first, second grade from code cards. And then
there's, I want to say, a block box island. And there's a couple of different activities and
they're mostly just, you know, a little drag and drop, five or six instructions in a row kind of
thing. And then the hour of code has hundreds of activities that I let the kids, the older kids get,
the more choice they get. And that's where they first start with this program called code combat,
which is the first time where they can actually start typing in code. And it's a great introduction
to, and that's where I got started actually with Python.
I want to ask you more about code combat, but I realized I sort of jumped ahead on your story
without letting you talk about how you went from WordPress into Python.
No worries. It got a little long. So yeah, WordPress, I spent a lot of time in that for years and years
and years. And then actually the hour of, or the hour of code two years ago, I decided I was going to
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
code. So I started with code combat after the hour of code. And then I bought a subscription to it,
which is, it was like $75 for a lifetime kind of access to all the activities. And it opened up a lot
more activities and I just banged away at it all summer. And things finally started to stick for me.
I finally was getting used to the syntax and all that type of stuff. And then I bought a couple
other books after that, but code combat is really what kind of got me over the hump. And you know,
it's a program written for a, you know, fifth and sixth graders to expose them to coding, but I found
it really, really valuable as kind of an introduction.
This portion of talk Python to me is brought to you by Linode. Are you looking for hosting that's fast,
simple, and incredibly affordable? Well, look past that bookstore and check out Linode at
talkpython.fm/Linode. That's L I N O D E. Plans start at just $5 a month for a dedicated server
with a gig of Ram. They have 10 data centers across the globe. So no matter where you are or where your
users are, there's a data center for you. Whether you want to run a Python web app, host a private Git server,
or just a file server, you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network,
24 seven friendly support, even on holidays, and a seven day money back guarantee. Need a little help
with your infrastructure. They even offer professional services to help you with architecture, migrations,
and more. Do you want a dedicated server for free for the next four months? Just visit talkpython.fm
slash Linode. So I had not heard of code combat before, and I checked it out when you mentioned
it in the show notes. And it is really cool. I really like it. Yeah, it is. It's a really great
way. I think they've really kind of hit on just enough intro, you know, for each concept and then
getting you to use it over and over again. It really was just kind of the repetition. And it might bore
some people, but it was really what I needed for everything to just kind of stick. Yeah. So maybe I'll
try to describe it for folks and you'll have to correct my description because it's only from a little
bit of experience. So you go in there, you've got this kind of like universe of places and you can go
through these different areas and they teach or challenge you with different skills. Some of
them are just calling functions. Some of them are strings, you know, like standard stuff. And it
looks like you can do it in Python and Java, but I like to see that the default is Python or JavaScript.
Sorry. The default is Python. That's, that's really cool. And what I really like about it is it
feels almost exactly like scratch or one of these visual programming languages. But what I don't like
about those is they, they show you, well, here's this block and there's that, here's the,
the move block and here's the loop block and all that kind of stuff, but it doesn't feel like
programming, right? It's still like a big step to go from getting experience with that to actually
writing a program, right? It's like a totally different way to be. Right. Whereas, yeah. Whereas
this it's, you actually start writing code from the beginning, but it's so supportive,
right? You type like one or two characters and here's the list of the four or five things you can
do. It's really nice. Right. Yeah. The autocomplete's really handy there. Yeah. It's a great bridge
between the two. Yeah. So I, I definitely think this is a super cool thing for anyone, either really early
learning to program or, you know, interacting with kids or other folks who are really early. This is,
it's really great. Yeah. I wouldn't hesitate to recommend it as a beginning place for children
for certain. Yeah. Yeah. For sure. I think I'm going to do some stuff. My daughter still has a few
days vacation before school goes back. I might do a few, a few little dungeons or whatever you call
them with her on this one. That's cool. So yeah, I like that. So you started, you started messing around
with that for our code and you're like, Hey, this Python thing, not bad. Yeah. Automate the boring
stuff was recommended to me. I got onto, I started working with a millennial, who introduced
me to Reddit and, basically started searching on there for what people recommended to get started
and automate the boring stuff was, was really quite high in the top of everybody's list as a good
book to get started with. So I picked that up and basically I am the target audience for, for that book.
That's cool. I've had Al Swigert on the show before and talked about his book, but maybe just
summarize, like some of the stuff that's covered there and why you're the target audience.
Basically he says it's, you know, it's for people who just want to learn a little bit of code to help
with their job. And basically a lot of what I do is managing other people's information.
So it goes through and it talks about how to crop pictures and how to, you know, with Python,
and then it goes into how to work with spreadsheets with Python and just all these different,
like day-to-day tools that you could do. I mean, maybe if your job's, you know, building houses,
maybe they're not day-to-day tools, but for me or somebody who works at an office,
it was really, really eyeopening. And also I was, I wanted to learn programming at the same time.
So it was really, really great for me at the time I had, I was redoing the website and,
had all the pictures for the staff members. And so I just get a disc with, you know, 600 pictures on it.
And I wrote a program that went through and cropped each picture and resized it to the size that I
wanted. So I could put them on the website. And it was brilliant. I mean, that was like,
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.
Yeah. It probably took me longer to write that program than it would have if I had sat there
and stared at the computer and, you know, clicked incessantly for five or six hours, but it was a
great experience.
You escape with your sanity though.
That's right.
Yeah. I think that that's really a great way to leverage some of the, both programming skills you
have and learn new programming skills. A lot of times I'll find myself doing something repetitive.
I'm like, why is this just, this is a part of my day that is just really mundane and involves a lot
of copy and paste or other mindless things. And then I'll just realize, you know what,
if I just take an hour, write a little program to do this, then I'll never have to do this again.
You know what I mean? And I'll always do it right.
I see more and more opportunities for those types of things these days. You know,
it's just a matter of convincing people at work that that's valuable.
Yeah, that's true. That's true. I think that, I mean, that's a challenge around
software and management. Let's put them as, you know, it's even things like, should we take the
time to write unit tests? Well, the prototype works, just make it the real one. You know what I mean?
Things like that. But when I was in that position working a lot, I, people would ask me for estimates
like, Michael, how long is this feature going to take? And that features estimate would include
how long it took to write tests. It would include how long it would take to write like these little
helper scripts and stuff. And I wouldn't say, well, this much for the helper script, this much for the
test, this much for the main feature. It was like, it's going to take four days. Okay. You know,
and I just was sort of a don't ask, don't tell type of, like, I'm not going to talk about it.
They're not going to ask me. I'll give them something good on the deadline that's better than they
thought. So it'll be fine. Yeah. Yeah. That's cool. So you had the automate the boring stuff book.
You said there's some other books that you also enjoyed.
Yep. Headfirst Python. I really liked a lot. I teach with a headfirst book for my HTML and CSS class.
So I kind of went to that first because I liked the style that they do it. Headfirst Python was great.
Took me through it, introduced me to Flask. And since I was already kind of a web guy anyway,
that was an even bigger breakthrough for me. So that was a great book. And I learned a lot about Flask.
Basically, I stopped that book as soon as I learned enough about Flask to go out and start
Googling my own answers for things. And I was able to write my first couple of web apps,
Yeah. You have a cool web app for the state parks in Vermont, right?
Yeah.
Tell us about that.
Yeah. Nobody's ever actually used it. A little known fact about that, but not even my wife,
whom I kind of built it for. So basically, there's this program in Vermont where if you go and you
visit all the parks, they give you like these three worksheets that you work through and you get
certain points for it. If your kids build a rock tower on the beach, you take a picture and you get 10
points for it. It has to be in a state park or whatever. And you get 250 points. Then you take all your
pictures together and you send them off. So basically, if you look at a lot of the advertisements
in Vermont, it's like us and our friends and our kids on the advertisements, because they basically
take your pictures doing all these activities and put them up all over the place. So anyway,
at the end of the summer, usually all three couples, we all get together and sit there and go through all
this paperwork and do everything to make sure we have enough points to send off these things.
then you get free entry to the parks the next year. So I was like, well, what if I could write
something that would do this? So for us, well, it didn't really do it, but it did all the thinking
for us anyway. So I wrote a little web app that you can log in. I had to teach myself how to make cookies
and things like that. So you can sign in and then you can go through all of the activities are listed.
You just choose an activity and then you hit submit and then you can upload your pictures to it.
And then it keeps track of how many points you've got. You have to have so many things from each
category. So it keeps track of all that information for you. It renames your picture with the name of
the activity. And at the end, you can hit a little button and it zips all your pictures up and you can
download it. And then you could just give that to the state and everything's all set.
That's cool. So as part of the state program, do you get like something back? Do you just get posted?
Do you get to be part of the ads or what do you get for doing it?
That's what you're getting. You mean the average user?
Yeah. If the average user goes through this thing that the state's put together. Yeah.
You get a free entry into all the state parks the next year.
Okay. That's pretty nice.
Yeah. It's a decent trade-off. Plus there's always a chance that you're going to see your
kids on the poster when you go into the park or whatever as well. Yeah. So I thought that would
be a great use. It was a great, you know, it's basically all this was just bookkeeping,
but I just kind of put it all into a little web app and made accounts for all my friends. And I think
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.
And yeah, I learned a lot doing it. It basically got me back into trying to learn a bit more about
JavaScript because as soon as I started putting things on the, in the app, I wanted them to look
nice. So then I had to go back in and JavaScript and jQuery and stuff has changed a lot since I played
with it a bunch. So I got back into learning jQuery or, and then even trying to figure out if it
was worth learning jQuery still. So yeah. So you use Angular, you use React.
Exactly. It took me days to figure out what all those were.
I know. Sometimes it's just, you know, a little jQuery will go a long ways.
Yeah. That's pretty cool. I feel like this example highlights one of the things that can really help
folks level up their, their learning and their programming skills is to build a little project
app. Right. And if you wanted to, you could definitely expand this out, make this a like a
really, truly public, a public website, maybe even try to convince some of the folks to list it on like
the park pages where they talk about these things, stuff like that. Right. So, but just going through
this project, I'm sure you've learned so many things, right?
It was. Yeah. I learned, I learned a huge amount about Flask and about templates and, and all those,
how everything interplays. And again, like I said, I teach myself cookies to make sure it was like a
sign in only site. And that was a huge, and then how to store actual information. You know, I stored
everything in Jason files and every time there was a new page, I'd unpackage it and then I'd dump it
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
anymore. And so the next thing for me is learn databases so I can make sure I can stick it in
a database and stop having to stick things in, in Jason files. So.
Yeah, for sure. And that makes a lot of sense. I think it's, it's these things that really help,
help people learn, you know, these little projects and that's great. You also talked about some other
resources. What else you got? Yeah. Well, along the way, like I was trying to learn Python with the
intention of eventually teaching it. So like my goal is to, to teach it in a school setting at some
point. So I kept really kind of meticulous notes about everything that I was using along the way.
Python tutor, there's a, there's a website called Python tutor visualize. They give you look for
visualize Python, you'll get to it. And it basically shows you, you know, you put your code in the left
hand side and then on the right hand side, as you create a variable, it's kind of like a debugger,
but it's very, very, very visual. You can actually see what each variable represents. So if you're
trying to go through a loop and you're trying to figure out what happens inside the loop, you know,
what X is equal to at this time and, and what two things are actually trying to match or,
or whatever, you can actually see that on the side. And that was a huge, huge breakthrough for
actually being able to understand what happens in a loop and understand when I'm trying to work with
a dictionary, like what that variable actually is at that point in time. And that was a huge
breakthrough for me. That was a lot of fun to play with. Yeah. Python tutor is a cool project.
I fill up, whoa. He's doing a lot of neat stuff with it. Yeah. So that was great. Replit was really
good. Repl.it. Since I teach in a school that is all Chromebook. And I think a lot of educators
these days are teaching in Chromebook schools. Replit was a great find. And it's since I found
it like a year and a half ago, it's changed so much and matured a lot. Now you can host your own
data files and things like that on there. And that was a great thing. So you can just put something in
there and then hit the run button and you go, it's like we'll have a little terminal. That was a lot of
fun to play with. And that's a lot of fun. Also, if you're looking for help online, you can put
everything in there and then you could just say, here's what I've got so far, instead of trying to
go through and explain everything. And posting up a question on something like Reddit is really
great for the answers you might get, but it takes a lot of effort to get it up there. Something like
Replit makes it a lot quicker. You can actually show people what you've got.
Right. Yeah. If you're going to say, hey, I'm having this challenge or why does this do this?
Right. Having something like a Replit link or maybe a gist or something like that, like where
where it's not just, I'm trying to use this function and it's behaving weirdly. It's like,
okay, well no one can help you with that. Right. But this is, this is super cool. You know, another
resource that I think for Chromebooks that's just recently announced and they actually sponsored
the show a little while ago, but I'm just saying this because I think it's really cool. It's this
thing called coder.com. Yeah. I heard you talk about that actually. Yeah. Coder.com is basically
a Docker container that you get for free plus Visual Studio code in the browser. So if you're on a
Chromebook or something, you can just go to coder.com and go there and you have, you know,
a bunch of Docker containers and a little terminal, you can install whatever you want. Right. You have
like root access to your Docker terminal and your Docker container basically. So it's really nice. So
anyway, just throwing that out there as another one. All right. Keep going. You got a bunch here.
So Socratic is a YouTube channel and they've got a lot of great videos describing little concepts,
little bite-sized concepts in Python. I think it could work for a lot of languages, but it's Python
specific. And that was a big help for just kind of understanding, you know, you want to figure out
what a list comprehension is or something that you can go there and find that. They'll explain exactly
what it is, you know, nice production values and really, really informative. That was really good.
Okay. That one I haven't heard of. I'll check that one out. Yep. Prettyprinted.com is a guy who's
doing a lot of great YouTube videos on Flask specifically. A lot of, again, just little
bite-sized things on Flask. And that was huge for me because there's not a lot of people out there that
do very specific things for Flask as far as YouTube goes. So that was a great find.
That's a good one. That's Anthony Herbert and he's doing, yeah, he's doing good stuff as well.
With Flask, like he said, mostly with Flask, but Python. Uh-huh.
Realpython.com. And I know you've had Dan Bader on your show a few times or quite a bit,
even. Yeah. And RealPython is great. I started reading it before he took it over. It was a
decent resource then. And now it's just amazing. Like he's coming out with things so often,
I don't have time to catch up and read them all.
I know. I can't read it either. It's like a little booklet.
I'd almost appreciate if they released once a week and then I could actually keep up with it. But yeah,
so it's, it's been really, really, really good. I go there, you know, like I started using the
path lib library because, I read an article there and even though I feel it makes my life
harder than just using OS a lot of the times, it's a great, great resource.
Yeah, that's cool. I definitely agree with that one.
I spent a lot of time on Reddit.com, the learn Python there, just, kind of browsing sometime
if I'm bored, if I have 10 minutes to kill, I'll go there. Or if I have a question, and I have
the energy to, actually go through it, and explain it, I'll put stuff there. I've always,
always had really good luck. Only one time has somebody said, did you read the docs? Yeah. Which
is like, yeah, like the worst answer ever. Yeah. Q and A sites on the internet. People can be mean,
but I feel learn Python is pretty nice. Yeah. As far as like actual sites, those are the,
those are the main ones that I'd pulled up and I've been kind of recording. I've, you know,
a Google keep site where I just have any minor thing that I find I'll throw on there,
but those would be great places to start for somebody else who's in a similar position. You
know, I was working with a guy before that was learning Python kind of around the same pace as
me. I went with Flask and he was doing a lot of data stuff. he was a runner, so he was pulling his,
you know, information out of Strava and playing with it and making maps and, you know, recording
different things. And he worked a lot with APIs. So I learned a lot from APIs from him. And then
it was a lot of fun when we were working together, but he's, he's since taken a different job. So I'm
kind of back on my own again. You lost your, your one colleague to bounce programming ideas off,
right? I did. I'm actually, I've got a, his replace that I've actually kind of talked into
using a bit of Python for this and that. So, we've been playing a lot with, just,
we use the Google app suite and you can kind of interact with that with Python if you're clever.
And, we've been trying to do that a bit lately. So yeah, it's been fun.
Yeah. Yeah. That's really cool. It can be a big challenge to be isolated like that. Right. I
mean, even in 2018, especially earlier in your career to just be doing it totally on your own,
you know, cause I'm sure you've had lots of experiences like that where you're like, this
is not working. I know there's a two minute fix to make it work. Right. I've been trying to find
that for a day now and I still know what it is, but if I could ask somebody, they would just show me
that this is the problem. Right. Yeah. And if I could craft a good question for a half an hour,
I can post it on Reddit and I will get my answer probably by the end of the day, or, you know,
it'd be great just to have a relationship with somebody where you could say, Hey,
remember that project I was on while I've gotten to this point and I have to do this or that, or,
you know, or Hey, can you come over and look over my shoulder? That would be great. But yeah,
even in where I live, there isn't any place where I can go to take a formal Python class at like a
university. You know, there's three universities an hour away from me, but that's it. And even then there's,
there's very few opportunities for things like that. Like I'm ready to take a, some sort of a
SQL course so I can try and get, you know, to the next level on that. And it's just, it's tough to
find things like that. I can't take a computer course online. Not a formal one. I've taken, you know,
I've followed a few, you know, smaller courses online, but like a semester long courses is not
really an option for me, my learning style. Yeah. I'm not a big fan of those, to be honest,
either. I know there's like the MIT and courses and stuff that you can follow along and the Stanford
courses online. And I just feel like, you know, those are structured to be the format that somebody
who is in a university every day, taking six other or five other courses, and that's going to fit into
their homework, attend course pattern a little here and there. But, you know, honestly, what you learn
in those courses, you could condense that to a week or four days, not, you know, 16 weeks. If you didn't
treat it that way. I get so much from the discussion, you know, the discussion in class
that people's questions and going off on tangents to be able to read the room. There's so much,
there's so much involved in that. So, especially with the programming course,
it's something that I really want is an instructor in the room. Yeah. And those sort of MOOC classes,
they don't typically have that. I mean, maybe they've got like a higher TA for the online version,
but that's, that's not the same. Right.
This portion of Talk Python to Me is brought to you by Rollbar. Got a question for you. Have you
been outsourcing your bug discovery to your users? Have you been making them send you bug reports? You
know, there's two problems with that. You can't discover all the bugs this way. And some users
don't bother reporting bugs at all. They just leave sometimes forever. The best software teams practice
proactive error monitoring. They detect all the errors in their production apps and services in real time
and debug important errors in minutes or hours, sometimes before users even notice. Teams from
companies like Twilio, Instacart and CircleCI use Rollbar to do this. With Rollbar, you get a real
time feed of all the errors. So you know exactly what's broken in production and Rollbar automatically
collects all the relevant data and metadata you need to debug the errors. So you don't have to sift
through logs. If you aren't using Rollbar yet, they have a special offer for you. And it's really
awesome. Sign up and install Rollbar at talkpython.fm/Rollbar. And Rollbar will send you a $100 gift
card to use at the Open Collective, where you can donate to any of the 900 plus projects listed under
the Open Source Collective or to the Women Who Code organization. Get notified of errors in real time
and make a difference in Open Source. Visit talkpython.fm/Rollbar today.
So while you're throwing out these ideas of places people can go and check out stuff, and I think they're all
really well, really good ones. A couple also I'll throw out there is you talked about code combat, which I
think is really cool. There's also Check.io, which is a similar idea and has Python. I kind of feel like
code combat is better for beginners, whereas this Check.io is really nice, but it's you kind of have to be able to
program directly, right? It's like more free-formed answers. But it's pretty cool as well. It's kind of a
similar gamification. The thing I like about that is you can compare your solution to other solutions
that other people have. So you can see like, here's the five ways this was solved. And I always find like,
like I learned different things about my own programming style by comparing the answers. For example,
I realized that I implicitly optimized for performance considerations, whereas I didn't think I was doing
that. I'm just like, I'm just going to solve this. But I had solved it slightly more complicated. Oh,
yeah, I could probably use this other simpler thing, but this is going to be a better answer.
You know what I mean?
As far as problems go, I think that's probably a good one to have.
Yeah, probably. It probably is. But it just like, it made me realize that like, that's a thing that I do
because I didn't even notice, right? But once you compare your answer to five others, you're like,
well, why is this so short? I'm like, oh, because you could have done this, but I didn't actually want
to do that because, you know, whatever. And also the Code Challenges platform from PyBytes,
similar, similar to CheckIO that you kind of got to write proper code, but that one's nice.
I'll throw in Code Wars as well while we're talking about that. Code Wars is a very similar one. Again,
you grab an account and then they throw like, there's like eight different levels and you work your way up
the levels, but it's, it's language agnostic. So you can solve the different issues with whatever
language you choose or multiple languages or things like that. And again, once you, once you finish,
they'll actually have tests that are written that they'll run against your code. So, you know,
if you didn't, yeah, if you didn't make everything lowercase, so it works through this, you know,
it'll fail the tests or things like that. So that's a pretty neat one. I find I never usually have
the energy to just go and pick out a random problem that, because they're, they get pretty
complicated pretty quick. Yeah. Yeah. I totally, totally agree. So I, one more I'll throw out real
quick is Anvil, Anvil.Works. I had them on the show as well. And basically that is a super easy way to
create 100% Python based web apps. And the reason I'm bringing it up in this context is my daughter went
through and she's like, dad, I want to create a web app. I'm like, yeah, that's a lot of work.
There's a lot of concepts for us to cover. I mean, she's like nine at the time, right?
So, but you can go through this and you can write JavaScript E Python that runs where JavaScript
would normally run. And you can drag and drop stuff and you get like a backend that's already set up.
It's, it's really cool. Like my daughter created at nine, created like a pretty cool little data
driven web app out of it. And I thought, okay, well, if a nine-year-old can do it and have fun,
this is actually pretty cool.
Very cool. So is it, does it just run inside Anvil when you're finished or do you,
can you download it?
It has to run inside Anvil. So you got to have an account there basically, which is a bit of a
drawback, but it also means it has the better integrations, right?
Right.
But what I really like about this is one of the examples is so often programming is taught in
terminals and repls and like how many beginner programmers and kids and stuff go, oh my God,
it's so amazing. I printed, you know, right. They're just completely, the expectation is not
that I'm going to do something interesting in a terminal or whatever, right. They need some visual
feedback. And like one really nice way to get visual feedback is the web. If it's not like too hard to
make it work. And I think this strikes a good balance.
Excellent.
Yeah. So what are, you know, talk about some, some of the roadblocks and maybe like what we can
do to help folks, especially who are learning in a vacuum because they don't have any colleagues or
they don't really know anybody or something like this.
Yeah. Boy, I don't know. It's, it's been a, it's been a slog actually. You know, I mean,
things are getting, you have to get to the point where you get the vocabulary to ask the questions
questions and that takes a little while to get there.
The online space is really good for helping people, but you have to have like a minimum level
before you can pop your head up and not just be dismissed as like knowing nothing at all.
You know what I mean?
Yeah. And even just to Google, Google your question first, right? You've got to know exactly what you're
trying to do at using the right nomenclature, right? So that's tough to get to. I think it depends
on your learning style. I mean, my learning style, I've been following web tutorials for years and
years and years. So it's pretty easy for me to just kind of get on and deep search, whatever I'm
looking for. I don't know that I have any solutions. I'd really like to see more classes available,
you know, in high school where you can get started and things like that. I'm part of a group that's
trying to make that happen here in Vermont. So I think that's really where we have to get the access.
Yeah, absolutely. I think it would certainly help more kids see that as an option. I think.
What about mentors?
Mentors would be great. You still have to find a place where you can kind of make those connections.
You know, meetup groups and things like that could be kind of intimidating. I'm part of like a code
meetup group in Burlington, but you know, I head down and I don't know too many people there and
everybody else seems to know each other there. You know, you can kind of listen to conversations and,
oh yeah, I just got a job with this new startup or whatever. It's not like a lot of basic
meetups out there. Like WordPress has these things called WordCamps in there. And I've heard you talk
a lot about PyComs, but the WordCamps are always kind of aimed at beginners as well for the most part.
And I don't know that we have anything common like that because WordCamps happen kind of all over the
place and they're really, really common.
Yeah. It sounds almost like you need like a learning to code meetup type of thing, not like I'm a pro and
here's how, how we use Docker to optimize this other thing or whatever, right?
Yeah. So we've got a lot of, not a lot. We have a few conventions for teachers tech conventions throughout
the year. So my goal is to kind of go and show off some of the things I'm doing with Python at those
things to try and get other teachers aware of kind of what can happen.
Yeah. I do think there's some opportunities at some of these, these main conferences like PyCon,
for example. But, you know, they're only once a year or maybe a couple of times a year. If you
factor all the local ones you could get to, you also have to be at a certain level before you're
willing to say, I'm going to travel to Cleveland.
Right.
To go to a conference for programmers.
Right.
And that's going to help me get into programming, right? That's a pretty hard stretch to make. I think
it's true, but I don't think that most people would believe it.
Right. Yeah. And maybe just exposure to some sort of language to get started. Because I've,
I've heard a lot of people, a lot of the guests on your show, they're always like, oh yeah,
I used Python for a few things. I did. I started writing in this language and, and I'm here,
I am learning Python. I'm thinking to myself, that's crazy. How could you just go over and do like
one thing, like I couldn't do that in this, this other language. And then I started, I bought a
JavaScript book about four or five months ago and I started going through like, oh, this isn't that
bad. This isn't that bad. I could, you know, if I had a little task to do in this, I could do that.
And so then if I want to use not jQuery for something, I feel pretty confident I can do that
now. And I can go and Google what I need to do because I've, I know the concepts in general.
So that's, that's a big help. So, you know, just exposure to some sort of language would help you
if you want to then learn Python later on.
Yeah, absolutely. I definitely think that learning your second language is an important step.
Whatever that programming language is, it, once you know, too, you're like, oh, I've learned
multiple programming languages. Now, all of a sudden the third, fourth, and fifth seem way more
approachable. You know what I mean? It's not scary.
If you want to go anywhere near the web, you're going to need about, you know, three or four languages
under your belt that you, you know, if you just knew CSS, people would probably laugh at you.
You couldn't do anything early. I totally agree. The web is tricky because
you'd really do have to do three or four programming languages. You've got to do some
kind of database. So SQL or something along those lines, you've got to do a server side language.
So Python or something, you've got to do JavaScript, CSS and HTML. Maybe you can get away with no
JavaScript for a while, but that's still four to five.
Yeah. You can only not do JavaScript until you want people to like, enjoy what they're looking at.
Then you, then you, then you're pretty much going to have to do that too.
Yeah. Yeah, exactly. Exactly. Interesting. I don't really know a whole lot for the
learning in a vacuum stuff that'll help. I do think there's some opportunities for
a couple of things. I think there are some online communities. I know there's a bunch and I don't
really track them that carefully, but there's some Slack channels and like, I have a Gitter channel for
the podcast at gitter.im slash talk dash Python. And people go in there and ask questions like,
Hey, I'm trying to do this. Any ideas on which is better or how I should do that? And sometimes
there's a lot of good conversation there. There's the Pythonista cafe from real Python and Dan Vader.
There's the PyBytes Slack channels. Those are all places people could drop in and, you know,
talk to other folks that are maybe at different levels, you know, or, or at their level rather.
Yeah. There's still, there's still that human side of things that really in the early days can help.
Yeah. I definitely, when I started programming, it was very much in isolation. Maybe there was one
other person that kind of knew some stuff in the very early days. And then, you know, it's just a
hand, like two or three of us at a company of scientists or other places, right. Where we all
knew some stuff, but it, it was definitely a lot of a challenge to. Yeah. Even just one person that
you can kind of geek out with and talk about different things or, you know, concepts and stuff. It just,
it just really, really helps. Yeah. So I've been, I'm concentrating on growing the number of
budding coders around me. Yeah. You pass that off, automate the boring stuff around.
That's right.
Hey, have you seen this? Check this out. That's really cool. One other thing that you did bring
up that, that may be interesting is Python Anywhere. Yeah.
Yeah. Have you used that?
So as soon as I started making my web app, I basically, you know, had to figure out how to
get it out there to the wide world. I've always used Bluehost as like my web host. And it was,
I started looking at how to run Python on it and it just didn't seem like it was going to be possible.
There were like ways you could hack it, you know, to make it happen, but there wasn't like a path to
getting something on there. So then asking around again, I found Python Anywhere and it was really,
really easy to start. Other than the fact that the very first app that I tried to put on there,
as soon as I put it on there, the home director was different. So everything was broken.
I think I almost cried. It was, yeah, I'd worked for three months getting this work on my computer.
And then I put it up on there. I was so psyched that it just broke. So it's been about two days
going back in there and rewriting all the paths. But yeah, it was great once I got it working.
And Python Anywhere allows you to put up, it gives you one site, you know, you're just going to get,
you know, your username dot Python Anywhere. It's free. So if you're just playing around and learning
how to do things, it's a great, great resource. I've been trying to get my app on DigitalOcean,
just because I want to be able to, I like the pricing structure for DigitalOcean. Like I'm ready
to take it to the next level and have a little bit more control over things. But I followed the
tutorial so many times and I get to a certain point, everything's working, everything's working. Then I
try and do the Gunicorn level and nothing. So that's a bridge I'm going to cross one of these days.
Yeah, that's definitely a challenge. I mean, both of you, you touched on this a couple of levels
at the, like, I just, I built this thing. It's working. How do I get it on the internet? Like
that is, you know, for a lot of folks, that is a huge challenge because they probably don't have a
whole lot of Linux admin experience. Something like Bluehost, they maybe don't really support Python,
but you already have an account with them. Like, well, how can I cram my Python app
into their structure? And that probably doesn't fit. It's definitely another step that you have to take
going through these words. It's certainly a challenge.
Yeah, I was on Reddit actually explaining problems because it gets down to this
sockets issue and you got to say, you know, it's got to go to this socket. And I know it's some kind
of like a permission problem, but so I was trying to explain it on there and I was kept going. I was
like, oh, it works great on Python anywhere. But as soon as I get over here, the guy's like, well,
if you don't really understand sockets, maybe you should just be on Python anywhere. So I'm like,
well, maybe there's some truth to that. So I've given up for the time being and just kind of
going there. But if I wanted to create something serious, that would be a roadblock for me. So,
and I guess there's other places.
Well, I totally understand what he's saying there, but at the same time,
how will you ever understand sockets if you don't beat your head through to against this wall and get
through it on Linux and get the thing set up, right? Like it's not like, well, you just need
another more year experience and sockets will be obvious, right? Like, you know, Linux sockets for
transporting between Nginx and Genicorn, right? Like that, that skill is not like you're going to
ambiently pick that up, right? You have to just go through that step and maybe, maybe more time,
it would be easier. But at the same time, I don't know. I do think there's a lot of power in learning
how to just deploy your app on Linux, right? Whether that's Linode, DigitalOcean or something else.
I think those are some of the really best hosts, right?
That's like the next level, right? You could actually make what you want happen. Because one of the things
that coding has done for me is made me feel like a little kid again. Like I can do anything,
you know, like not, I can't do anything, but you know what I mean? It's made me feel like my,
you know, my computer is, is this huge, like wonderful machine that I can create stuff on.
And that's been a wonderful, wonderful feeling. But then if you can't show it to anybody and get it
out there in the world, it definitely falls a little short because then it's just you telling
people what you did as opposed to being able to show off, you know, what you created. So it was great to
find Python anywhere. It was really, really was awesome. And it's a great resource. And you know,
it's just a little bit more expensive than any other options. So it's easy enough to get your
stuff out there, but to take it to that next level, there's definitely, you know, I mean,
there's experience and skill that needs to happen to make that happen.
I definitely appreciate that. It makes me feel like a kid again, right? Like when you're a kid,
you feel like you can build anything. Like think of the days of like Lego or Hot Wheels or all those
kinds of things that you fiddle with as kids, right? The little building block stuff. And it's just like,
yeah, I can do that in the digital world.
You're going from being a consumer to being a creator again. Like we did this thing. I love
my school week two years ago at my school. And it was, you know, it's, I love my school week. My
principal comes out and she's like, Oh, can we get every kid in the school to tweet during this time?
I was like, well, I don't really know. We don't really want to give them the password, you know?
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
alarm and I'll tweet every five minutes. I'll tweet, you know, three of them out. And I'm like,
I don't think that's probably how you should be spending your time. I think we could figure out something
different. So, yeah, we, you know, we spent all this time looking around online and we found
something that worked with Google sheets and it was this auto tweeter and everything. Well, last year
for this event, I created that, you know, I, I wrote it and it was, you know, it was rock solid. I did
exactly what we wanted instead of having to, you know, we probably tried out seven different systems
years before, before we were coding. So it just gives us that ability to take control of those types
of tasks.
That's so cool. It's just like, cause it's not that big of a project.
No, it isn't really, but it can make a big difference to who, who it's for, right?
Yeah. You find out what Python package you need and you write a loop and that was it. It was pretty
cool.
Yeah. The real danger is that it goes crazy.
Yeah. We did get a few complaints that people telling us that we were tweeting a little too
much, but it wasn't my idea. I was just carrying it out just in my defense.
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.
You also, you talked about building stuff again and, and being a creator. I think one of the things
that would be really nice that you talked about would be to have little devices or IOT things for
kids. Right. And there's definitely some good options for Python there.
Yeah. I listened to your podcast where you interviewed the guy that did the Python for
microbits or not micro, yeah, microbits. And I went to, that was the same weekend we had this
convention and I went down there and I got to play with microbits for the very first time, like an
hour and a half after, cause I listened to your podcast while I was driving to it and it was
fantastic. Yeah. I'm pretty psyched about microbits now I have to say. So my wife is, is English.
We used to live there for a while. We're first married. So I've kind of connected a lot to,
I follow a lot of English kind of education news. I was pretty excited to be able to get
ahold of these things and I'd really like to kind of replicate what they did in England,
kind of here in Vermont. I haven't taken any steps towards the whole BBC microbit and all
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
term goals, but just to try and seek out funding, you know, from some Vermont businesses and things
like that. Cause we've got a couple of cool big tech companies here that might be amenable to
something like that. But they're really, really great for kids just to kind of see what they're
doing. You hold it in your hand and see the effects of your code.
Yeah. I definitely think one of the keys in the early stages of getting involved in this kind of
stuff is early feedback, quick feedback and visual feedback of some type, right?
Right.
And if you're putting together a little device and you know, the fan blows every time you walk by it,
or, you know, it counts the number of people that walk through the door. Like that's pretty,
pretty concrete.
Yeah. Very cool. And Scratch just made, Scratch just updated Tuesday or Wednesday.
And now it's got an extension in there so you can write in Scratch. It'll show up on the micro bits
even. So it's very, very neat kind of bridge for kids to get that.
Yeah. And they're not super expensive. You know, it's not like trying to get a laptop for everybody.
It's right.
It feels like it's half a funding problem and half a bureaucracy problem.
Right. Yeah. Making people think that it's, realize that it's important, you know,
that's, that's always the challenge.
We're lucky that we have, the BBC and the UK for plowing through and doing that the first time.
And they've got like, you know, one of the podcasts I did with Nicholas about that,
we talked a lot about the results, right? They have not just having done it, but they did like
sort of studied the outcomes, which I thought was really cool as well.
Yeah. They lead the way in quite a few different things. I mean, they were put, they put smart
boards, you know, and everybody in every room in the entire country, you know, all at once and,
and things like that, that really make a big impact. Things that you can't do because of the way our
education system is structured compared to theirs. So it's pretty neat.
Right. Yeah. A lot of, other countries have very, like more nationwide, the same education.
Right.
Whereas us, you know, there's cities or towns five miles apart have totally different
bureaucracies manage that, right? It's,
it's quite different.
We have a more different here. Every, my kids go to a school of 106 children and they have
their own school board. It's, it's unique.
Yeah. Unique. I'll leave it at that.
So, another thing you were talking about is, computer science education and Python.
Yeah. I'm, I'm a member of a computer science advocacy group for Vermont and,
there's some people from the state education agency are involved. And then there's a number of
educators involved as well. And we're just kind of running into this thing where, I'm probably
the only, Pythonista in the group. I think, there's a lot of Java teachers because your AP
computer science stuff is, is, uses Java.
Right. So if you want to be an AP computer science teacher in the United States, you basically had to
learn Java. And once you learn Java, if you're not a programmer, why would you learn other languages?
Exactly. Or, you know, there's just, it's just kind of an old school mindset, you know, this right
nowadays, you probably want to have a few different languages available, but anyway, so we're really
struggling with the number of people who can teach computer science. You know, it's, it's not an
easy subject to necessarily grasp the amount of teachers that we have in there. And one of the
things I always say is if you have a computer science degree, you're probably going to go and
make a lot more money than you are instead of deciding to come in and be a teacher and spend
most of your day trying to tell kids to get off their phones and pay attention or do whatever,
rather than, work at an office and not have to deal with those types of things. So,
yeah, so we're trying to kind of increase the amount of people who can teach computer science
and just kind of on an introductory level. I don't think, I don't know how much there's going to be
into getting people into, you know, being able to teach AP classes and things like that, but
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,
surely some of them would just pick up things like automate the boring stuff. They would get
interested and they would just naturally get better. I think in our entire state,
they figured we had 43 people that were qualified.
So it's, yeah, so there's a, there's a number of challenges again. And, you know,
a lot of them are, are older folks too, that are, that are on their way out of education. So
it's a, yeah, there's lots of challenges in there to getting it started. I'd like to see more teachers
learn basic coding because a lot of what's going on in schools right now is teaching regular teachers
how to teach some, you know, some things. And there's a lot of like, we'll learn with the kids
and that type of stuff, as opposed to, I'd love to see more and more teachers just take a introductory
Python course and, you know, and, and actually, yeah, maybe pick up, automate the boring stuff.
I didn't see the value in those types of things. I think if you could get your average teacher to realize
that, that coding isn't just something that they're going to do for an hour on Tuesdays,
is that it could be interesting in general and just get that, you know, to see somebody's eyes light up
when the first time that they, you know, they write a program that, that creates a file on their computer
and then writes to it or something is just really powerful.
Yeah. Or there's some project, there's some thing that they were doing over, like some report
they've got to write every month that was dreadful. And then all of a sudden they can push a button
and, you know, half a second later, it's done. It's like, oh, this is like a magic wand.
Yeah. I actually, I wrote a program that went through and so we have training, you know, beginning
of the year trainings, bloodborne pathogens, all that kind of stuff. And, and normally everybody
has to sign off on a piece of paper. Well, they, they, they made that electronic a couple of years
ago. And then it was always, so then I created like a spreadsheet that aggregated everything,
just, you know, just using Google, Google apps. And then every two weeks I get an email from my
principal that said, oh, Hey, how many people still need to complete this, this and that. And I have to
go through it and write it all, you know, type or copy and paste it into an email and send it to her.
And then she would contact everybody. Well, I automated that the other day,
our beginning of this year with, with Python. And now it just sends out the emails to people,
you know, on Friday afternoons or Monday mornings, I think I did it Monday morning. So they wouldn't
just say it was a Friday afternoon. Yeah. And those types of things, I actually got a hug from my
assistant principal when I wrote that one, cause she was so excited that it was actually, it was
working and people were finishing what they needed to do on time. So that was pretty cool. Those types of
projects are fun. Yeah. That's awesome. Like she no longer has to be the bad person who goes around
and nags everyone about something. Yep. And she gets an email based saying, also, you know, I, I,
I just made two lists, one list for the people who were going to get the email, one list for her and
everybody who was going to get an email. And then she gets an email with all the people on it. So
it was a great solution. If I don't say so myself. Yeah, that's cool. It's actually,
highlights, an interesting thing that you hear a lot around code reviews, right? So code reviews,
you look at the code and other more, probably more at least equally experienced programmers look at
and go, well, this is good, but you need to change this or that. And there's a lot of stuff that just
linters and other automated systems can do like, oh, the indent is wrong here. This line is too long.
This function has too many lines, et cetera, et cetera. Right. Like when people sort of nitpick like
that, they come across as this annoying person that always nitpicks on the details when we're trying
to talk about something more important. Right. Right. But if just an automated build tells you,
Hey, your code is not quite right because X, Y, and Z, like that doesn't cause the same
emotional reaction as it does that kind of stuff. So it feels like it must be similar here. Right.
I created a dummy account to send the emails out from. So it wasn't me.
So there's my school automated, you know, email account now. So.
Yeah. And it's the same type of thing. It's right. Like the, well, the system knows I haven't done it.
It says I have to do it. So I guess I'll do it. So I stopped getting this email or eventually someone's
going to talk to me, but right. Like taking it away from having the person do the nagging is,
it's kind of a nice touch. One final thing we have time for, and then we'll have to wrap it up.
Sure.
You had some thoughts about music education and programming education.
Yeah. So one of your podcasts recently, you were saying that geometry was a good place to replace,
good class to replace computer science with. And I really thought that was a great suggestion.
actually I've been telling that to people since then, but I've always, I've always figured that
music was a great example of what the education has done to kind of create more musicians in the world.
Right. So in my school, there's around 600 kids and we have two music teachers, no computer teachers.
Well, I mean, I kind of fulfill that role, but no official, you know, computer curriculum that goes
all the way through, but we, we have an instrumental teacher and a vocal teacher and they go through
and every kid gets exposed to it. And when you get into fourth grade, then you get to choose an
instrument and you get, and you get small group lessons and things like that. And then you go on
and my best friend is the music teacher at the middle school and high school. And then he gets the same
kind of cadre of kids that go all the way through and they do, they do all these activities and it's,
you know, it's, it's a very select group that has chosen to kind of be in this thing. But then you get
a lot of musicians out of this, people who have chosen to go into that, you know, they get pulled out of
class because it's important to get to their individual lessons they put on concerts, all this,
that's a lot of effort to go into this thing that isn't math, science or reading. And I think that's a
great model that we could do with computers. Like what if we, so I went to this computer science teacher
conference in Rhode Island. We all drove down in this van for like six hours together and everybody in the
van was a musician except me, you know, right. And they were all computer people. I could imagine going to
like some kind of music weekend or music teacher convention and looking around in the van and having
like, you know, six out of seven people be programmers as well would be pretty cool.
Yeah. I definitely think that's something to aim for. That's awesome.
Yeah. Everybody, everybody learns to kazoo and then you pick your instrument, you know,
what if everybody learned scratch and then you got to pick it, you know, you got to either go
the JavaScript or Python way afterwards or whatever, you know, whatever it might be just to,
to funnel that and support it in the same way we do with music. And if you want to see parents get up
in arms about something, try and cancel a music program. They will go bats over something like that.
Yeah, for sure. The point of the music program is not to make everybody a musician, right?
Right. Well, professional musicians.
Yeah. Professional musician, right? Like as their job, right? It's not like, well, you first take this
music class and that music class so that then you can go start the next Pearl Jam or whatever. It's just,
so you have some, you know, musical skills, right? For life.
Everybody agrees that music is important and everybody agrees that it's a life enriching thing.
Everybody agrees that, you know, we want more music in the world and that it's valuable for kids to do
this. So we're going to put these resources into it. And you got to wonder why, you know,
why, why technology isn't to that quite same level. Although technology does kind of bleed into just
about everything else at this point. So it's could be different. So it does bleed in, but it almost
always bleeds in, in the sense that it's a consumer situation, right? Like game biology class.
So I use SAS to do the stats on my lab. Right. But I didn't, I didn't create.
We spend all of our time trying to find the perfect tool to do this instead of creating a tool that
might help it, you know, like, oh, we have to sort through all these other things and figure out what
might do this.
Exactly. Exactly. So, yep. I'm still of the belief that geometry is interesting, but not as,
as useful as programming and the same types of things, logical thinking, like sort of proof type
stuff, all that. It's the same as programming. Agreed. You've converted me. Awesome. Well,
I have no control over the geometry anywhere, but I can at least say my, say my thoughts. I did,
I do have a couple of math degrees, so I've, I've thought about it some. And I got quite far in my
math education without really using much. I learned it all in geometry. I'm pretty sure.
We'll leave it at that, I guess. All right. So, Rusty, I think we have to put the main
conversation and sort of leave it there. All right. It's time for the two questions as always. So if
you're going to write some Python code, what editor do you use? Adam. Yeah. Adam's cool. Yeah. I had a
student show it to me when we were in my HTML class and I've been a huge fan. I kind of thought,
why isn't he using what I've told him to use? And I started using it after he left class that night.
It's wonderful. I really like it. This kid won't listen to me. This kid's really bright.
He was right. I never let him know that, but he was. Yeah. That's pretty cool. And a notable
PI PI package? I love PI G sheets. Is that for talking to Google sheets?
It does. It talks to Google sheets and allows you to just kind of manipulate them as Python objects
and do all kinds of things. And I kind of consider them like a poor man's database. So that's pretty
much how we use them. We're able to have, you know, people enter things into Google sheets,
which is really easy to get information in there. Then I could do all kinds of cool stuff with it in
Python once it's in there. Yeah. I can see that being really useful for organizations like yours,
where you're not going to build a whole app for them to do a thing, but if you can share a Google
sheet with them and then just code against that, like they can still do their manual entry, but then
you can generate all the analysis just by pushing a button or typing a CLI command.
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
server or anything like that, that, that people have access to. Yeah, exactly. Yep. Yeah. It's online
and shared without you running infrastructure. Yeah. Very cool. All right. So final call to action,
people are learning Python or learning to teach Python. What do you have for them? I would say
automate the boring stuff, code combat would be great and repl it. If you're trying, if you're in a
teaching situation, that's a great place where you can share code and check things out. Yeah. All right.
Well, it was really interesting to talk about all these ideas with you and I've got some stuff to
go check out as well. So thanks Rusty. Perfect. Thank you. Bye. This has been another episode of
Talk Python to Me. Our guest on this episode was Rusty Gregory and it's been brought to you by
Linode and Rollbar. Linode is your go-to hosting for whatever you're building with Python. Get four
months free at talkpython.fm/Linode. That's L-I-N-O-D-E. Rollbar takes the pain out of errors.
They give you the context and insight you need to quickly locate and fix errors that might have gone
unnoticed until users complain, of course. Track a ridiculous number of errors for free as Talk
Python to Me listeners at talkpython.fm/rollbar. Want to level up your Python? If you're just
getting started, try my Python Jumpstart by Building 10 Apps course. Or if you're looking
for something more advanced, check out our new async course that digs into all the different types
of async programming you can do in Python. And of course, if you're interested in more than one of
these, be sure to check out our Everything Bundle. It's like a subscription that never expires.
Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We
should be right at the top. You can also find the iTunes feed at /itunes, the Google Play feed
at /play, and the direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy.
Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.
Thank you.