#150: Winning the Python software interview
Sponsored by Datadog: pythonbytes.fm/datadog
Michael #1: How to Stand Out in a Python Coding Interview
- Real Python, by James Timmins
- Are tech interviews broken? Well at least we can try to succeed at them anyway
- You’ve made it past the phone call with the recruiter, and now it’s time to show that you know how to solve problems with actual code…
- Interviews aren’t just about solving problems: they’re also about showing that you can write clean production code. This means that you have a deep knowledge of Python’s built-in functionality and libraries.
- Things to learn
- Use
enumerate()
to iterate over both indices and values - Debug problematic code with
breakpoint()
- Format strings effectively with f-strings
- Sort lists with custom arguments
- Use generators instead of list comprehensions to conserve memory
- Define default values when looking up dictionary keys
- Count hashable objects with the
collections.Counter
class - Use the standard library to get lists of permutations and combinations
- Use
Brian #2: The Python Software Foundation has updated its Code of Conduct
- There’s now one code of conduct for PSF and PyCon US and other spaces sponsored by the PSF
- This includes some regional conferences, such as PyCascades, and some meetup groups, (ears perk up)
- The docs
- Do we need to care?
- all of us, yes. If there weren’t problems, we wouldn’t need these.
- attendees, yes. Know before you go.
- organizers, yes. Better to think about it ahead of time and have a plan than have to make up a strategy during an event if something happens.
- me, in particular, and Michael. Ugh. yes. our first meetup is next month. I’d like to be in line with the rest of Python. So, yep, we are going to have to talk about this and put something in place.
Michael #3: The Interview Study Guide For Software Engineers
- A checklist on my last round of interviews that covers many of the popular topics.
- Warm Up With The Classics
- Many many videos on interview topics and ideas
- Data Structures
- Algorithms
- Big O Notation
- Dynamic Programming
- String Manipulation
- System Design
- Operating Systems
- Threads
- Object Oriented
- Design Patterns
- SQL
- Fun conversation in the comments
Brian #4: re-assert : “show where your regex match assertion failed”
- Anthony Sotille
- “
re-assert
provides a helper class to make assertions of regexes simpler.” - The
Matches
objects allows for useful pytest assertion messages - In order to get my head around it, I looked at the test code:
- https://raw.githubusercontent.com/asottile/re-assert/master/tests/re_assert_test.py
- and modified it to remove all of the
with pytest.raises(AssertionError)…
to actually get to see the errors and how to use it.def test_match_old(): > assert re.match('foo', 'fob') E AssertionError: assert None E + where None = <function match at 0x101aaa268>('foo', 'fob') E + where <function match at 0x101aaa268> = re.match test_re.py:8: AssertionError ____________ test_match_new ___________________ def test_match_new(): > assert Matches('foo') == 'fob' E AssertionError: assert Matches('foo') ^ == 'fob' E -Matches('foo') E - # regex failed to match at: E - # E - #> fob E - # ^ E +'fob'
Michael #5: awesome-python-typing
- Collection of awesome Python types, stubs, plugins, and tools to work with them.
- Taxonomy
- Static type checkers: mypy - Optional static typing for Python 3 and 2 (PEP 484).
- Stub packages: Typeshed - Collection of library stubs for Python, with static types.
- Tools (super category): pytest-mypy - Mypy static type checker plugin for Pytest.
- Articles: Typechecking Django and DRF - Full tutorial about type-checking django.
Brian #6: Developer Advocacy: Frequently Asked Questions
- Dustin Ingram
- I know a handful of people who have this job title. What is it?
- disclaimer: Dustin is a DA at Google. Other companies might be different
- What is it?
- “I help represent the Python community at [company]"
- “part of my job is to be deeply involved in the Python community.”
- working on projects that help Python, PyPI, packaging, etc.
- speaking at conferences
- talking to people. customers and non-customers
- talking to product teams
- being “user zero” for new products and features
- paying attention to places users might raise issues about products
- working in open source
- creating content for Python devs
- being involved in the community as a company rep
- representing Python in the company
- coordinating with other DAs
Work/life?
- Not all DAs travel all the time. that was my main question.
Talk Python episode: War Stories of the Developer Evangelists
Extras:
Michael:
Joke:
via https://twitter.com/NotGbo/status/1173667028965777410
Episode Transcript
Collapse transcript
00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to
00:04 your earbuds. This is episode 150, recorded September 25th, 2019. I'm Brian Okken.
00:11 And I'm Michael Kennedy.
00:12 And this episode is brought to you by Datadog. Check them out at pythonbytes.fm
00:16 slash datadog. More on what they have to offer later. But Michael, right now I kind of sense a
00:23 theme. Are you looking for a new job? Are you hiring somebody or what's going on?
00:27 I'm going to cover a couple of topics about getting better interviews. You know, I kind of
00:33 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:39 hunt for that. But I do have a couple of friends who are looking for jobs. And you know, I'm just a
00:45 little sympathetic to the challenges and whatnot. So I want to kick us off with a thing called how to
00:53 stand out in the Python coding interview. Okay, this comes from James Timmons on any rotor on
01:00 real python.com. So it's kind of a Python version of the stuff that it seems like the tech industry
01:07 thinks you should know. And I feel like it's a little bit better. I feel like the tech industry says,
01:12 oh, you know, which is better a bubble sort or a quick sort? You know what, I don't care. I call
01:18 sort on the list. And we're good. You know, I don't maybe sorted like you could debate dot sort versus
01:24 sorted. But who cares, right? Like, this is not a problem we need to keep solving. And yet it feels
01:30 like in the interview process, it falls back to, well, they asked about, you know, big O notation,
01:35 they asked about like, algorithms of that type, they asked about a data structure, like when would
01:41 I use a doubly linked list versus a, you know, single linked list. And like, ah, like, I can go build,
01:47 you know, a Python web app with SQLAlchemy and talk to Stripe and charge a credit card. But I forgot
01:53 when I use a single linked list, right? Single direction linked list. But that seems like what
01:58 people are testing. So here's an article that sort of covers those kinds of questions, but specifically
02:04 for the Python developer, I think it's pretty, pretty decent. So it's meant to help you kind
02:11 of navigate that space of Python and show you that you have some knowledge of the built ins
02:17 and of the language and things like that. And you can kind of write decent code. So it covers
02:22 a handful of things with a bunch of other stuff mixed in there. So how to use enumerate to iterate
02:28 both over a view of like collection to iterate both with indices and values. And if you've been
02:33 doing Python for a long time, that's obvious, we do that a lot. But if you come from a language like
02:38 C++ or Java or something that doesn't have this all of a sudden, well, then it's really weird,
02:45 right? And you don't know to use it. So it's good to have that in there. Debugging with breakpoint
02:49 formatting with f-strings, F yes, for that one. That's great. Sorting, right? Sorting lists. I
02:55 talked about that, like, you don't have to care about the algorithms. But knowing how to sort stuff is
03:00 really nice generators and it's pressure on memory, default values and dictionaries using the counter
03:07 class, and then just some standard library stuff. And I think knowing all those things kind of
03:11 puts a nice Python spin on that level of Python interviewing.
03:17 Yeah.
03:18 Do you do any interviewing?
03:19 I haven't actually applied for a job for several years.
03:22 Do you do it in reverse, though? Do you hire, I mean, like interview people for there?
03:25 Yeah.
03:25 Yeah, definitely a lot. And I help out with other teams, too, and they're hiring. And like,
03:30 for some reason, people know me as this person that knows Python. So I'll do the Python interview
03:34 part. But yeah, a lot of this stuff is stuff that I look for. If you actually say for I in length,
03:41 the interview's over. Just you don't know Python then.
03:44 Yeah. I mean, maybe if you're hiring for, like, I'm hiring a developer and it doesn't,
03:48 they don't have to know Python, but they're going to be doing it. So we're going to help
03:51 them along. And they are, they're really good at Java. You could probably mentor them over. But
03:55 if your goal is to hire an experienced Python developer and they don't know for item in
04:01 collection, like, yeah, you're done.
04:03 Yeah. But I'm a pretty fair person. I talk through stuff. People can always recover. If you
04:08 freeze up, don't worry about it. Just flow with it. I think people should interview
04:11 more, even if they're not looking for a job, just to keep up their interview chops. It's good.
04:16 Yeah. Nice. I agree.
04:17 Speaking of being nice to people, we have a bit of news. And even though I didn't even actually
04:22 know this was an issue. So there was an announcement made that the PSF, the Python Software Foundation,
04:28 updated its code of conduct. And apparently the PSF had one code of conduct for the PSF and things
04:34 it was sponsoring and a different one for PyCon US. And now there's just one. So that's the big
04:41 news. And we've got links to the code of conduct and the enforcement guidelines and reporting
04:46 guidelines. And we hear about codes of conduct occasionally and stuff. And in the past, I've
04:51 thought, why do I have to care about this? I mean, just don't be a jerk and try to be a nice person.
04:56 Isn't that enough? And for the most part, yes. But if that was all there was to it and there
05:03 weren't any problems, then we wouldn't need these. And clearly we need them. Things come up. So I think
05:09 it's good for people to go. It's not a long read. I think people should read them, especially before
05:13 you go to an event to make sure you know what's up with that. The other thing that's nice to look up
05:19 is what is the reporting mechanism? So if you see somebody violating these or basically just somebody
05:26 being a jerk, what do you do about it? Who do you contact? And so that's good to just sort of at least
05:31 have read it once so that if it happens, you can look it up and figure out what to do.
05:35 At least know what it is. And you're kind of putting yourself in a space where you got to
05:40 know even a little more about it maybe, huh?
05:41 Right. So one of the things is that it covers things that the PSF sponsors also, sponsored
05:47 spaces. This includes a couple different, two or three of the Python meetups around the country.
05:52 They're not sponsoring us yet, although we probably should hit them up for that. But we are doing a
05:58 meetup here in Portland West coming up next month. And yeah, we probably ought to think about this,
06:03 of what to do if something happens. So yeah, Michael and I will probably talk about this
06:08 before the actual meetup.
06:10 Yeah, we'll figure it out. What's the date of the meetup again for people?
06:12 Oh my gosh, I should know this. It's like the second Tuesday in October. So that's
06:17 like the 6th or the 8th or something like that.
06:20 That would be the 8th.
06:21 Yes, 8th.
06:22 Yeah.
06:22 Awesome. All right. Well, for those of you who could make it, that'd be great to see you out there.
06:25 All right. Now, speaking of great stuff, before we get on to more interviewing on my theme here,
06:30 I want to tell you about Datadog. So Python Bytes is sponsored by Datadog. They're a modern cloud
06:35 scale monitoring platform that brings things like metrics, logs, and traces all in one place.
06:40 Their tracing client includes auto-instrumenting support for things like Django, Flask, Postgres.
06:47 That means you get visibility into what your entire application is doing,
06:50 not just maybe a trace out of your Python app or profiling just your Python app. But you can
06:55 troubleshoot slow requests and optimize your code within a few minutes. So start monitoring your
07:00 dynamic environment with a free trial. And Datadog will send you a free t-shirt as well. Just get
07:06 over to pythonbytes.fm/Datadog to get started. So this previous one that I talked about,
07:11 Brian, it was very much focused on sort of these, almost these data structure algorithm versions.
07:18 And it said, here's the Python equivalent of some of these conversations you might have.
07:22 This next one, I don't know how long it would take you to go through all this stuff,
07:27 but it would take you a good long while. This is by Ben Rogagen. I'm going to say,
07:33 sorry about that, if I got that wrong, goes by Seattle Data Guy. So it talks a little bit about
07:40 some of the silly stuff like FizBuzz and some of the traditional classical, I don't know,
07:45 silly algorithm problems like give us the M Fibonacci, et cetera, et cetera. And some things
07:50 that you might study and so on. But then there's a bunch of videos. And I don't know how many videos
07:56 there are many, I would say at least 75 videos on different topics. And these are like 15 minute
08:03 videos. So there's some on algorithms. There's some on data structures. There's some on big O notation,
08:09 dynamic programming, string manipulation, system design, operating systems, threads, object oriented
08:15 programming, design patterns, SQL, and more stuff. So if you are in the process of trying to learn
08:22 these things to get one of these jobs or nail one of these interviews, you've got homework.
08:25 Oh, okay.
08:26 That's a lot, huh?
08:27 This is frightening though. Yeah. Awesome that this resource is here, especially you can like
08:31 pick a part where you, you know, had trouble with, or maybe after an interview even and go,
08:36 wow, I got asked this stuff and I didn't understand it. So maybe go review it then.
08:41 I was just watching all of the different algorithms, sorting algorithms. I love videos
08:45 of sorting algorithms. I know the visualizations. Yeah. It's, there's a big graphic of like 20
08:51 different sorting algorithms, all sorting next to each other at the same time. Right. Something like
08:55 that. It's mesmerizing. And also I would say there are maybe 15 pages of comments and the comments get
09:03 kicked off. Like, I think we really need to face a reckoning in our profession. And the reckoning is this,
09:08 we require an overload of stuff that's simply not important on the job just to get through the
09:14 interview process and land a position. So, you know, basically you've got to go through all these
09:18 algorithms, kind of like I said, and then in the end you do a lot of Googling and stack overflow and
09:23 you find packages on awesome Python and then you install them and you roll, right? There's a huge
09:28 discussion about why that is, what we can do about it and so on. So it's, I think it's great. You should
09:33 also check out the conversation in the comments. On the other end of it, just a devil's advocate.
09:37 One of the reasons I know people do pick up algorithm type questions is because they work in
09:44 a specific space domain and it would be obvious to ask about that. But if they don't really,
09:50 if they know they can train you on their domain, they have to ask you about stuff that is something
09:56 generic and that's where the algorithm stuff is, I still think it's bad. Things like,
10:02 what should you use, a bubble sort or quick sort? That's a dumb question. But if you have like things
10:06 like, I don't know, FizzBuzz is kind of silly, but you should know it by now. And some of the other
10:11 things, it's hard to come up with good questions that are fair for anybody coming at it. So also,
10:18 keep in mind that. Yeah. You know what I would much rather see is something live and in the tooling
10:25 and environment that that person likes to work in. So if I was interviewing somebody,
10:29 you know, it seems to me like I might set up like a Zoom call and we do screen share and say,
10:35 hey, I would like you to create this kind of website and have it, you know, have a route that passes data
10:42 to the view method or whatever, right? Like if it's a web job or I'd like you to have a program
10:48 that reads a JSON file and prints out these things and just say, okay, now go, let's do it. Talk me
10:55 through building this app and spend 15 minutes. You can tell if somebody is comfortable in the language
10:59 and comfortable in their tools or they have just no idea. Like I know that's what FizzBuzz is supposed
11:04 to solve. But, you know, if you can't load a JSON file, which is like three lines of code and it just
11:10 works with dictionaries after that, you probably are not really capable in Python. So I would much
11:15 rather see something like that, like a small task that's not super domain specific. It's not really
11:21 deep into some library that you could ask over all of these crazy things. And it seems like it'd be
11:26 effective. So I don't know. That's my thoughts. Definitely. Cool. So one thing that does, I would
11:31 really hope I don't get asked in interviews is about is regular expressions because those things are like
11:37 write only. No, no, simple regular expressions are fine. Okay. In regular expressions defense, they're very useful to
11:45 concisely say something, some string kind of matches some other string within, you know. Anyway, people know what
11:53 regular expressions are for. Hopefully, if you're going to interview, you probably should look it up. Yeah.
11:57 Third thing.
11:59 But one of the hard things though is if you, this is, I'm going to introduce a project by Anthony
12:05 Sotille, Sotille, Sotille? Sotille? Oh, anyway.
12:08 Sotille.
12:08 Sorry, Anthony. Sotille.
12:09 Called RE-assert. And so what this is, it's just a new matcher that does better tracebacks for when the
12:20 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,
12:28 for part of your test for your application. This string should say, hello, Michael, welcome to my
12:34 website. And I know that the name is going to be different. So I'm going to use a regular expression
12:38 to parse out the name. How do I make sure that that matches and have a useful answer when it doesn't?
12:46 And that's where RE-assert comes in. And it's pretty fun. And I, it's a fairly new project. So the
12:53 documentation's a little on the light side. So I did what I often do with new projects is I jumped into
12:59 the test code and looked at the test code for this to find out how it was used. And it's kind of fun.
13:05 you like, for instance, I'm, we're going to put in a show notes, an example of just matching foo with
13:10 fob and how that, if you use just RE.match, it just returns a no match. Yeah. So it's not going to tell
13:19 you anything, but if you use the matches object within the RE assert project, it gives you more
13:28 detail of why it doesn't match. So I think this is for very specific use cases. It's very cool.
13:34 I love it because one of the really frustrating things about regular expressions is you say,
13:39 here's the thing and it should match this. And it says, nope, doesn't match.
13:44 Why don't you match? And this is really cool. So if, if you compare foo to fob, like foo is a regular
13:50 expression, fob is the value for static characters. It just matches, you know, just tries to find that
13:56 substring basically. And the error is right here at the B, it didn't match the F match the O match,
14:02 but the B didn't match. And that's super helpful. That's great.
14:04 And there's a bunch of examples and especially in test code, but yeah, so check it out and good job,
14:09 Anthony. Absolutely. You know, there's a bunch of awesome Python lists these days, Brian.
14:15 Yeah.
14:15 We've got awesome ASGI. We've got awesome Python applications from Mahmood. And we've talked a bit
14:22 about Python typing and type hints and whatnot. So of course there's an awesome Python typing,
14:29 awesome list.
14:30 Okay. Nice.
14:32 Yeah. It's a collection of awesome Python types, stubs, plugins, and tools for working with them. So
14:37 in terms of the tools, there's the static type checkers, there's stub packages, which define
14:44 the types that go with other packages, which is pretty interesting, like type shed. So instead of
14:50 actually putting the types in the libraries, you can put them in these libraries that go next to
14:55 your library and it will actually pull them out. It has stuff for Python, three, six, three, seven,
15:01 standard library, like data classes and all of those things. So yeah, it's pretty interesting.
15:07 I put them in a PYI file and it will carry the types over to like, there's an example of
15:14 data classes.py that'll apply the types to data classes.py. Oh, cool.
15:18 So it's got a bunch of those type shed is probably the biggest one there. It's got tools. This is like
15:24 a super category of many other ones, but one I thought you might like is pytest mypy. So mypy
15:29 static type checker plugin for pytest. I think we covered that one at some point. Yeah.
15:33 I think so. Yeah. And then cool articles like how to type check Django and Django rest framework. So
15:39 which is a whole tutorial on doing that. Apparently Django has a bunch of magic and it makes type
15:44 checking it extra hard. So there's just a bunch of things like that in there that I thought people
15:48 might, if you know, if they're getting into this Python typing space, it's a lot of good stuff to
15:53 go check out. And some of the, like even linters, cause some people, I mean, you try one and it's
15:58 confusing. Well, try another one. Maybe it fits better for what you're doing. Yeah. There's a bunch of
16:02 like eight and some, I think some black stuff and things like that in there. Okay, cool. Yeah.
16:06 I haven't really worked with stubs yet. I think that's something I want to try to tune to. Yeah.
16:10 Neat. Same here. What do you got for our last one? Last one. Oh, so we have actually in the,
16:15 the space of like looking at people writing articles and speaking and stuff, we kind of do that a lot.
16:22 We run across quite a few people that list developer advocate as their job title. And I don't
16:28 really know exactly what that is. And I've asked a couple of people and not quite understood it still.
16:34 You did like an entire episode on it, didn't you?
16:37 I did. I did.
16:38 Okay.
16:38 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
16:42 to figure it out. I'll look. Keep going.
16:43 This is from Dustin Ingram, an article called developer advocacy, frequently asked questions.
16:48 And the disclaimer he puts is that he is a developer advocate for Google. So other companies and other
16:56 people might experience different things, but first off, just what is it? And he says he helps represent
17:03 the Python community at Google in his sense, in his case, but really at whatever company somebody's
17:09 working for tries to get more involved with the Python community. And then also try to represent
17:14 the Python community within the company and represent the company in the community that kind of both ends
17:20 of it. He has a chance to work on different packages that he cares about. In Dustin's case, he works with
17:26 the PyPI and with packaging and other things, speaking in conferences. Of course, that's what we assume.
17:31 That's what I assume, but there are apparently some that don't do much speaking in conferences and some
17:37 that just do like one or two a year, which that sounds fun. The thing that I think really sounds
17:42 fun is being the user zero for new products or features for a company.
17:46 Yeah, that's pretty cool.
17:47 With the bent of thinking about Python users and whether or not they like it and things like that.
17:52 He's got a whole list of different things that they do, but actually this sounds like a lot of fun to
17:57 me. It'd be kind of cool.
17:59 I think this would be a great job. Yeah, I interviewed a couple of folks back on Talk Python.
18:04 It was a lot of fun to do that episode. I think it sounds like a great job. It's one of those jobs
18:11 where you basically get to explore technology. Obviously, when you work for one of these companies,
18:18 it's in the slant of that. The three people I interviewed, Cecil Phillip from Microsoft,
18:23 Paul Everett from JetBrains, and Matt McKay from Twilio, they all kind of work around their space,
18:28 but I don't know. I think it sounds great. If you just like researching new stuff and playing with new
18:33 ideas and talking to people, I would definitely do it.
18:36 I kind of assumed that they even address the work-life balance. There's some people that do
18:41 like to travel a lot, so you can do that, and some people that don't. I thought that maybe that was
18:46 just required for a DA.
18:48 Maybe. I'm not really sure either. But work-life balance is interesting, right? Because a lot of
18:54 times those folks would be working from home when they're not gone. They might have more time with
18:57 their family, more flexibility to go to their kid's soccer game, but then make it up in the evening,
19:02 whereas people go to office every day. Maybe not so much.
19:06 Definitely. I guess it depends on your life, right?
19:08 That's right. What do you call balance? Okay. So, do you got any extra stuff you want to share?
19:13 We already gave a shout-out to our Portland West meetup that you were doing out by your office.
19:19 That's all I wanted to shout-out. How about you?
19:21 Yeah, that's on meetup.com, so people can check that out. Nothing major. There was some
19:25 interesting news. We covered a while ago that some of Kenneth Wright's projects were being moved
19:31 around, and the biggest domino in that whole space was requests. I can't remember exactly who jumped in,
19:39 but someone from the PSF jumped in and said, hey, we'll take it. We'll take care of it in this thing
19:43 called some project that the PSF runs that can take care of these types of projects when they become
19:49 important and are teetering on being unowned or whatever. So, there's a huge discussion on
19:57 Reddit about how it actually has moved over. So, it actually has moved over to the PSF, for one.
20:03 Okay.
20:03 And so, now the place for requests on GitHub, for example, is github.com/PSF slash request.
20:10 That's wild.
20:11 Yeah.
20:11 But there's a huge discussion around it on Reddit, and take that for what it is. It's Reddit. It's kind
20:18 of a, you know, you get both sides type of place, but I think people find it interesting.
20:22 I didn't really know that there was, actually, there's quite a bit of stuff. There's a few
20:26 projects under PSF. I imagine that will grow bigger now.
20:29 Yeah, I would think so as well.
20:31 Black is there. That's interesting.
20:33 How interesting. Are you ready for some laughs?
20:34 I am.
20:35 This one might hurt us a little bit. This is good. As in from laughing so hard.
20:39 Okay.
20:40 This one is called to our attention by Colin Martin, and it's a set of web development merit badges.
20:48 Go ahead and pull up the link for where you can see the badges, because you got to see the picture
20:52 that goes along with each badge. Let's take them like row by row.
20:55 Okay.
20:56 All right. I'll do the first one. They each has a big circle, and it's got like something in it.
21:00 This one has a giant A, and it says, so you get this badge if you changed a DNS record and everything
21:06 worked just fine. This one, I love this one. There's a forward slash bracket A dash brain bracket bracket,
21:14 and it says comprehended someone else's regex.
21:16 Yeah, exactly. Definitely.
21:18 And you just have a little bit of a web bent. Another one is like an expander thing. It says
21:23 built an accordion from scratch.
21:24 I've done that.
21:25 I think you've done this next one, the one on the next row.
21:29 So, colon WQ for exited Vim.
21:32 Exited Vim. I love it. You want to do the next two?
21:36 Yeah. So, oh, crud. You get it if you accidentally created your own CMS.
21:42 And then a little painter. I like the little painter with the acorn hat.
21:46 Yeah, it's like a French design painter.
21:48 Yeah. Pulled off. You get this if you pulled off a design you didn't think you could. Well,
21:52 that's actually kind of nice.
21:53 Yeah, this is nice. This next one is for the consultants out there. It's like a mallet banging
21:58 down like a judge. And you get this one if you told a client or boss, no, we're not doing
22:04 that.
22:04 Yeah, that's awesome.
22:05 Then there's one with like some crazy matching symbols. It says you wrote an HT access redirect that
22:12 included a capture group. And then this one's pretty funny. You have a minus CSS red, pink,
22:17 and a plus CSS green. It says you refactored a large portion of CSS and you didn't break anything.
22:23 Oh, yeah, that's good. There's some good ones.
22:26 Yeah, you want to just pick out a couple more?
22:27 Yeah.
22:28 Merged master into a six month old branch.
22:31 I love that one. There's like two arrows going sideways, two arrows going down. It says centered
22:36 in element horizontally and vertically.
22:38 Oh, nobody can have that one.
22:40 That's so hard.
22:41 It's not possible. I don't think.
22:43 I don't think it is either.
22:44 I like the dude laying down on the ground says you pushed to production on Friday and
22:49 didn't roll it back and over the weekend.
22:51 Here's the undecutive one. Had a neglected site get hacked and spammed.
22:58 Oh, yeah.
22:59 And then another one, there's a guy sleeping on a laptop and it says solved a bug by taking
23:06 a nap.
23:06 That's awesome. There's a semicolon for debug something for over an hour where the fix literally
23:12 was one character.
23:13 Awesome. Yeah. All right. Let's leave the rest for the listeners out there to go check out.
23:19 You just got to see the pictures. These are brilliant.
23:21 These are great.
23:22 Yeah. First time I read it, I was my stomach hurt. It was really good.
23:25 All right. Well, speaking of good, this was a fun show. Thanks, Brian.
23:30 Thank you.
23:31 You bet. Talk to you later.
23:32 Thank you for listening to Python Bytes. Follow the show on Twitter at Python Bytes.
23:37 That's Python Bytes as in B-Y-T-E-S. And get the full show notes at pythonbytes.fm. If you have a news item you want featured, just visit pythonbytes.fm and
23:47 send it our way. We're always on the lookout for sharing something cool. This is Brian Okken,
23:51 and on behalf of myself and Michael Kennedy, thank you for listening and sharing this podcast
23:55 with your friends and colleagues.