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.

