WEBVTT 00:00:00.001 --> 00:00:04.300 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to 00:00:04.300 --> 00:00:11.540 your earbuds. This is episode 150, recorded September 25th, 2019. I'm Brian Okken. 00:00:11.540 --> 00:00:12.400 And I'm Michael Kennedy. 00:00:12.400 --> 00:00:16.840 And this episode is brought to you by Datadog. Check them out at pythonbytes.fm 00:00:16.840 --> 00:00:23.560 slash datadog. More on what they have to offer later. But Michael, right now I kind of sense a 00:00:23.560 --> 00:00:27.620 theme. Are you looking for a new job? Are you hiring somebody or what's going on? 00:00:27.620 --> 00:00:33.460 I'm going to cover a couple of topics about getting better interviews. You know, I kind of 00:00:33.460 --> 00:00:39.300 hope I never have to apply for a job or go to a job again in my life. So no, I'm not actually on the 00:00:39.300 --> 00:00:45.260 hunt for that. But I do have a couple of friends who are looking for jobs. And you know, I'm just a 00:00:45.260 --> 00:00:53.080 little sympathetic to the challenges and whatnot. So I want to kick us off with a thing called how to 00:00:53.080 --> 00:01:00.600 stand out in the Python coding interview. Okay, this comes from James Timmons on any rotor on 00:01:00.600 --> 00:01:07.940 real python.com. So it's kind of a Python version of the stuff that it seems like the tech industry 00:01:07.940 --> 00:01:12.820 thinks you should know. And I feel like it's a little bit better. I feel like the tech industry says, 00:01:12.920 --> 00:01:18.280 oh, you know, which is better a bubble sort or a quick sort? You know what, I don't care. I call 00:01:18.280 --> 00:01:24.840 sort on the list. And we're good. You know, I don't maybe sorted like you could debate dot sort versus 00:01:24.840 --> 00:01:30.080 sorted. But who cares, right? Like, this is not a problem we need to keep solving. And yet it feels 00:01:30.080 --> 00:01:35.960 like in the interview process, it falls back to, well, they asked about, you know, big O notation, 00:01:35.960 --> 00:01:41.660 they asked about like, algorithms of that type, they asked about a data structure, like when would 00:01:41.660 --> 00:01:47.300 I use a doubly linked list versus a, you know, single linked list. And like, ah, like, I can go build, 00:01:47.300 --> 00:01:53.400 you know, a Python web app with SQLAlchemy and talk to Stripe and charge a credit card. But I forgot 00:01:53.400 --> 00:01:58.700 when I use a single linked list, right? Single direction linked list. But that seems like what 00:01:58.700 --> 00:02:04.840 people are testing. So here's an article that sort of covers those kinds of questions, but specifically 00:02:04.840 --> 00:02:11.860 for the Python developer, I think it's pretty, pretty decent. So it's meant to help you kind 00:02:11.860 --> 00:02:17.420 of navigate that space of Python and show you that you have some knowledge of the built ins 00:02:17.420 --> 00:02:22.380 and of the language and things like that. And you can kind of write decent code. So it covers 00:02:22.380 --> 00:02:28.440 a handful of things with a bunch of other stuff mixed in there. So how to use enumerate to iterate 00:02:28.440 --> 00:02:33.920 both over a view of like collection to iterate both with indices and values. And if you've been 00:02:33.920 --> 00:02:38.640 doing Python for a long time, that's obvious, we do that a lot. But if you come from a language like 00:02:38.640 --> 00:02:45.260 C++ or Java or something that doesn't have this all of a sudden, well, then it's really weird, 00:02:45.260 --> 00:02:49.440 right? And you don't know to use it. So it's good to have that in there. Debugging with breakpoint 00:02:49.440 --> 00:02:55.940 formatting with f-strings, F yes, for that one. That's great. Sorting, right? Sorting lists. I 00:02:55.940 --> 00:03:00.880 talked about that, like, you don't have to care about the algorithms. But knowing how to sort stuff is 00:03:00.880 --> 00:03:07.480 really nice generators and it's pressure on memory, default values and dictionaries using the counter 00:03:07.480 --> 00:03:11.820 class, and then just some standard library stuff. And I think knowing all those things kind of 00:03:11.820 --> 00:03:17.720 puts a nice Python spin on that level of Python interviewing. 00:03:17.720 --> 00:03:18.220 Yeah. 00:03:18.220 --> 00:03:19.200 Do you do any interviewing? 00:03:19.200 --> 00:03:22.360 I haven't actually applied for a job for several years. 00:03:22.360 --> 00:03:25.540 Do you do it in reverse, though? Do you hire, I mean, like interview people for there? 00:03:25.540 --> 00:03:25.760 Yeah. 00:03:25.760 --> 00:03:30.000 Yeah, definitely a lot. And I help out with other teams, too, and they're hiring. And like, 00:03:30.000 --> 00:03:34.440 for some reason, people know me as this person that knows Python. So I'll do the Python interview 00:03:34.440 --> 00:03:41.080 part. But yeah, a lot of this stuff is stuff that I look for. If you actually say for I in length, 00:03:41.080 --> 00:03:44.420 the interview's over. Just you don't know Python then. 00:03:44.500 --> 00:03:48.240 Yeah. I mean, maybe if you're hiring for, like, I'm hiring a developer and it doesn't, 00:03:48.240 --> 00:03:51.300 they don't have to know Python, but they're going to be doing it. So we're going to help 00:03:51.300 --> 00:03:55.600 them along. And they are, they're really good at Java. You could probably mentor them over. But 00:03:55.600 --> 00:04:01.340 if your goal is to hire an experienced Python developer and they don't know for item in 00:04:01.340 --> 00:04:03.160 collection, like, yeah, you're done. 00:04:03.160 --> 00:04:08.140 Yeah. But I'm a pretty fair person. I talk through stuff. People can always recover. If you 00:04:08.140 --> 00:04:11.780 freeze up, don't worry about it. Just flow with it. I think people should interview 00:04:11.780 --> 00:04:16.680 more, even if they're not looking for a job, just to keep up their interview chops. It's good. 00:04:16.680 --> 00:04:17.720 Yeah. Nice. I agree. 00:04:17.720 --> 00:04:22.480 Speaking of being nice to people, we have a bit of news. And even though I didn't even actually 00:04:22.480 --> 00:04:28.040 know this was an issue. So there was an announcement made that the PSF, the Python Software Foundation, 00:04:28.040 --> 00:04:34.980 updated its code of conduct. And apparently the PSF had one code of conduct for the PSF and things 00:04:34.980 --> 00:04:41.460 it was sponsoring and a different one for PyCon US. And now there's just one. So that's the big 00:04:41.460 --> 00:04:46.360 news. And we've got links to the code of conduct and the enforcement guidelines and reporting 00:04:46.360 --> 00:04:51.920 guidelines. And we hear about codes of conduct occasionally and stuff. And in the past, I've 00:04:51.920 --> 00:04:56.540 thought, why do I have to care about this? I mean, just don't be a jerk and try to be a nice person. 00:04:56.540 --> 00:05:03.400 Isn't that enough? And for the most part, yes. But if that was all there was to it and there 00:05:03.400 --> 00:05:09.080 weren't any problems, then we wouldn't need these. And clearly we need them. Things come up. So I think 00:05:09.080 --> 00:05:13.360 it's good for people to go. It's not a long read. I think people should read them, especially before 00:05:13.360 --> 00:05:19.560 you go to an event to make sure you know what's up with that. The other thing that's nice to look up 00:05:19.560 --> 00:05:26.360 is what is the reporting mechanism? So if you see somebody violating these or basically just somebody 00:05:26.360 --> 00:05:31.480 being a jerk, what do you do about it? Who do you contact? And so that's good to just sort of at least 00:05:31.480 --> 00:05:35.180 have read it once so that if it happens, you can look it up and figure out what to do. 00:05:35.180 --> 00:05:40.080 At least know what it is. And you're kind of putting yourself in a space where you got to 00:05:40.080 --> 00:05:41.900 know even a little more about it maybe, huh? 00:05:41.900 --> 00:05:47.600 Right. So one of the things is that it covers things that the PSF sponsors also, sponsored 00:05:47.600 --> 00:05:52.340 spaces. This includes a couple different, two or three of the Python meetups around the country. 00:05:52.340 --> 00:05:58.580 They're not sponsoring us yet, although we probably should hit them up for that. But we are doing a 00:05:58.580 --> 00:06:03.520 meetup here in Portland West coming up next month. And yeah, we probably ought to think about this, 00:06:03.520 --> 00:06:08.080 of what to do if something happens. So yeah, Michael and I will probably talk about this 00:06:08.080 --> 00:06:10.140 before the actual meetup. 00:06:10.140 --> 00:06:12.560 Yeah, we'll figure it out. What's the date of the meetup again for people? 00:06:12.560 --> 00:06:17.560 Oh my gosh, I should know this. It's like the second Tuesday in October. So that's 00:06:17.560 --> 00:06:20.340 like the 6th or the 8th or something like that. 00:06:20.340 --> 00:06:21.420 That would be the 8th. 00:06:21.420 --> 00:06:22.240 Yes, 8th. 00:06:22.240 --> 00:06:22.440 Yeah. 00:06:22.440 --> 00:06:25.960 Awesome. All right. Well, for those of you who could make it, that'd be great to see you out there. 00:06:25.960 --> 00:06:30.520 All right. Now, speaking of great stuff, before we get on to more interviewing on my theme here, 00:06:30.520 --> 00:06:35.680 I want to tell you about Datadog. So Python Bytes is sponsored by Datadog. They're a modern cloud 00:06:35.680 --> 00:06:40.380 scale monitoring platform that brings things like metrics, logs, and traces all in one place. 00:06:40.380 --> 00:06:47.140 Their tracing client includes auto-instrumenting support for things like Django, Flask, Postgres. 00:06:47.140 --> 00:06:50.820 That means you get visibility into what your entire application is doing, 00:06:50.820 --> 00:06:55.640 not just maybe a trace out of your Python app or profiling just your Python app. But you can 00:06:55.640 --> 00:07:00.740 troubleshoot slow requests and optimize your code within a few minutes. So start monitoring your 00:07:00.740 --> 00:07:06.160 dynamic environment with a free trial. And Datadog will send you a free t-shirt as well. Just get 00:07:06.160 --> 00:07:11.320 over to pythonbytes.fm/Datadog to get started. So this previous one that I talked about, 00:07:11.320 --> 00:07:18.880 Brian, it was very much focused on sort of these, almost these data structure algorithm versions. 00:07:18.880 --> 00:07:22.920 And it said, here's the Python equivalent of some of these conversations you might have. 00:07:22.920 --> 00:07:27.360 This next one, I don't know how long it would take you to go through all this stuff, 00:07:27.360 --> 00:07:33.400 but it would take you a good long while. This is by Ben Rogagen. I'm going to say, 00:07:33.400 --> 00:07:40.160 sorry about that, if I got that wrong, goes by Seattle Data Guy. So it talks a little bit about 00:07:40.160 --> 00:07:45.520 some of the silly stuff like FizBuzz and some of the traditional classical, I don't know, 00:07:45.520 --> 00:07:50.220 silly algorithm problems like give us the M Fibonacci, et cetera, et cetera. And some things 00:07:50.220 --> 00:07:56.180 that you might study and so on. But then there's a bunch of videos. And I don't know how many videos 00:07:56.180 --> 00:08:03.020 there are many, I would say at least 75 videos on different topics. And these are like 15 minute 00:08:03.020 --> 00:08:09.860 videos. So there's some on algorithms. There's some on data structures. There's some on big O notation, 00:08:09.860 --> 00:08:15.300 dynamic programming, string manipulation, system design, operating systems, threads, object oriented 00:08:15.300 --> 00:08:22.340 programming, design patterns, SQL, and more stuff. So if you are in the process of trying to learn 00:08:22.340 --> 00:08:25.860 these things to get one of these jobs or nail one of these interviews, you've got homework. 00:08:25.860 --> 00:08:26.440 Oh, okay. 00:08:26.440 --> 00:08:27.100 That's a lot, huh? 00:08:27.100 --> 00:08:31.660 This is frightening though. Yeah. Awesome that this resource is here, especially you can like 00:08:31.660 --> 00:08:36.880 pick a part where you, you know, had trouble with, or maybe after an interview even and go, 00:08:36.880 --> 00:08:41.520 wow, I got asked this stuff and I didn't understand it. So maybe go review it then. 00:08:41.680 --> 00:08:45.720 I was just watching all of the different algorithms, sorting algorithms. I love videos 00:08:45.720 --> 00:08:51.140 of sorting algorithms. I know the visualizations. Yeah. It's, there's a big graphic of like 20 00:08:51.140 --> 00:08:55.280 different sorting algorithms, all sorting next to each other at the same time. Right. Something like 00:08:55.280 --> 00:09:03.100 that. It's mesmerizing. And also I would say there are maybe 15 pages of comments and the comments get 00:09:03.100 --> 00:09:08.280 kicked off. Like, I think we really need to face a reckoning in our profession. And the reckoning is this, 00:09:08.280 --> 00:09:14.060 we require an overload of stuff that's simply not important on the job just to get through the 00:09:14.060 --> 00:09:18.980 interview process and land a position. So, you know, basically you've got to go through all these 00:09:18.980 --> 00:09:23.760 algorithms, kind of like I said, and then in the end you do a lot of Googling and stack overflow and 00:09:23.760 --> 00:09:28.500 you find packages on awesome Python and then you install them and you roll, right? There's a huge 00:09:28.500 --> 00:09:33.280 discussion about why that is, what we can do about it and so on. So it's, I think it's great. You should 00:09:33.280 --> 00:09:37.920 also check out the conversation in the comments. On the other end of it, just a devil's advocate. 00:09:37.920 --> 00:09:44.560 One of the reasons I know people do pick up algorithm type questions is because they work in 00:09:44.560 --> 00:09:50.340 a specific space domain and it would be obvious to ask about that. But if they don't really, 00:09:50.340 --> 00:09:56.560 if they know they can train you on their domain, they have to ask you about stuff that is something 00:09:56.560 --> 00:10:02.200 generic and that's where the algorithm stuff is, I still think it's bad. Things like, 00:10:02.200 --> 00:10:06.740 what should you use, a bubble sort or quick sort? That's a dumb question. But if you have like things 00:10:06.740 --> 00:10:11.480 like, I don't know, FizzBuzz is kind of silly, but you should know it by now. And some of the other 00:10:11.480 --> 00:10:18.360 things, it's hard to come up with good questions that are fair for anybody coming at it. So also, 00:10:18.500 --> 00:10:25.580 keep in mind that. Yeah. You know what I would much rather see is something live and in the tooling 00:10:25.580 --> 00:10:29.700 and environment that that person likes to work in. So if I was interviewing somebody, 00:10:29.700 --> 00:10:35.560 you know, it seems to me like I might set up like a Zoom call and we do screen share and say, 00:10:35.560 --> 00:10:42.680 hey, I would like you to create this kind of website and have it, you know, have a route that passes data 00:10:42.680 --> 00:10:48.980 to the view method or whatever, right? Like if it's a web job or I'd like you to have a program 00:10:48.980 --> 00:10:55.060 that reads a JSON file and prints out these things and just say, okay, now go, let's do it. Talk me 00:10:55.060 --> 00:10:59.920 through building this app and spend 15 minutes. You can tell if somebody is comfortable in the language 00:10:59.920 --> 00:11:04.320 and comfortable in their tools or they have just no idea. Like I know that's what FizzBuzz is supposed 00:11:04.320 --> 00:11:10.780 to solve. But, you know, if you can't load a JSON file, which is like three lines of code and it just 00:11:10.780 --> 00:11:15.540 works with dictionaries after that, you probably are not really capable in Python. So I would much 00:11:15.540 --> 00:11:21.780 rather see something like that, like a small task that's not super domain specific. It's not really 00:11:21.780 --> 00:11:26.380 deep into some library that you could ask over all of these crazy things. And it seems like it'd be 00:11:26.380 --> 00:11:31.060 effective. So I don't know. That's my thoughts. Definitely. Cool. So one thing that does, I would 00:11:31.060 --> 00:11:37.880 really hope I don't get asked in interviews is about is regular expressions because those things are like 00:11:37.880 --> 00:11:45.820 write only. No, no, simple regular expressions are fine. Okay. In regular expressions defense, they're very useful to 00:11:45.820 --> 00:11:53.640 concisely say something, some string kind of matches some other string within, you know. Anyway, people know what 00:11:53.640 --> 00:11:57.560 regular expressions are for. Hopefully, if you're going to interview, you probably should look it up. Yeah. 00:11:57.560 --> 00:11:59.080 Third thing. 00:11:59.180 --> 00:12:05.220 But one of the hard things though is if you, this is, I'm going to introduce a project by Anthony 00:12:05.220 --> 00:12:08.040 Sotille, Sotille, Sotille? Sotille? Oh, anyway. 00:12:08.040 --> 00:12:08.440 Sotille. 00:12:08.440 --> 00:12:09.720 Sorry, Anthony. Sotille. 00:12:09.720 --> 00:12:20.340 Called RE-assert. And so what this is, it's just a new matcher that does better tracebacks for when the 00:12:20.340 --> 00:12:28.320 match fails. And so this is really helpful if you've got, if you want to do, use regular expressions for a test for a, 00:12:28.320 --> 00:12:34.500 for part of your test for your application. This string should say, hello, Michael, welcome to my 00:12:34.500 --> 00:12:38.560 website. And I know that the name is going to be different. So I'm going to use a regular expression 00:12:38.560 --> 00:12:46.260 to parse out the name. How do I make sure that that matches and have a useful answer when it doesn't? 00:12:46.260 --> 00:12:53.280 And that's where RE-assert comes in. And it's pretty fun. And I, it's a fairly new project. So the 00:12:53.280 --> 00:12:59.400 documentation's a little on the light side. So I did what I often do with new projects is I jumped into 00:12:59.400 --> 00:13:05.680 the test code and looked at the test code for this to find out how it was used. And it's kind of fun. 00:13:05.780 --> 00:13:10.800 you like, for instance, I'm, we're going to put in a show notes, an example of just matching foo with 00:13:10.800 --> 00:13:19.380 fob and how that, if you use just RE.match, it just returns a no match. Yeah. So it's not going to tell 00:13:19.380 --> 00:13:28.340 you anything, but if you use the matches object within the RE assert project, it gives you more 00:13:28.340 --> 00:13:34.660 detail of why it doesn't match. So I think this is for very specific use cases. It's very cool. 00:13:34.660 --> 00:13:39.960 I love it because one of the really frustrating things about regular expressions is you say, 00:13:39.960 --> 00:13:44.020 here's the thing and it should match this. And it says, nope, doesn't match. 00:13:44.020 --> 00:13:50.480 Why don't you match? And this is really cool. So if, if you compare foo to fob, like foo is a regular 00:13:50.480 --> 00:13:56.680 expression, fob is the value for static characters. It just matches, you know, just tries to find that 00:13:56.680 --> 00:14:02.600 substring basically. And the error is right here at the B, it didn't match the F match the O match, 00:14:02.600 --> 00:14:04.940 but the B didn't match. And that's super helpful. That's great. 00:14:04.940 --> 00:14:09.640 And there's a bunch of examples and especially in test code, but yeah, so check it out and good job, 00:14:09.640 --> 00:14:15.060 Anthony. Absolutely. You know, there's a bunch of awesome Python lists these days, Brian. 00:14:15.060 --> 00:14:15.660 Yeah. 00:14:15.660 --> 00:14:22.900 We've got awesome ASGI. We've got awesome Python applications from Mahmood. And we've talked a bit 00:14:22.900 --> 00:14:29.620 about Python typing and type hints and whatnot. So of course there's an awesome Python typing, 00:14:29.620 --> 00:14:30.900 awesome list. 00:14:30.900 --> 00:14:32.060 Okay. Nice. 00:14:32.060 --> 00:14:37.020 Yeah. It's a collection of awesome Python types, stubs, plugins, and tools for working with them. So 00:14:37.020 --> 00:14:44.240 in terms of the tools, there's the static type checkers, there's stub packages, which define 00:14:44.240 --> 00:14:50.940 the types that go with other packages, which is pretty interesting, like type shed. So instead of 00:14:50.940 --> 00:14:55.400 actually putting the types in the libraries, you can put them in these libraries that go next to 00:14:55.400 --> 00:15:01.860 your library and it will actually pull them out. It has stuff for Python, three, six, three, seven, 00:15:01.860 --> 00:15:07.420 standard library, like data classes and all of those things. So yeah, it's pretty interesting. 00:15:07.520 --> 00:15:14.040 I put them in a PYI file and it will carry the types over to like, there's an example of 00:15:14.040 --> 00:15:18.680 data classes.py that'll apply the types to data classes.py. Oh, cool. 00:15:18.680 --> 00:15:24.260 So it's got a bunch of those type shed is probably the biggest one there. It's got tools. This is like 00:15:24.260 --> 00:15:29.520 a super category of many other ones, but one I thought you might like is pytest mypy. So mypy 00:15:29.520 --> 00:15:33.520 static type checker plugin for pytest. I think we covered that one at some point. Yeah. 00:15:33.640 --> 00:15:39.380 I think so. Yeah. And then cool articles like how to type check Django and Django rest framework. So 00:15:39.380 --> 00:15:44.340 which is a whole tutorial on doing that. Apparently Django has a bunch of magic and it makes type 00:15:44.340 --> 00:15:48.740 checking it extra hard. So there's just a bunch of things like that in there that I thought people 00:15:48.740 --> 00:15:53.420 might, if you know, if they're getting into this Python typing space, it's a lot of good stuff to 00:15:53.420 --> 00:15:58.400 go check out. And some of the, like even linters, cause some people, I mean, you try one and it's 00:15:58.400 --> 00:16:02.520 confusing. Well, try another one. Maybe it fits better for what you're doing. Yeah. There's a bunch of 00:16:02.520 --> 00:16:06.400 like eight and some, I think some black stuff and things like that in there. Okay, cool. Yeah. 00:16:06.400 --> 00:16:10.880 I haven't really worked with stubs yet. I think that's something I want to try to tune to. Yeah. 00:16:10.880 --> 00:16:15.920 Neat. Same here. What do you got for our last one? Last one. Oh, so we have actually in the, 00:16:15.920 --> 00:16:21.940 the space of like looking at people writing articles and speaking and stuff, we kind of do that a lot. 00:16:22.260 --> 00:16:28.620 We run across quite a few people that list developer advocate as their job title. And I don't 00:16:28.620 --> 00:16:34.660 really know exactly what that is. And I've asked a couple of people and not quite understood it still. 00:16:34.660 --> 00:16:37.080 You did like an entire episode on it, didn't you? 00:16:37.080 --> 00:16:38.320 I did. I did. 00:16:38.320 --> 00:16:38.760 Okay. 00:16:38.760 --> 00:16:42.000 I'm going to see if I can pull up the number. The number is, I'm not sure what the number is. I got 00:16:42.000 --> 00:16:43.220 to figure it out. I'll look. Keep going. 00:16:43.300 --> 00:16:48.640 This is from Dustin Ingram, an article called developer advocacy, frequently asked questions. 00:16:48.640 --> 00:16:56.900 And the disclaimer he puts is that he is a developer advocate for Google. So other companies and other 00:16:56.900 --> 00:17:03.320 people might experience different things, but first off, just what is it? And he says he helps represent 00:17:03.320 --> 00:17:09.380 the Python community at Google in his sense, in his case, but really at whatever company somebody's 00:17:09.380 --> 00:17:14.780 working for tries to get more involved with the Python community. And then also try to represent 00:17:14.780 --> 00:17:20.560 the Python community within the company and represent the company in the community that kind of both ends 00:17:20.560 --> 00:17:26.220 of it. He has a chance to work on different packages that he cares about. In Dustin's case, he works with 00:17:26.220 --> 00:17:31.900 the PyPI and with packaging and other things, speaking in conferences. Of course, that's what we assume. 00:17:31.900 --> 00:17:37.180 That's what I assume, but there are apparently some that don't do much speaking in conferences and some 00:17:37.180 --> 00:17:42.140 that just do like one or two a year, which that sounds fun. The thing that I think really sounds 00:17:42.140 --> 00:17:46.180 fun is being the user zero for new products or features for a company. 00:17:46.180 --> 00:17:47.020 Yeah, that's pretty cool. 00:17:47.020 --> 00:17:52.440 With the bent of thinking about Python users and whether or not they like it and things like that. 00:17:52.440 --> 00:17:57.680 He's got a whole list of different things that they do, but actually this sounds like a lot of fun to 00:17:57.680 --> 00:17:59.180 me. It'd be kind of cool. 00:17:59.180 --> 00:18:04.980 I think this would be a great job. Yeah, I interviewed a couple of folks back on Talk Python. 00:18:04.980 --> 00:18:11.960 It was a lot of fun to do that episode. I think it sounds like a great job. It's one of those jobs 00:18:11.960 --> 00:18:18.040 where you basically get to explore technology. Obviously, when you work for one of these companies, 00:18:18.040 --> 00:18:23.280 it's in the slant of that. The three people I interviewed, Cecil Phillip from Microsoft, 00:18:23.280 --> 00:18:28.780 Paul Everett from JetBrains, and Matt Makai from Twilio, they all kind of work around their space, 00:18:28.780 --> 00:18:33.380 but I don't know. I think it sounds great. If you just like researching new stuff and playing with new 00:18:33.380 --> 00:18:36.220 ideas and talking to people, I would definitely do it. 00:18:36.220 --> 00:18:41.380 I kind of assumed that they even address the work-life balance. There's some people that do 00:18:41.380 --> 00:18:46.080 like to travel a lot, so you can do that, and some people that don't. I thought that maybe that was 00:18:46.080 --> 00:18:48.440 just required for a DA. 00:18:48.440 --> 00:18:54.440 Maybe. I'm not really sure either. But work-life balance is interesting, right? Because a lot of 00:18:54.440 --> 00:18:57.960 times those folks would be working from home when they're not gone. They might have more time with 00:18:57.960 --> 00:19:02.540 their family, more flexibility to go to their kid's soccer game, but then make it up in the evening, 00:19:02.540 --> 00:19:06.900 whereas people go to office every day. Maybe not so much. 00:19:06.900 --> 00:19:08.980 Definitely. I guess it depends on your life, right? 00:19:08.980 --> 00:19:13.020 That's right. What do you call balance? Okay. So, do you got any extra stuff you want to share? 00:19:13.020 --> 00:19:19.400 We already gave a shout-out to our Portland West meetup that you were doing out by your office. 00:19:19.440 --> 00:19:21.460 That's all I wanted to shout-out. How about you? 00:19:21.460 --> 00:19:25.700 Yeah, that's on meetup.com, so people can check that out. Nothing major. There was some 00:19:25.700 --> 00:19:31.980 interesting news. We covered a while ago that some of Kenneth Wright's projects were being moved 00:19:31.980 --> 00:19:39.700 around, and the biggest domino in that whole space was requests. I can't remember exactly who jumped in, 00:19:39.700 --> 00:19:43.920 but someone from the PSF jumped in and said, hey, we'll take it. We'll take care of it in this thing 00:19:43.920 --> 00:19:49.360 called some project that the PSF runs that can take care of these types of projects when they become 00:19:49.360 --> 00:19:57.100 important and are teetering on being unowned or whatever. So, there's a huge discussion on 00:19:57.100 --> 00:20:03.300 Reddit about how it actually has moved over. So, it actually has moved over to the PSF, for one. 00:20:03.300 --> 00:20:03.720 Okay. 00:20:03.720 --> 00:20:10.620 And so, now the place for requests on GitHub, for example, is github.com/PSF slash request. 00:20:10.620 --> 00:20:11.400 That's wild. 00:20:11.400 --> 00:20:11.720 Yeah. 00:20:11.780 --> 00:20:18.020 But there's a huge discussion around it on Reddit, and take that for what it is. It's Reddit. It's kind 00:20:18.020 --> 00:20:22.220 of a, you know, you get both sides type of place, but I think people find it interesting. 00:20:22.220 --> 00:20:26.740 I didn't really know that there was, actually, there's quite a bit of stuff. There's a few 00:20:26.740 --> 00:20:29.980 projects under PSF. I imagine that will grow bigger now. 00:20:29.980 --> 00:20:31.260 Yeah, I would think so as well. 00:20:31.260 --> 00:20:33.080 Black is there. That's interesting. 00:20:33.080 --> 00:20:34.840 How interesting. Are you ready for some laughs? 00:20:34.980 --> 00:20:35.560 I am. 00:20:35.560 --> 00:20:39.860 This one might hurt us a little bit. This is good. As in from laughing so hard. 00:20:39.860 --> 00:20:40.220 Okay. 00:20:40.220 --> 00:20:48.060 This one is called to our attention by Colin Martin, and it's a set of web development merit badges. 00:20:48.060 --> 00:20:52.580 Go ahead and pull up the link for where you can see the badges, because you got to see the picture 00:20:52.580 --> 00:20:55.880 that goes along with each badge. Let's take them like row by row. 00:20:55.880 --> 00:20:56.260 Okay. 00:20:56.260 --> 00:21:00.180 All right. I'll do the first one. They each has a big circle, and it's got like something in it. 00:21:00.180 --> 00:21:06.540 This one has a giant A, and it says, so you get this badge if you changed a DNS record and everything 00:21:06.540 --> 00:21:14.220 worked just fine. This one, I love this one. There's a forward slash bracket A dash brain bracket bracket, 00:21:14.220 --> 00:21:16.860 and it says comprehended someone else's regex. 00:21:16.860 --> 00:21:18.940 Yeah, exactly. Definitely. 00:21:18.940 --> 00:21:23.080 And you just have a little bit of a web bent. Another one is like an expander thing. It says 00:21:23.080 --> 00:21:24.600 built an accordion from scratch. 00:21:24.600 --> 00:21:25.340 I've done that. 00:21:25.340 --> 00:21:29.360 I think you've done this next one, the one on the next row. 00:21:29.360 --> 00:21:32.380 So, colon WQ for exited Vim. 00:21:32.380 --> 00:21:36.400 Exited Vim. I love it. You want to do the next two? 00:21:36.400 --> 00:21:42.360 Yeah. So, oh, crud. You get it if you accidentally created your own CMS. 00:21:42.360 --> 00:21:46.240 And then a little painter. I like the little painter with the acorn hat. 00:21:46.240 --> 00:21:48.180 Yeah, it's like a French design painter. 00:21:48.180 --> 00:21:52.880 Yeah. Pulled off. You get this if you pulled off a design you didn't think you could. Well, 00:21:52.880 --> 00:21:53.900 that's actually kind of nice. 00:21:53.900 --> 00:21:58.600 Yeah, this is nice. This next one is for the consultants out there. It's like a mallet banging 00:21:58.600 --> 00:22:04.440 down like a judge. And you get this one if you told a client or boss, no, we're not doing 00:22:04.440 --> 00:22:04.700 that. 00:22:04.700 --> 00:22:05.800 Yeah, that's awesome. 00:22:05.800 --> 00:22:12.140 Then there's one with like some crazy matching symbols. It says you wrote an HT access redirect that 00:22:12.140 --> 00:22:17.460 included a capture group. And then this one's pretty funny. You have a minus CSS red, pink, 00:22:17.460 --> 00:22:23.380 and a plus CSS green. It says you refactored a large portion of CSS and you didn't break anything. 00:22:23.640 --> 00:22:26.040 Oh, yeah, that's good. There's some good ones. 00:22:26.040 --> 00:22:27.400 Yeah, you want to just pick out a couple more? 00:22:27.400 --> 00:22:28.600 Yeah. 00:22:28.600 --> 00:22:31.500 Merged master into a six month old branch. 00:22:31.500 --> 00:22:36.560 I love that one. There's like two arrows going sideways, two arrows going down. It says centered 00:22:36.560 --> 00:22:38.560 in element horizontally and vertically. 00:22:38.560 --> 00:22:40.720 Oh, nobody can have that one. 00:22:40.720 --> 00:22:41.820 That's so hard. 00:22:41.820 --> 00:22:43.340 It's not possible. I don't think. 00:22:43.340 --> 00:22:44.520 I don't think it is either. 00:22:44.700 --> 00:22:49.680 I like the dude laying down on the ground says you pushed to production on Friday and 00:22:49.680 --> 00:22:51.740 didn't roll it back and over the weekend. 00:22:51.740 --> 00:22:58.340 Here's the undecutive one. Had a neglected site get hacked and spammed. 00:22:58.340 --> 00:22:59.940 Oh, yeah. 00:22:59.940 --> 00:23:06.100 And then another one, there's a guy sleeping on a laptop and it says solved a bug by taking 00:23:06.100 --> 00:23:06.480 a nap. 00:23:06.480 --> 00:23:12.760 That's awesome. There's a semicolon for debug something for over an hour where the fix literally 00:23:12.760 --> 00:23:13.840 was one character. 00:23:13.840 --> 00:23:19.100 Awesome. Yeah. All right. Let's leave the rest for the listeners out there to go check out. 00:23:19.100 --> 00:23:21.200 You just got to see the pictures. These are brilliant. 00:23:21.200 --> 00:23:22.200 These are great. 00:23:22.200 --> 00:23:25.500 Yeah. First time I read it, I was my stomach hurt. It was really good. 00:23:25.500 --> 00:23:30.960 All right. Well, speaking of good, this was a fun show. Thanks, Brian. 00:23:30.960 --> 00:23:31.540 Thank you. 00:23:31.540 --> 00:23:32.420 You bet. Talk to you later. 00:23:32.420 --> 00:23:37.000 Thank you for listening to Python Bytes. Follow the show on Twitter at Python Bytes. 00:23:37.000 --> 00:23:41.760 That's Python Bytes as in B-Y-T-E-S. And get the full show notes at 00:23:41.760 --> 00:23:47.280 pythonbytes.fm. If you have a news item you want featured, just visit pythonbytes.fm and 00:23:47.280 --> 00:23:51.200 send it our way. We're always on the lookout for sharing something cool. This is Brian Okken, 00:23:51.200 --> 00:23:55.280 and on behalf of myself and Michael Kennedy, thank you for listening and sharing this podcast 00:23:55.280 --> 00:23:56.460 with your friends and colleagues.