00:00 KENNEDY: How do you go from poking around at Python code to actually solving real problems the right way? Well, there are many paths. The longest one, probably, is to get a four year computer science degree may be faster, but pricey still is a solid in-person developer boot camp. But have you considered reaching out to the community to find a mentor? Many Python meet ups have project nights where folks who could help will be attending. And if up for giving back, maybe you could become a mentor at one of these events.
00:30 KENNEDY: That's what this episode is about. We'll hear from two former guests of talkPython, Rusty Gregory and Doug Farrell. They teamed up and are back to share their mentorship story. This is Talk Python to Me. Episode 254 recorded February 14th 2020.
00:58 KENNEDY: Welcome to Talk Python to Me, a weekly podcast on Python, The language, the library's 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 out of him and follow the show on Twitter via at talkPython. This episode is sponsored by brilliant.org and Linode Please check out what they're offering during their segments. It really helps support the show.
01:22 KENNEDY: Rusty and Doug, welcome back to Talk Python to Me.
01:26 FARRELL: Glad to be here.
01:27 GREGORY: Good to be back.
01:27 KENNEDY: Yeah, it's great to have you back. So, Rusty, you were on on episode 194 Previously about learning and teaching Python in a vacuum.
01:37 KENNEDY: And back then we talked about how you were in not super populated part of small town in Vermont and you were working at elementary school, right?
01:47 GREGORY: Correct. Yeah,
01:47 KENNEDY: Yeah. Helping teach kids programming concepts and other things and then Doug, we had you on back, like, 12 episodes before Then.
01:58 GREGORY: I was teaching kindergarten directly and then basically just kind of made sure everybody else could do whatever they needed to do with computers, whether it was teachers or students and, um basically just kind of all around resource for people. We had another person that worked with the equipment. I was the people person, the bridge between the kind of the technology and all the students and teachers and I also taught web design at a community college.
02:23 KENNEDY: That's super cool. And Doug, you're on episode 282. _Picture Python at Shutterfly_, where you talked about how you guys were using Python over at Shutterfly, which is a photo sharing photobook site, right?
02:34 FARRELL: Yes. We use it quite a bit, Doing more of that.
02:37 KENNEDY: Super. You guys got a lot of API stuff going on there. I'm guessing.
02:40 FARRELL: Oh, yeah, a lot of rest calls and
02:43 FARRELL: rabbitMQ stuff. And we're actually getting into AWS. So that's an interesting twist for us.
02:47 KENNEDY: Oh, yeah, that's gonna be exciting. And
02:50 KENNEDY: I know you because you were on the show before, But also, I've read some of your articles on RealPython and you're writing a book. You're doing a lot of things. You're keeping busy, for sure, right.
02:59 FARRELL: Thank you have been enjoying writing the articles for real Python. And that actually led to ah, a book proposal, an actual book that I'm reading for Manning Publishing, which is fun and little nerve wrecking,
03:10 KENNEDY: that's for sure. What's the book title?
03:11 FARRELL: _The Well Grounded Python Developer_ the proposal is and I'm going to try to fulfill it is that there's a lot of beginner books, and there's a lot of expert books and cookbooks, but not much stuff that helps. Ah, beginning developer transition more towards on Expert. So that's kind of what I'm trying to do is convey how to help somebody who's got a basic tool set move into thinking about bigger projects, the big picture stuff and think like a developer.
03:36 KENNEDY: You know, that's a really big step. I think. Yeah, it's easy to go around, Say, “I wanna learn language X”. So I want to learn what a loop is. What variable is how do I call a function? But then you go to actually create a program and you're like, It's like deer in the headlights or, you know, writer's block or something. It's just like I don't really know how to put the pieces together. Right? And the advanced stuff is too hard.
04:00 FARRELL: Yes, like knowing how to use a hammer. But it doesn't build anything.
04:03 KENNEDY: Yeah, exactly. Yeah. So I think that sounds like a cool project that you're working on great form. Yeah. So at the beginning, Rusty, I think maybe it would be fun that you talked about a little bit before we hit record about sort of the progress that you've made. So maybe give people a sense of the challenges. You know, that was a really popular episode that you did with me way back when, And I guess that's probably a year and 1/2 ago. So it's It's been a while, but so you've made a lot of progress, and I guess to sum it up like one of your main challenges was, You're in this position where you need to have a fair amount of expertise in the software that you're working with. And yet being in a small town, it's really hard to go to meet ups or fine folks to collaborate with. And if you're the only one at the place you work. That's also doesn't help, right?
04:52 GREGORY: Yeah, that's I was actually learning with a colleague of mine who was kind of interested in getting into Python a little bit, and so we're both learning at the same time. And then he promptly got another job with a different school district. So then I was by myself again, and it was, you know, it's a lot more fun when you can bounce ideas off people on everything. So it was started to get a little bit frustrated. I was starting to want to be able to do more than I thought I could.
05:15 KENNEDY: You know what I think, senator? Scene everyone gets stuck when they're doing programming over there working on software projects.
05:23 KENNEDY: You know, I remember not long ago some libraries trying to use him like, “Why does it not do the thing it's supposed to do“ and I've been programmed for, like, 20 years, right? But still, I'm said here pulling my hair out because it seems like it says it's going to do X, and it's not doing it for whatever reason, right?
05:42 GREGORY: Somebody somewhere knows how to make it do that.
05:45 KENNEDY: Exactly. But here's what I think is interesting is I think, you know, everyone gets stuck, but they don't always get stuck in the same place, right? I might get to apart, and I'm stuck here. But you've already figured that out. But you're stuck on something else, right? But if we could just talk to each other, Go. “Hey, I tried this and I'm stuck it. You know, I did that”, and it was Yeah, I remember that was hard. But now here you can just, like, help each other over these little hurdles much easier if you can interact with somebody.
06:10 GREGORY: Right? Stack overflow is there. You know, when you have the time to, you know, craft half-an-hour question about, you know, two lines of code to make sure you don't get ridiculed or or whatever is gonna happen If you don't, you know, phrase your question in the correct way and show that you've, you know, try it all these other things and and yes, So there, yes, being able to just ask somebody that you know is is also
06:31 KENNEDY: these public spaces that you can go like stack, overflow or read it or whatever. They can be kind of rough. But let me tell you, I learned a program when it required a book when there was, like, hardly even in the Internet hand when you got stuck, it was like, You know what? Let's go get in the car and drive for 20 minutes and hope that there is a book.
06:51 KENNEDY: at Barnes and Nobles or warnings other places that kept all these trees in buildings
06:56 KENNEDY: in square form and you would go there and he would go through like So I guess the reason I thought I was like is kind of a love hate relationship. Like I can type in error into stack into Google and you're likely a stack overflow thing helps me nine out of 10 times. I don't have to ask the question right, but it can be rough to get out there and ask questions like, “Didn't you read the manual?” Or “that's a stupid way to do it” or whatever you like. Well, how about you just say a better way to do with me this Because I only ask this way because this is the best I got, right? I'm trying to learn, Like, take it easy on me.
07:28 GREGORY: Yeah, lots of times in the early days, you don't have the vocabulary to explain what it is, or you don't understand this concept that you want to go, like for me of those databases, like I didn't even know how to get started or out of how to do things like that. So I had to like, think through all that you can't do that in a in a forum. Really?
07:44 KENNEDY: Right, right. It's too, general. So yeah, so I guess long. So a short or long question short, give us a quick update on what you've done. You've taken a couple. Of course. Is obviously you found a great mentorship. Ah, story which we're gonna dig into. Ah, but just give us the recap.
09:04 KENNEDY: cool. So walking time is like time tracking. If you want to know how you're spending your time
09:08 GREGORY: yet when you open up your editor it it keeps track what language you're using at the time. Oh, interesting. Yeah, it was It's really great with Atom. I couldn't get it to work very well with Python are with PyCharm. But I'm sure there's a way to make that happen. Yeah, so I mean, that was just really exciting to go from.
09:24 GREGORY: that was a Web guy before. But to be able to make an app that did all these things was just blew me away, and I had a blast that I try and stop me from coding on the weekend, getting up at seven in the morning and working on it. It was a good time.
09:37 KENNEDY: It's such a cool experience when you're like just you wake up, I got I've got to get back to it. I really was done. I saw these idea. That's wonderful.
09:44 GREGORY: Yeah, it was. It was a lot of fun. It even made me want to put up with the question of like, Can I download this in the app store? You know, that's the first question I would show it to people. I'd be so excited. I don't know. It's not in IOS app.
09:55 GREGORY: It's actually a Web app in Python. nobody really cares, but anyway, I was pretty excited.
10:00 KENNEDY: You just got to show them how to put like a little icon like save a shortcut to the desktop.
10:05 GREGORY: Their eyes just glaze over after you say no.
10:09 GREGORY: Hey, started rebuild one of my first apps as well. Since then dry and do you build on what I had done before?
10:17 KENNEDY: What was that experience like with a more experienced eyes?
10:21 GREGORY: It was wonderful. I was able to go back in and just make everything so much simpler to read. I discovered flask sessions, which just made a world of difference. Once I was able to put things into ah, cookie then and persistent over pages was awesome, because before I had had to come up with this hack that I was doing it, I went from sending it as a hidden piece on a web form. So every page had to be a form to figuring out how to do that.
10:49 GREGORY: Yeah, it was good. It was really rewarding.
10:51 KENNEDY: Nice. Well, it sounds like you're making really Ah, really good progress there. And I now know about walking time, which is apparently a thing. I'm gonna have tea. Oh, for sure. And Doug, how about you? What you been up
11:04 GREGORY: to? You might not want to know
11:05 FARRELL: Another article coming out on Real Python, which was insane to do with the book and then a lot of free time. Every spare second of tied to work is involved in the book, and then just work has been very busy in the fourth quarter for us is insane. So it's been a very busy time and then right? Yeah. So I've just been very busy with that stuff.
11:25 KENNEDY: Yeah, this is like the big holiday rush. Everyone's going to get photo books for Christmas or something like that.
11:32 FARRELL: The fourth quarter is like a huge,
11:35 KENNEDY: so black Friday. That's like a legitimate thing that makes the business go for you guys, right? Like, gets you back in the black?
11:42 FARRELL: Yeah, they put us, they put, they try to put like, the police tape around the entire sySTEMs of the we don’t touch it after that.
11:48 FARRELL: wasn't great, but at the same time, clients want new features.
11:53 KENNEDY: Can't have it both ways. Can ya? Yeah, I saw a really cool joke cartoon type of thing, and it just said “the first rule of programming is if it's not broke, don't touch it.”
12:06 FARRELL: That's really an excellent optimization.
12:08 KENNEDY: Yeah, I'm not sure if it's really good advice, but I certainly know the feeling and, you know, I know the feeling even more when it's software that I didn't originally right. And I'm not especially fond of or thinking
12:22 KENNEDY: Yeah, it's like if you touch that and break it, it becomes yours. Make No, no, it's fine. We don't need. It's fine over there, and it's just gonna let it do its thing. Do you want to touch that? You could fix it, but
12:34 KENNEDY: cool. All right, so let's jump into the main topic here, which I think is gonna be a lot of fun.
12:41 KENNEDY: So, as I mentioned before, both of you have been on the show absolute 194 and 182
12:48 KENNEDY: and I don't remember which direction it went. But I know that one of you guys reached out to the other after you were both on the show saying, Hey, it sounds like there might be some chance for us to work together or help each other out.
13:02 KENNEDY: And you all start working together through that, right? Let's give us the story there.
13:06 FARRELL: I had listened the episode that Rusty was on, and I really like I really enjoyed it. And I thought, you know, I thought to myself, There's a real opportunity not only to help help out, but that have you help me? I am teaching sometimes at this STEM place near me. And of course, the reading the articles is sort of like teaching.
13:26 FARRELL: And plus, I had taught many years ago and realized how difficult is on. I was struggling at that STEM course with the STEM place teaching kids. And I thought, you know, rest. He could really be helpful. And I have been in that position was a self taught programmer. I learned myself all of the languages that I know. And so I've been subject to trying to figure things out. I've been at the hands of divas who didn't really want to help me as much as give me a hard time. And I thought, you know, I could save rusty some time and avoid that. I reached out to him through you to see if he'd be interested in the connecting, and he was, which was great,
14:02 KENNEDY: that’s really cool. And I'm pleasantly surprised to see that you all have gotten so much. It made so much progress and done so much collaboration, that's
14:09 KENNEDY: that's great. And so rusty. I guess it's also may be worth mentioning that you got ah, new position where you're actually doing more programming. And this this aspect of life is actually even more relevant to these days, right?
14:23 GREGORY: Yeah, it was It was really good that we had a new with a change of kind of leadership in our tech team and the school district that I'm at and the new guy was not a technical is perhapps the guy before him. So I got to help out with a lot of different reports that had to be filed and things which the average first will probably not find that exciting, but, ah, it was great. I got to, you know, use, um, Python pandas to clean data on all the things I've heard about. Basically, listen to your podcast. And I was like, Why would somebody want to use the Jupyter notebook? And then, you know, I figured out a reason why I might want to do that. That was good. So, uh, now in the data manager for my district, I left teaching, I still leave in the middle of the day from programming and go and teach kindergarten. And then I will come back and finish off my day, uh, writing SQL and, uh, and plug ins for power school And things. But so it's actually a very interesting break.
15:16 GREGORY: They didn't have anybody to do it. What I what? I took the job. So this year, so
15:20 FARRELL: I know you're a volun-told. I understand
15:22 GREGORY: exactly what you can do this but
15:24 KENNEDY: You gotta help on your That sounds wonderful. You describe it so it's like these reports. A lot of people really wouldn't be that keen the do wherever. But I remember my first program in job. It could have been almost anything. They were having me to you. I'm just like I'm sitting here at this computer sequence. Plus at the time, Like I'm riding C++ code they're paying me and I have this book. I get to learn it while they're paying me like.
15:48 KENNEDY: heaven, right? I mean, it wasn't even that advanced to stuff, right? But for me, it was like I'm in. I can't believe it. Like, however they have not found out I don't belong here. I'm gonna figure out this before they catch out onto it and get me out of
15:59 FARRELL: here again. We're security being escorted me out
16:02 GREGORY: exactly right.
16:05 GREGORY: But really enjoying the kind of the blending of, you know, education and programming at the same time. So I'm still involved in school and I've never had an adult job that didn't involve school. You know, working at school. So it's been It's been a great process.
16:19 KENNEDY: This portion of Talk Python to Me is brought to you. My brilliant.org. Brilliant’s mission is to help people achieve their learning goals. So whether you're a student, a professional brushing up or learning cutting edge topics, or someone who just wants to understand the world better, you should check out brilliant.
16:34 KENNEDY: Set a goal to improve yourself a little bit every day. Brilliant makes it easy with interactive explorations and a mobile app that you can use on the go.
16:42 KENNEDY: If you're naturally curious, want to build your problem solving skills or need to develop confidence in your analytical abilities than get brilliant premium to learn something new every day? Brilliant’s thought provoking math, science and computer science content helps guide you to mastery by taking complex concepts and breaking them into bite size, understandable chunks. So get started at talkpython.fm/brilliant or just click the link in your show notes.
17:10 KENNEDY: Do you feel that schools elementary, middle, high school types, level of schools are underserved from my custom software or suffer that solves your problems?
17:21 GREGORY: That is a perfect question. Yes, because we don't have the money that industry has. So all the the service's go towards people who can pay for it, and schools have to.
17:31 GREGORY: We get this generic thing that can be bent to our will, But I have a lack of resource is amount of people who can do it. You know, there's a district down in Burlington. It's the big city in Vermont and you know, there's a data team of six people, you know. They hired a data scientist and stuff it in my school district on the on the edge of civilization. We have me and I've been there for eight months, you know?
17:55 KENNEDY: So you're on the outpost, right?
17:59 KENNEDY: Yeah, that's an interesting point. Because if I go do any major Fortune 500 company or are pretty much any start up almost any start up or, you know, even middle sized companies, right? They all have a software I t group, right? Right. Maybe it's only five people in there not super advanced, but there's a team of people who write software to make that place run. Like the place I was telling you about where I was doing a C++ stuff that was like six people, you know. And they still had somebody hired to work there as a developer and build software. So I just feel like there's probably a lot of opportunity to give a little bit of programming skill to folks at the non-college, non-university level schools to empower them to do, do more.
18:45 GREGORY: I agree. You always say that. You know, Python is, ah, maybe your superpower at work, and it's very much true where we're at, you know, there's very few people have the time to slow down and write code like I do at the moment that a lot of people have my job around the state. It's been added on. Oh yeah, you're gonna do this data portion as well as whatever, and I'm in the pretty unique position where I was hired to do that. So it's It's been great.
19:08 KENNEDY: That's cool, and you want to write? You're not volunteering?
19:11 KENNEDY: I asked.
19:14 KENNEDY: Nice. Doug you had mentioned that you’re a self taught developer like I am mostly I took.
19:19 KENNEDY: I needed a couple of credits at university for a minor computer science and other types of stuff. But for the most part. I'm pretty much self taught. So I'm pretty sympathetic about those sorts of challenges and whatnot. But maybe just give us the quick story of of that for you because I'm sure that will resonate.
19:37 FARRELL: I graduated with a BS in physics, which tell the joke all the time with the BS and physics. I'm completely qualified to get coffee for the other physicists.
19:49 FARRELL: But by a senior year, I did a project where we built a very primitive CAD scanner, which was a computer controlled CAD scanner. And I got hooked. I bought a radio shed color computer about myself basic and little bit of assembler. And that was enough to get my first job as an engineer after college, doing process control. And I was often running doing programming. Yeah, worked in Fortran and Pascal and C, c++ quite a bit.
20:15 FARRELL: Now,
20:17 FARRELL: you've
20:18 KENNEDY: seen a lot of that super cool. Yeah. Yeah. So that starts when their books before the internet before stack overflow rate.
20:25 FARRELL: Oh, this was this Starts before that before books, this was like BBS.
20:31 KENNEDY: BBS is that's like the internet that you go to. That's really slow. And it makes sound and only one person can be on at a time, right?
20:38 FARRELL: Yeah. My education was continually slowed down by getting phone calls from a friend.
20:42 KENNEDY: Yes,
20:44 KENNEDY: I remember that. We actually had two phone lines at my house. Just so my brothers and I could all be on either Internet dial up or on BBS at the same time. And it was still a problem, right? We'd have call waiting, come in and knock us off.
20:59 KENNEDY: All right. So fun times So told me about what you guys have worked on. Especially in the beginning, I guess. Rusty, go ahead and maybe start this conversation out. Like so Doug reached out to you, and you're like, Wait, this guy, just this random guy Internet. That's really Yeah, that's really knowledgeable. Wants to help me out. Like, what is this? And where did you start? And what was that like when you got that message?
21:22 GREGORY: Had said earlier that Well, I didn't say the podcast, but it was great because Doug wanted to exchange kind of some teaching knowledge with Python knowledge. And I said that I basically won the lottery and got somebody who do exactly what I wanted. And Doug lost out because he's already a good teacher. But I still needed lots of help. So I just started asking questions. I wanted to go further with flask, and ah started to build that, you know, database at the kind of asynchronous kind of card playing app and I had no experience with with databases or not. So he kind of
21:54 GREGORY: showed me. Ah, luckily, he was writing an article on something very similar and kind of talked me through starting to use SQLAlchemy, and, uh, it just kind of got started. And I asked him questions about database design, and I would craft emails. And then, you know, there's we had about one or two day delay just cause we're both busy people, and that's how we kind of started. And then I started to ask more and more questions, and it helped a lot that we had, ah, lot of common ground. We're both cyclists. We both enjoyed Python and teaching, so there was a lot of, you know, banter, and I tend to try and ask a lot of personal questions when I'm working with people as well just to kind of get to know them better so started to build my app in and, uh, I was able to go, you know, and say, Hey, I'm having problems with this. I didn't have to explain everything from the beginning or yeah, it was just a really wonderful experience for me to be able, just have get stuck and, you know, within a day be completely unstuck and probably looking at a different feature.
22:54 KENNEDY: Yeah, this really interesting. You know, like those types of assistance or whatever. When you're new, you could be stuck on something for, like, five hours. You know, like this I just don't know. I just tried everything and somebody who's gone through it a few times like, Oh, yeah, that's confusing. But when I figured it out, it was ex right? And then So there's a lot of effort that's potentially for, like, staying in touch and coordinating. But sometimes you can just look at something all that's really easy, and it's just such a service to you, right? Since the spiel to receive that and go, my gosh, right, I so appreciate where is like the person you do like It's okay. We'll just called out of my memory already kind of know,
23:32 GREGORY: right? Yeah. I put everything on GitHub. I was starting to get big into Github eyes, But I'm still afraid that I'm not gonna be able to recover what? You know, 2-3 versions back, so I don't have that much faith at it, But it was good to be able to have everything there.
23:47 KENNEDY: So you've moved on past the I've made some progress on this project. Let me zip up the directory and give it like, a virtual red.
23:56 KENNEDY: Doug, You're laughing. Have you seen that?
23:57 GREGORY: You get help, Doug. It was great before I knew how to use.
24:02 GREGORY: Yes. So we were able to do that. And then I could just say, Hey, you know, I've done the update and Doug could pull it down on his end and run it and see what the error was, or whatever it might be that way. So that was pretty cool. I always made sure that before asked a question, I wasn't gonna waste his time that I had exhausted everything. So it wasn't a flippant. “Oh, I'm stuck for five minutes”. Go on, do this. It was, you know, really stuck here. So Now I'm gonna have to ask.
24:24 KENNEDY: you. I have some folks who periodical asked me questions, whatever. And when it's like that, I totally don't mind. It's fine, right?
24:32 KENNEDY: The thing is, you know, sometimes you have people are just like, Well,
24:36 KENNEDY: this isn't working Why? You know, it's pretty obvious that, like a little bit of take their message, put it in Google would come up with a really good answer.
24:45 KENNEDY: You know, it's one of those types of things on Yeah, so that's really I think an important part of trying to make something like this work is if you're going to work with Doug and ask him questions and, you know, basically take some of his extra time and energy because he's got so much when he's not working on his book or is the local goals or articles are all the other stuff he's doing.
25:07 KENNEDY: that. It's really like, you know, that someone's put a lot of effort into because then it's like Okay, well, they really tried and they're really stuck, and I can probably help them as opposed to just
25:16 KENNEDY: this person. Didn't even google it like I really don't want Oh no,
25:21 GREGORY: really was a lot more.
25:23 KENNEDY: Yeah. Sometimes people shoot me a message. Could you help me? Because I'm really It's like, clearly not, like from one of my courses or from an episode is just like random behind one question. I'll take the question put in Google, grab the link one and shoot of action. Go.
25:37 GREGORY: How about that? Oh, my gosh, That totally fixed it.
25:44 GREGORY: Let me Google That for you is a site. I am. Whoa,
25:48 KENNEDY: if it still is that still a thing?
25:49 GREGORY: Yeah, It was mostly concepts that when I would get to ask, you know, that I needed to know how to go about something, and I had to be careful because Doug would actually just write me the program and send it back. And I would be like, Oh, my God. How long did this take it? It was like a complete, you know, Ajax program that updated your database for you. It wasn't exactly what I was doing, so I would still have to create my own. But it was a working example of here. This is what it might look like. That I could go into it and dissect it. I would have to be like, OK, I'm at work right now. I'm gonna need three hours at home to look, look through all this that he's just set me and said it was pretty good that way.
26:28 KENNEDY: That’s awesome.
26:28 FARRELL: me, that was the key with the Russell is that he would always ask me, You know, I could see that he had looked for stuff and well researched and intelligent questions, which was great for me, because I know I don't have a lot of time to spin. But the other thing was that I often didn't give them complete solutions. I would do the left as an exercise for the reader kind of thing where I was given a give him a sample that I knew that he could extend and extrapolate from in order to solve the bigger problems he was. He was facing.
26:58 KENNEDY: Brian, and he's a really, really simple, prefer concept of like some AJAX thing or something, right?
27:03 FARRELL: Yeah, some of the things we're just just conceptual Python stuff like moving away from everything is a dictionary. Dictionarie are extraordinarily powerful, but getting into object oriented stuff. It's kind of a hurdle, but it hasn't really great use. And I knew that I wanted to take in, you know, from from dictionaries I'm granted and then onto SQLAlchemy, which, of course, is dependent on objects to get into databases.
27:27 KENNEDY: Yeah, absolutely. I think sequel alchemy is really special. And Oram's in general, I think they're very special because I remember when I was learning to talk to databases and you had to write a sequel embedded in strings embedded in your programming language. Like I just want to, like, get some data. Why? I have to learn a whole new programming language
27:48 KENNEDY: for this. And then, you know, you gotta go and put stuff back in the database and, like, how do you get the right types? And then obviously you can't string concatenated. You gotta figure out these perimeter. Just there's all those layers of either best practices or just understanding or, you know, lazy loading or whatever it was seek. Welcome me. You can kind of learn a skill that is also applicable in General Python. This object story and databases risi again. It's wonderful.
28:16 FARRELL: Yeah. I mean, I've been had both for you and the object created camps and C++ 20 years ago. And, uh, I didn't really want to have to deal with tables of raw data from sequel. I wanted things to come to me in an object form because I want to think in terms of objects.
28:31 KENNEDY: Yeah. I mean, usually a real common pattern. If you weren't using an hour, M would be to do a query and then load up an object with the data that you caught back and then give that bath Give that over, right? It's like, Well, why am I doing this
28:43 FARRELL: interest from an object once coming in and then trying to update the database might go? This is fun.
28:48 KENNEDY: Yeah, exactly. Couldn't we let a framework to this which which is really nice,
28:53 KENNEDY: It creates the tables for you and all that? So I guess I'll throw this out to either of you. I don't know which wouldn't want to take it. But, Rusty, you spoke about using get and source control and how that was a little bit mysterious, like, you knew it would be good for you. And, you know, you used to do it, but it was kind of
29:09 KENNEDY: something you didn't really know, So it was just another layer of something you have to deal with. What? You're trying to learn all these things that finally you got there.
29:15 KENNEDY: So that worked out of the super way for collaborating, right?
29:18 GREGORY: Yeah, it was fantastic. I was using it, really? To go from my work computer to my home computer. You know, if I had 10 minutes at work for lunch or 20 minutes, I would go ahead and you know, I would work on my program and then sink it uploaded and then get home and then hop it. Keep going. So that was pretty cool. That could switch between computers. That was kind of my initial impetus for using it. And then when Doug actually has to be a contributor one time so you could do a poll request, then I had to, like, do, like, two hours worth of research When that came back to figure out how to merge and things like that, that thing I did it right.
29:50 MICHAEL: Oh, my gosh it’s a merge Conflict. What Do I do
29:54 GREGORY: so that took some time. But,
29:55 GREGORY: you know, we
29:56 GREGORY: figured that out and I used GitHub for all my my projects. Now, just to kind of keep it there. But that was a part of the learning curve as well. It was really cool. Is still the only time ever collaborated with someone on GitHub. I'm actually to the point now where I'm asking questions of ah plugin not plug-in but package authors on GitHub as well, which has been pretty cool,
30:15 KENNEDY: is a really nice place to be able to go and have a conversation as well, right? We've had source control for a long time, but the fact that it's got this kind of social component to it is really cool. Yeah,
30:25 FARRELL: Maria was great because, you know, Rusty and I had used a couple of ways to collaborate email, of course. And then we had done some screen captures and then screen capture movies and skyping and some of you know, that was useful to me. But sometimes I was like, What is he talking about? I need to see this thing because I needed the context of what it was running it. So having access to the whole code base, was really helpful for me for that context. And you know what? The goal was that he was trying to achieve.
30:53 KENNEDY: Absolutely. I've certainly had people send me videos of like, Here's what I'm trying to dio this part I'm stuck on. But when I click this, here's what's happens and you know that is actually really better than just a random email trying to describe. But it's not necessarily is good to be able to just poke around yourself.
31:11 GREGORY: I'll make a video in, you know, 30 seconds. That would take me 20 minutes to type, so definitely much more. And I'm more comfortable in front of the camera, and I've been using it in teaching for a long time to make videos So that was probably the most common way I would send issues. I would say
31:26 FARRELL: that was great for me, too, because I could think at length, and I sort of type my way to an answer within code instead of keeping Rusty on the phone or trained us, send another video back and forth because some of those concepts were kind of abstract, like, OO , on things like that are a little abstract try to talk about
31:42 KENNEDY: Yeah, definitely. A good written example is nice there, You know, I've used that screen recording trick for bug reports. You know, for like random software like I know you say this is not a problem, but here I've recorded it This'll button that says, Do X. It doesn't do X anymore. Can you just help me out? That's pretty effective as well that it's not so much of a mentorship or relationship as well. Now one of your philosophies, Rusty, is that you're not keen to use code that you don't understand outside of, say, `pip install` a thing and just leverage that directly. So how'd that play into this whole interaction?
32:21 GREGORY: Like I say, unless it's a package, I've really not that comfortable. Like, if, uh, you know, if somebody were to give me, here's a bunch of code that does exactly what you want. I wasn't doing this for a job at the time. These were personal projects that I was trying to learn, and I really feel like if that happens and I try and do bug it and I don't understand what's going on, it's going to be really, really tough for me to use that in any kind of a meaningful way. And that's one of the things that helped me understand was actually I listened to his interview on your show and he was saying that he doesn't understand why people don't use an editor that doesn't have a debugger in. And now I wouldn't Now, you know, if I was gonna write something because it's just that important and I didn't really understand how important was being able to look inside the variables would be. So I just really want to understand it at its base level, because I just feel it's got to be so much better going forward. So, yeah, there's even some packages I wouldn't use that took over my flask app in a way, like the flask users packages, just this huge invasive thing. And I didn't really understand what I wanted to do if I was building something that I was just gonna build it for a month and then leave it or whatever I would might use it. But otherwise I'd rather understand that whole process so I could use it later on or use that knowledge later on.
33:30 KENNEDY: Yeah, totally agree. And that flask example is pretty interesting because I feel the same way,
33:35 KENNEDY: right? Like I put together a course on flask, and it doesn't have any of the extensions, right? It doesn't use last log in or any of that stuff, because I just want to talk about the primary thing and every one of those layers. While it saves you a few lines here. It adds layers of complexity and understanding along the way. If people want to go grab that later, that's fine, right? They can go use that. But sometimes you just want to just like what is the essence of what I'm doing, right? Yeah. What do you think? What is your philosophy around this? Doug?
34:04 FARRELL: I do like to use packages, mostly because I worked particularly. I just don't have the time to build everything myself, But we I spend a lot of times vetting stuff they want to use. For instance, we write a lot of REST APIs and I looked around a lot to find a tool that I thought worked for me. Which is why I used the single connection rather something stressful stuff because it just it fit my style of work. It seems well supported, you know? It has current updates and and all that stuff There are things that I do want to build myself because I have to have that much control. It depends on how much how much my OCD kicks in if I build it myself or use a package. Yeah, things are
34:45 KENNEDY: just so many trade offs, and it's interesting to talk about because it's like,
34:49 KENNEDY: What's the right action with the right choice? You know, for example, like just take, like, flask log and our authentication or flask users as an idea.
34:59 KENNEDY: On one hand, it's great to let that whole thing be someone else's problem. But soon is it doesn't do what you need and you're like outside of its box.
35:08 KENNEDY: Then all the sudden you're jumping through all these hoops to try to understand how toe juggle it, plus what you're doing and so on. Right and so is just attention. I think people just got to get used to.
35:19 FARRELL: When you download a good package like the flash lot that flesh users. It's great a lot of that work for you with some hidden complexity, and it's like a black box. But when you have to open the black box and try to do something with it that that could be a bit of a hassle.
35:35 KENNEDY: This portion of Talk Python to Me is brought to you by Linode. Whether you're working on a personal project or managing your enterprises infrastructure, Blue Note has the pricing support and scale that you need to take your project to the next level with 11 data centers worldwide, including their newest data center in Sydney, Australia, Enterprise grade hardware S3 Compatible Storage and the Next Generation Network, Linode delivers the performance that you expect at a price that you don't get started on the note today with a $20 credit and you get access to Native SST Storage. A 40 gigabit network industry leading processors. Their revamped cloud manager a cloud, not leno dot com. Root access to your server along with their newest API and a Python CLI. Just visit talked, I thought, and Donna Fen slash winnowed when creating a new low note account, and you automatically get $20 credit for your next project. Oh, and one last thing they're hiring. Go to linde.com/careers to find out more, let him know that we sent you.
36:35 KENNEDY: one of The things I think could be really helpful from a mentor mentee relationship is when you're new and writing code, and I kind of touched on this a little bit earlier. Rest you wanna ask you a question about going back to your other project is
36:48 KENNEDY: a lot of times beginners
36:50 KENNEDY: when they're working on something there, like If I can just get this to work,
36:54 KENNEDY: that's it. It's working now, right? But then there's the oh, this is not very Pythonic. Or did you know that Python has this language feature that, like makes those five lines be one and real simple or even There's a standard library thing like, Why are you sorting this by hand? You know, to me, things like that. So maybe talk a little bit about kind of helped him makers could more Pythonic or make a little more professional or whatever.
37:17 FARRELL: Well, like this. One of the early things that I did or I tried to do is
37:22 FARRELL: when I first started work together on the flask out that the rusty put together I recall it. Being a single file was a single Python file, and for me, I got you know I looked at that and I said, Oh, this is why it's hard for me to keep all of what's happens of giant file in my mental model all at once.
37:39 FARRELL: The cognitive load on he was just too much one of the things I did. And I think in one of them the poor request was to introduce the idea of modules and had a break coat up into logical modules where, you know, this kind of stuff should live here. This kind of stuff should live here because you can think about that sort of separates the work or what you're doing into a domain, a little domain where that's all it really does you consider depend upon that. It makes the amount of stuff you have to keep in your brain a little bit smaller and more manageable. And then, you know, the idea had a creating your own modules had to import your own modules rather than just the assistant modules. I think for me that was a big step that we took forward into making the work that Rusty was doing more along the lines of a developer rather than just the programmer.
38:22 KENNEDY: Yeah, Yeah, I certainly agree with that.
38:24 GREGORY: It was great. Blueprints was a big part of the
38:26 KENNEDY: blueprints are interesting. These air things in flask. flask through. I don't know if I would put this on the people who were, like, right in the early tutorials for Flash or just other people who are passionate about flask of written tutorials. But whatever the origin it is, it feels like flask. A lot of times gets sold as like, flask is amazing. It's so simple. You just need this one file. Just put your stuff there go.
38:57 GREGORY: for the really simple example.
38:58 KENNEDY: It's fine when you went to the world,
39:03 KENNEDY: you have 300 views in 10 database classes. And yeah,
39:07 GREGORY: what Nobody could get through to me until Doug and I worked together was why you'd want blueprints. You know, while we got to a point where, like, you needed to break it up into these different pieces, that he must have show me blueprints two or three times before it finally clicked with me because I'd watched YouTube videos of the flask site itself or the docs assumes you already know exactly why you'd want to do them and yeah, so I just didn't understand why I'd want to start to break it up. I mean, one of the great things about Python is is supposed to be written clearly instead of cleverly, I suppose, you know, overly clever. I should say rather so. And blueprints allowed you to kind of break that up just like you would break up, you know, function and smaller pieces, which was awesome. But it took a long time. And then even then, it's not super well documented. So act watching somebody a pro who had done it before was instrumental, and it really, really opened my eyes. So why you'd want to do that? But it took a lot.
39:58 KENNEDY: Yeah, it's definitely one of the things it's hard to sell. Like, Why do I need this? Because a lot of times when you're getting started, you have three views. You're like you're just making it complicated, like, Why are you putting all this stuff everywhere else? But when you have 300 all of a sudden, you know, having those categories like, here's the stuff about users. Here's the admin stuff. Here's the I don't know the blog's that whatever you're writing right like it's massive and it's kind of like you, said Doug.
40:23 KENNEDY: I think one of the things that's really important for people as they're getting into programming to learn is that you can think at different levels of building blocks, Right? You can think you talked about this with modules as well that you can think of line by line what's happening, or you can think of function by function. But if you use modules, you sort of thing. Okay, that's the thing that I use for working with. Um, send an email and I go to and I say, send email, send a bug message, send error and that's I don't care what how that happens. I just ask it to do those three things. And so now you're just thinking at the Here's my email building blocks for the rest of my app. It's so there's like these different conceptual layers that you go on.
41:01 KENNEDY: Being productive is really about identifying the right level and thinking of those Lego pieces, right?
41:08 FARRELL: Oh yeah. I mean, you know that whole. Why would I want to do this? Yes. You start out simple. You think this is you know I could get something running pretty quickly, and then it starts to get more and more complex. And why would I want to do this? Is like from my point of view is like, Well, you already running into name conflicts with with functions because you get so many of them in one module and you're crossing over where you're sending email in 10 different places and it's hard. It's hard to think about all the things they're going on if you put it in a model with the name space. Even you know what a name space is. so useful. And what Rusty said about the over this a few times.
41:44 FARRELL: part of the benefit for me, besides just enjoying helping him, was for me to find the right way to phrase it.
41:50 FARRELL: How do I convey this information that would help him hit? Because it's not like I given perfect examples, and he took off of it. What I was doing was trying to find a way to show him an example or say it in a way where Rusty arrived it up that ah ha moment all by himself,
42:08 FARRELL: and suddenly realized Oh, this is why I want to do that and then he would percent because it's not just because I told him, too, because he suddenly saw the value of it.
42:17 GREGORY: Take half the time he spent stripping out my imports. I had everything imported in every single file. And that's one of the things that I learned
42:27 KENNEDY: just in case you need it. I guess it's worth really quickly just for folks who are out there who are using flask. But they're like, Wait, flask blueprints. Is this like an extra package?
42:37 KENNEDY: Flask Blueprints are awesome, and I massively encourage people to use them. But maybe give us the quick elevator pitch in What those are
43:50 KENNEDY: and nothing else in there, right?
43:52 FARRELL: Nothing else. The other guy thing. I haven't done this too much, but, you know, the great thing is, you could actually take that module that blueprint module and use it in a seperate app just by picking up that copying that director, You're that that folder the prime I'm going to call a package to another flask app, and it would work
44:10 GREGORY: in my project had the main part where you actually played your cards or whatever. And then I just made another blueprint that was the member section. So then you'd check in to pick up your deck that did, to shoot you over to the other module. And then there was a little point where it said, Oh, if you're logged in, go back to here, then you'd have to wait. And then when I wanted to build an admin section, that was a whole nother blueprint Whom then I could work on that completely separate.
44:34 KENNEDY: Yeah, And so it is beautiful. So the reason I think it's less obvious in flask and also but still important is flask. Normally has you go `app.route` on all the view methods and the place you create. That route is in the main thing. That was hard to share it to other files, which then have to be pre imported and increased, like this circular nightmare
44:57 KENNEDY: that you run into. And so it gets challenging. So people should, if they're not using my should definitely check into blueprints. I use this idea even more extreme than that may be So I've got separate modules for my related view. Methods like, say, stuff about admin.
45:11 KENNEDY: And then
45:12 KENNEDY: there's functions in there that handle the views. And then I have my templates organized that way as well. So my template folders has maybe an admin sub folder and then the names of the template files or the names of the functions. So there's, like, this kind of hierarchy of I'm here. I know exactly where to go. There's not 500 templates, one file and also use this idea of view models, which is like a classes that exchange and validate the data between the HTML requests and the rest of your sights. So, like this data from the URL, this data comes from the form, this data comes from the header.
45:46 KENNEDY: Let's validate that and pass it on, and those also have the same structure right there view models and then the module name. And then the name. That's a social. I really love this idea of organizing it. Just it means, like almost no matter how complex your project grows, you just follow it like a little tree traverse along. You found what you need on all the different layers. I love it.
46:05 FARRELL: think that's a really valuable part of blueprints. I think one of the things you're alluding to one of the more difficult parts of using blueprints as a not being familiar with is that idea of the app, the app instance and how to share that in the other. The other modules in the blueprints
46:22 GREGORY: still working on that one?
46:24 FARRELL: Yeah, because you created in the in the main class guy. But then how do you access it elsewhere? That's
46:29 KENNEDY: tried it said I couldn't
46:31 KENNEDY: craft. And once you
46:32 GREGORY: start breaking up your code like this, you need to do it before you understand why you reach a point past where you should have done it. And then you start to understand that maybe I needed to start doing that. So having somebody there to kind of help you along with that process was pretty key?
46:45 KENNEDY: Yeah, it's a kind of precipitate it and get it started, that's for sure.
46:49 KENNEDY: What are some of the other tools you talked about using? GitHub you talked about recording like sharing screen recordings? What are some of the other communication Tools that you use.
46:58 FARRELL: We just talked on the phone.
47:00 GREGORY: Yep, it was harder to set up because we're both busy folks. It's harder. It was harder to get the actual conversations, but it was great. So I would say every couple weeks we chat on the phone and then we actually set up. Ah, videoconference once a swell, which was good. That was, That took a lot of doing to make sure we were both at a place because, you know you can't do that necessarily quickly at work or whatever.
47:19 KENNEDY: Yeah, that can be talented.
47:21 FARRELL: It's also fortunate that the rusty and I are both on the East Coast. There's no time zone issue for that video conferencing or trying to share a Skype call or something.
47:30 KENNEDY: Yeah, I do think that the tooling is around to make this much more possible for distributed folks. It's not like, Well, I've got to find somebody in my town to help, which that may be great, right? Maybe great to find someone locally because then you could just hey, every Wednesday, let's get lunch together. I'll bring our laptops or something like that. But you know that limits the options of who you can work with pretty dramatically if you restricted to your town versus the world.
47:55 FARRELL: Well, one of the other things that I tried to do, which I think is important for me as a mentor, is that I try to be responsive to Rusty that he sends me you know a question, or he's updated his, uh, get to git repositories and asked me something about it is that I tried to look at it pretty quickly because one I want to help him, too. I don't want to fall behind where he's he's moved on because he hasn't heard from me, and suddenly my assistance is irrelevant.
48:20 KENNEDY: All right, All right. You've already gone so far to help him out. You gotta gotta keep going. How? Doug, how did you work with the I guess there's probably this tension around. Am I just doing the work for him versus teaching, you know, give him a fish for us to teach him to fish.
48:38 FARRELL: Yeah, well, I think about that a lot because I teach at a STEM place. Where with kids, You know, that range from age from 8 to 16. And, um, they'd be happy to have you give them all the fish. I have
48:51 FARRELL: Rather than figure it out themselves. So I'm onto that trick. Not that Rusty does that. But oftentimes I guess one of us. I guess I do two things. I don't try to solve the entire problem for me, and I'll give him a working example. But it's really a prototype that he's gonna have to extrapolate from in order to do everything that he intends to do. And then the other thing I try to do is I really try to listen more than talk
49:15 FARRELL: because I've found I'm sure out both of you have seen this overtime overtime listening more gives the person a chance to put their thoughts into words in a way that you're trying to explain that I just keep nodding
49:30 FARRELL: somewhat. Quite often they come to the solution themselves by the act of expressing it.
49:34 KENNEDY: Yeah, you kind of shaken up their thought patterns and got them to focus from a different perspective.
49:40 KENNEDY: Try to verbalize it and whatnot. Silence is powerful.
49:44 FARRELL: Yeah, Plus, I know that, you know, I contend to ramble on and on myself, So I want to give I want to give him an opportunity to tell me what he's
49:54 KENNEDY: well, that was a great story Doug. But that's not what I was asking.
49:59 FARRELL: That's a real possibility.
50:07 KENNEDY: Yeah, yeah, for me, too. So this sounds like this has been working out really well for you guys. And certainly I think it's
50:08 KENNEDY: great, Rusty, that you've got this job where it sounds like just looking in from the outside. It sounds to me like you've leveled up a little bit in terms of what you're doing with Python and with code and the impact that you're able tohave doing more analysis of what's going on and so on. And I'm sure this this hasn't hurt that process at all. So it sounds like it's going really well. And I guess maybe the last thing I'd like to explore while we're together It's just, you know, how do we help other people make these connections and help each other out and, you know, get get benefits on both sides?
50:41 GREGORY: It's a tough one, I think. Before I actually connected with you to talk about, you know, kind of learning Python by myself. I'd gone to a couple meet-ups in Burlington and, uh you know, for me, it's an hour drive down there an hour drive home and and stuff. And I ended up there, and everybody there is like, working at a start up and, you know, it is pretty savvy on We had this, like,
51:02 GREGORY: Dockers. And here's the
51:05 GREGORY: Kubernetes you like.
51:07 GREGORY: It was a lot of people who knew each other, you know, from different projects and stuff. You know, it's kind of, Ah, old Boys Club. Kind of. They are Young Boys Club, I guess. And I We had a presentation one night when I was there with a bunch of different organizations, came out and said what they would do with code in the area, and I would actually I was thinking to myself, I'm just gonna next time was one of these things I'm gonna show with a slide show and say, Hey, I want to try and bring you know, coating to Franklin County as a teacher. And if I could have a mentor, I think I could get to the point where I could do that kind of thing. So I was not necessary that desperate. But I was like that was like my next big playing is I didn't really have anything else up my sleeve, you know, to try and make connections. As far as that goes,
51:46 KENNEDY: it is tricky. I do think these meet ups are very valuable. People are pretty humble or they're not really, you know, they even though I'm sure people are doing stuff that sounds intimidating. I don't find very many people are condescending, I guess, is what I was looking for is like, they're pretty welcoming of newcomers, especially in the Python meet ups. And so I do think coming out to these are you could really make some good connections at them.
52:10 GREGORY: Yeah, this was Ah, General, like I don't think there is. There's a Python group there, but it never has a meet up, so it's just kind of a general. Could be It was, you know, it was a comfortable atmosphere, but I wasn't necessarily gonna walk out, you know, with the kind of connections that I was looking for. I don't know. I think I just kind of got lucky.
52:29 GREGORY: connected with Doug, So Yeah, I have
52:32 KENNEDY: only Howard. Yeah. It's funny how life takes these turns, right,
52:35 KENNEDY: Doug, would you think about finding mentors.
52:38 FARRELL: Well, I think for me is
52:40 FARRELL: it's interesting. You know, I approached. I approach Rusty because there were some things that I want to help him with. That there's also some things I wanted to help me with. And so it's kind of a two way street about the mentoring, but I think part of it is just asking someone to do, so it's probably a big thing. I go to a Python meet up in Hartford, Connecticut, and have given presentations there, and I've met a lot of people, and some people have gotten in touch with me afterwards and no enjoy the presentation or whatever, but very few of them have asked me for help at the meet up. It was clear to me that they were really looking for helping it. I thought just asked me,
53:14 FARRELL: You know what, Yeah, what's
53:16 FARRELL: the worst that could happen? Somebody says, No,
53:18 KENNEDY: I don't know how prevalent this is, and I honestly haven't been to it here in Portland. But at least in Portland, one of the Python meet ups here has, like a weekly
53:29 KENNEDY: monthly project night or something. You just come whatever come with whatever project you're working on and you could just talk to other people. And either they have a project or they're just there to give advice or whatever, and that seems like a really great thing to set up if it doesn't exist near you.
53:44 FARRELL: I suggested that to the guy who runs the Hartford meet Up that I've gone to, you know, usually have two presentations and night, and then he's had hackathon kind of things. But they're sort of free form, and I suggested to him that they they might do exactly what you suggest. That is a tutorial night where people somebody comes and they focus on a thing. And they do get to work on that thing to try to kind of like a class, I guess.
54:07 KENNEDY: Yeah, rules will do a hands on workshop on SQLAlchemy or something like that.
54:12 FARRELL: Yeah, exactly.
54:13 KENNEDY: Yeah. You know another thing I'll throw out there, it's It doesn't work for super super beginner, but it does work, I think, or even intermediate like
54:23 KENNEDY: advanced beginner. I guess I would call it is one of the things that really changed.
54:28 KENNEDY: The interaction and
54:30 KENNEDY: trajectory for me was when I started doing presentations at my local Meetup in that code camps because other people who were really bright and really experience like, Oh, that was really interesting. I didn't know that thing, but they knew other stuff that I definitely needed help with, right? And so I had drove into some small area and wanted to present on it, and
54:50 KENNEDY: that got me sort of connections.
54:53 KENNEDY: Not exactly like a mentorship, but like a peer group that I could then start talking to them about these other things that I needed that that actually really made a huge difference. And I know a lot of these meet ups they're looking for people to present, and you don't have to be an expert on everything. If you just know one thing you can spend 15 minutes on, there's a good chance you could talk about it and get connections you would otherwise wouldn't
55:14 FARRELL: Absolutely. I got I got started except writing articles published because I was doing presentations that that works at our various engineering, all hands at work, and people responded well for these presentations about the greatest things in Python, and I got the idea to turn them into some articles. And, um,
55:33 FARRELL: I've been working with Dan Bader at RealPython, and they've been very popular. So just that's what got me into that.
55:38 GREGORY: I think the short form, I think, is probably the key there to getting people up present. You know, if you only had 10 minutes or 15 minutes to to say something, that's a lot less intimidating than if you know, you're gonna give it 1/2 hour, 45 minute presentation, then take questions. You know, it's right, you know, everybody stand up and do like a lightning, you know, here's 10 or 15.
55:59 KENNEDY: Yeah, absolutely. I think that would be huge. I guess part of it is Look, if you're looking for a mentor, you've gotta take a few steps to get out there, right? Certainly. Sitting behind your computer at home and not talking to anyone is not going to get
56:12 KENNEDY: anyone to help you because they don't even know that you're out there. But also, you know, it's also a bit of a given take, right? Like you said, you both helped each other with various things and what not? I guess the one other things, maybe mention is there are people who help with speaking in the Python space. Like if you apply to PyCon, you can get a mentor that will help you craft your application and craft your presentation. And basically, the
56:39 KENNEDY: whatever it is you're gonna present, they'll give you feedback and advice on that. I guess the danger is that they accept it. WeII chosen you for the Keynote. Go. This is gonna make me so it. But yeah, it's Ah, it's still, I think I do think there's ways out there. I mean, obviously, there's communities you conjoined like different slack communities and whatnot. There's codementor.io I've never used, um, not a recommendation or endorsement. I just know they're out there, and you can I think it might even be a paid relationship. But if you like, I really need somebody. Help me. This project and I spent a month or two maybe, you know, with one on one how it might help sit that you know, that's another thing that you could could do. I don't know if anyone has experience with that.
57:23 FARRELL: I want . This is a long time ago now, but I went to Toastmasters near me for a while to help me with public speaking, which is that It's just it's certainly not code or anything, but it helped me a lot to improve my public speaking. I wish a lot of people who had worked with would go.
57:39 KENNEDY: Sure, Well, I hear you. And I was going to say that one of the really important things that you can learn that is not hot in any sort of computer programming background is this public speaking, Putting yourself out there really makes a big difference on a lot of different levels. And so whether it's Toastmasters or it's more like organic Hey, I started giving talks at my local meet up and then at a small local PyCons or whatever, like I highly encourage it. It's a rare skill, and if you have it, it'll put you in. I think
58:10 FARRELL: so. I really think it helps. Your career has been able to do that. I've
58:13 GREGORY: been telling my own kids that for a long time, dealing with kids, you know, in public schools and things like that. If they could just communicate and get their information out there and they don't mind putting themselves out there a little bit. That's gonna be it's gonna be like Python. It's gonna be like your superpower at work. You could actually communicate it because, you know, these kids have their heads in their phones and, you know, I'm not saying that's horrible, but there's not a lot of. My own Children are scared to call people on the phone. You know what
58:36 KENNEDY: I like? My daughter looks are not huge fans of talking on the phone, either. I think they're mostly hate the numbering system. Dial 472 for this system right? I understand it like I don't want to wait there for 20 minutes, but yeah, I do think that this is a skill that is going to be more special, not less. It's not like everyone's now a good speaker. When I was a kid, No. One, Now everyone's so good in public like, No, that's not true, right? It's certainly not so. I think it's really ah great thing as well. I mean, it's not directly related to being a mentor in a technical space, but I do think having that, you know, I think it helps you with other places like I talked about presenting the meet ups. And why not?
59:14 FARRELL: Sure, which gives you the opportunity to meet other people who you could either ask to be a mentor view mentor to
59:20 KENNEDY: Yeah, absolutely. Yeah, that's very cool. All right, well, you guys, this is a really interesting story, and I appreciate you coming on here to share it
59:27 FARRELL: glow to excellent.
59:29 KENNEDY: Yeah. And, Doug, I do want to ask you really quickly before we move on to the last two questions Just really quick. You talked about your book. When's it gonna be out?
59:37 FARRELL: Well, it won't be out probably ‘till 2021 because it's, uh I've only gotten four chapters written
59:42 FARRELL: 60 16 total to do so. I got a whale of a while ago, but I'm supposed to be producing one chapter month to the Manning’s Early release program. So
59:52 KENNEDY: that's cool. Well, keep slow and steady, right? That's the way to do it. That's cool, though. I'm looking for it. Sounds great. Thank you. All right. Now, before you all get out here, the last two questions. So when you write some Python code, go with you. Doug. First what editor do you use.
01:00:08 FARRELL: I primarily use PyCharm which I really like, But I'm getting up to speed on visual studio code because that's what I recommend in the book because it's really available. And it's a great tool.
01:00:20 KENNEDY: Yeah, those are both really good. Obviously, I'm a huge fan of PyCharm, but basically I used VS Code for anything that's not a Python project
01:00:27 KENNEDY: as well. So yeah, it's definitely a good one. Rusty how about you.
01:00:31 GREGORY: I prefer Atom. If I'm gonna do something that's a one off or if I'm gonna be working in multiple languages our Jupiter notebooks has been really big for me this year as well. And if it's a big project, I do PyCharm. But like I say, I'm in a relationship with PyCharm but willing to try new things, really lost all of my love for my PyCharms, stopped telling me when my functions are used or stops telling me if I need an important things like that and I can't figure out how to fix it. So, uh,
01:00:59 KENNEDY: that's not there.
01:01:01 KENNEDY: There is a way in the setting so you can go in and told to clear its cache. I've done it all. Okay, Well,
01:01:13 KENNEDY: all right. Cool. Well, yeah. So, Adam, that's cool. That's like the grandfather of VS code. In a sense, I guess that's where electron came from, right?
01:01:22 GREGORY: I really like it. It's really, really, really customizable and really fun. And until I really enjoyed it, until Doug convinced me that I needed to bugger and there's there's no good big bugger built in. So you had to switch.
01:01:34 FARRELL: I couldn't let him go down the path of being one of those vim guys. Just load his code with print statement.
01:01:42 KENNEDY: Nice, nice. And while we're talking about this, it's not either your answers, but let me just throw it out because it's it's pretty interesting. So rusty bring of Jupiter notebooks, which is super common in the data world.
01:01:53 KENNEDY: Have either of you all heard about Carnets? C A R N E T s no, no. Carnets is an open source free
01:02:02 KENNEDY: local Jupyter notebook platform for IOS
01:02:06 KENNEDY: .So yeah, it comes with, like, numpy. ScyPy I map lot live all that and it runs like on the device, not just a browser talking to something. So it works with no internet and stuff like that anyway, who knows how long it'll be until someone says, That's your answer. But it's still a pretty cool little option, uh, help you about.
01:02:23 KENNEDY: Yeah, for sure. And then notable PyPI I packages document first.
01:02:27 FARRELL: Well, I have I have to. Kind of the one is not a pi p I package. I've been using the pyenv to run multiple Python versions, which I find.
01:02:37 FARRELL: very
01:02:38 GREGORY: I was just thinking
01:02:39 KENNEDY: this morning. Like I should probably start playing with that Mark is it is. It was nice to say this one is a 3.6 one and this one is a 3.8 one.
01:02:46 FARRELL: Yeah, right. With the book I've been I've had to update my Python version for the book twice already.
01:02:52 KENNEDY: That probably going to happen two more times,
01:02:55 FARRELL: right?
01:02:58 FARRELL: The other one, I like I just discovered this a couple of days ago. Is this thing called justPY All one word? It's ah, object oriented web framework, but everything is done in Python, including the rich, a job script, web application which uses view but is embedded in the Python.
01:03:13 KENNEDY: Yeah, this really interesting over at JustPy.io I just learned about it as well. And it's like, Yeah, it's a pretty cool little work for sure. Cool. All right, well, that's a good recommendation as well. I have no idea if it even pip install it, but it's definitely cool. Rusty, how about you? Package? I'm
01:03:27 GREGORY: gonna go with pandas. I've been cleaning data for AH, 2000 students for about six months, and it's been amazing, and I never really knew why I'd want it before. But yeah, it's been and a lot of fun to use, actually, Yeah, I wish it looked like the rest of Python, but
01:03:42 KENNEDY: it's its own special thing. Yes, so that's cool. And if something I just learned about
01:03:49 KENNEDY: recently is through Brian Okken, who I think learned about it through another one of our Pythonbytes listeners
01:03:55 KENNEDY: is Dtales like details. But D T A L E. I don't know if you guys are familiar with that, but it's a cool framework that lets you visualize pandas data frame. So if you click on the link you can click on, there's like a little interactive demo tutorial thing you can check out somewhere. There's a live right at the top and it's, I think, a super reactive excel pipe thing that you just pointed your data frame and it just comes to life and you can even see, like example data. And so, yeah, it's super cool. So anyway, if people are taking your advice and use the pandas, they might also want to check that out. It's a pretty cool little officializer. Excellent. Yep. Alright. So final called action people are out there either side of this relationship that they're looking to set up, too, to work together, you know? What do they do?
01:04:43 FARRELL: Well, just reach out, make themselves public, you know.
01:04:46 GREGORY: Put yourself out there, and you just got to take the chance. And maybe somebody will take you up on it
01:04:51 FARRELL: on both sides. And I reached out to, uh,
01:04:55 FARRELL: the rusty to think that I could help him out, and he was willing to let me do so. Which was very cruel. Is afraid
01:05:00 KENNEDY: of him?
01:05:02 KENNEDY: Yeah, I'm sure he didn't see it that way. That's awesome.
01:05:05 FARRELL: I have no information things
01:05:09 KENNEDY: crazy guy that has no idea about
01:05:12 KENNEDY: the Internet. No. Obviously he knew you were on the show and stuff, right? So very cool.
01:05:18 KENNEDY: Great. I think that's good advice. And I do think that that is what it takes, right? No one is going to be willing to help you if you don't get out in the community, make some connections and take some steps, right.
01:05:28 KENNEDY: If there is someone showing effort to make progress, you're way more willing to put in a little effort to help them rather than someone just like, you know, looking to get someone to figure stuff out for
01:05:38 FARRELL: you.
01:05:39 KENNEDY: All right, well, this is really interesting peek inside. What you guys been up to And I'm sure it'll help some folks along the way.
01:05:45 FARRELL: I hope so, too.
01:05:46 KENNEDY: Thanks for me on the show.
01:05:47 GREGORY: Thank you very much.
01:05:47 FARRELL: Thanks. Thanks, Rusty.
01:05:50 KENNEDY: This has been another episode of Talk Python to Me. Our guests. In this episode were Rusty Gregory and Doug Farrel and has been brought to you by brilliant.org. And linode. Brilliant.org encourages you to level up your analytical skills and knowledge. Visit hawk Python.FM/brilliant and get brilliant premium to learn something new every day.
01:06:10 KENNEDY: Start your next Python project on linode’s. State of the Art Cloud Service. Just visit talkPython.FM/linode. LINODE. You'll automatically get a $20 credit when you create a new account. Want to level up your Python. If you're just getting started, try my Python jump start by building 10 apps course. Or, if you're looking for something more advanced, check out our new async horse that digs into all the different types of a sink program and 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 pod catcher and search for Python. We should be right at the top. You can also find the iTunes feed it /iTunes. The Google play. Feed it /Play in the direct RSS feed at /rss on, talkpython.fm This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. You get out there and write some Python code