Python Bytes - #200 No dog-piling please (it's episode 200!)

Episode Date: September 25, 2020

Topics covered in this episode: How to be helpful online * blackcellmagic* Test smarter, not harder US: The Greatest Package in the World Think Like A Coder Costs of running a Python web app for 55...k monthly users Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/200

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 200. I can't believe it. Recorded September 16th, 2020. I'm Brian Ocken. And I'm Michael Kennedy. 200. Can you believe it? I actually cannot believe it. That is a ton of podcasting and everyone's been super supportive. And it's been great to do 200 episodes with you. I don't think we've actually done 200 episodes because there's a few times you couldn't make it or I couldn't make it or we did some live thing. So probably like 195 together, but that's still a ton of podcasting together. Yeah, yeah, it is. It's pretty exciting. I've had a blast. Absolutely. I hope people are
Starting point is 00:00:37 finding this helpful. Oh, I think they will find it helpful. We're really good at transitions. Because we've been doing it so long. Yeah, to transition into the next topic, Oh, I think they will find it helpful. We're really good at transitions. Because we've been doing it so long. Yeah. To transition into the next topic. Actually, the first. Batchelder wrote a cool article. This is great. On how to be helpful online.
Starting point is 00:00:56 And this is the advice that he's giving is targeted towards people that are trying to help other people online. So if you're answering a question on Stack Overflow or just even an email question somebody sends you or on Twitter or whatever, these are good advice. Actually, it's a pretty long article and there's a lot of advice there. So I want to highlight a handful of them. One of them is answer the question first. There may be other problems with their code that they're not asking about, and you want to get to the point
Starting point is 00:01:27 of just helping them with their answer all the rest of the problems on their code. Actually, I think that's really good. I've seen that people violate that all of their time. The second point that he brings up is no third rails, and I don't even know where that term came from. That doesn't make any sense to me. But going off
Starting point is 00:01:45 the rails i've heard of that he gives an example of it should be okay for someone to ask for help with a program using sockets for example and not have to defend their use of sockets especially if the specific question has nothing to do with sockets and he says things like it's not sockets it might be pickle or threads or globals or a singleton or something you might have really strong opinions about some design pattern or some some code that they're using or different libraries that's not really what they're asking about you know don't attack them for their design choices just maybe answer the question instead no dog piling i think that self-explanatory.
Starting point is 00:02:26 Once somebody's already answered a question, you don't have to answer it. Slightly different. If you're very different and you think you're adding to the conversation, of course, speak up. Meet their level. This is a difficult one.
Starting point is 00:02:39 Try to determine what they know and give them a reasonable next step, not the ultimate solution. A suboptimal solution they understand is better than a gold standard they can't make use of. That makes a lot of sense because, you know, I think also leads to one of the other ones is your gold standard is encased in your context and your use case and so on. It's like the, you're not Facebook, you're not Google, you're not LinkedIn, probably. You might not need their gold-plated solution that's perfect
Starting point is 00:03:11 for that situation. Yeah. And also odds are, if you're answering questions, you're a more advanced developer than the person asking, at least in that field. So be gentle. The last one I want to highlight is use more words. IRC and Twitter and other online mediums encourage short responses, but short responses are exactly the kind of thing that can be easily misinterpreted. So use more words, especially encouraging optimistic words. I think this, and, you know, also, there's a lot of stuff people leave out, but they would say in person, they would say, oh, it's cool that you're trying this problem.
Starting point is 00:03:55 Let's look at it this other way. And let me know if you have any other questions, but they don't put that stuff in text. And so I think it is important to use more words and, and be more encouraging online. And there's a whole bunch of other stuff like humility and understanding your motivations and their motivations and trying to build a community. So great advice from Ned. I encourage the next time that you read a question and your mouth drops open and your eyes stare in shock, maybe read this article before answering. Yeah, it's a nice article and good advice. Thanks, Ned. I don't know how to transition to magic, man. Magic is awesome.
Starting point is 00:04:29 You know what else is awesome? Black is pretty awesome, right? Yeah, definitely. You know what is not awesome? Crappy code written in a Jupyter notebook that has no proper editor support. I don't need black that much because I use PyCharm
Starting point is 00:04:44 and I can hit Command-Alt- L and it formats it basically like Blackwood or in VS Code, I hit command shift P and type format document and it formats it basically like Blackwood. But in notebooks, it's just stuck there and it's like permanent icky form. And it's like, well, how I want to make this nicer, but I don't want to take the effort of like developing it nicely i want the tool to just fix it for me right and black is really great for that black super popular but jupiter doesn't have black but magic can add black to your jupiter notebook so there's a cool package called black cell magic. And so with black cell magic, you can load this. It's an extension for Jupiter notebooks.
Starting point is 00:05:28 You just say percent load extension, black cell magic once. And then on any cell that you want to reformat, you just say percent percent black and rerun the cell. And then it formats it. Nice. Nice. Yeah.
Starting point is 00:05:41 And so actually you type that command at the top of the cell, you rerun it, and then it takes that away so it doesn't stay there, basically. Yeah, so anyway, you run it once, and you can even give little command line arguments to the formatter. When you put that special magic command, the percent percent,
Starting point is 00:05:59 I think those are called magic commands in Jupyter. So percent percent black dash L79 for changing the line with the 79 characters instead of 80 by default, or there's, you can pass stuff off to black that way. This is cool. I like it.
Starting point is 00:06:13 Yeah. Yeah. And if you want to know if you like it and it's for you, you go to the website, go to the link I provided and it has a cool animated GIF and you can see right away. Oh, that's cool.
Starting point is 00:06:22 I want that. Or no, that looks weird. I don't want that. Yeah. I was watching that while you were talking. Yeah. that's cool i want that or no that looks weird i don't want that yeah i was watching that while you were talking yeah it's cool right so it just it's always a problem like i need to format my jupiter notebook why why is this not built in well now it's kind of sort of plug-inable not part of the story but can we go back to the whole command alt l thing yeah that's in pyarm. It reformats your code or something. It does.
Starting point is 00:06:46 Yeah. Okay. I'll check that out. It's pretty sweet. That only works on Mac and it depends on which bindings, you know, there's like multiple keyboard bindings. So maybe in the Vim one,
Starting point is 00:06:54 there's like a different one, but if you go and you go find the menu command for like reformat document, it'll show you what the hockey is. And you can do better than that. You can actually right click on the project project and say reformat the project, and it'll traverse down into all the files, and it'll reformat everything. So that's it.
Starting point is 00:07:14 I don't know of a hotkey for that, but you can right-click and say reformat this tree of stuff. Yeah, but if I'm doing a tree of stuff, I'll probably use black for that. Yeah, exactly. Yeah, I never use that. But generally, Command-Alt-L or Control-Alt-L probably stuff i'll probably use black yeah exactly uh yeah i never use that but generally uh command alt l or control alt l probably on windows or linux will do it but okay black cell magic will
Starting point is 00:07:32 add it to jupiter now what's super annoying is you got to type that command every time on a cell and it does it one cell at a time so if if you've got a hundred cells, you got a lot of percent percent black you're typing. There is a guy named Tobin Jones who wrote a NPM pat package that will use this over top of it and reformat all of them. And I linked to the repo, but then when I go to it, it looks like it's archived. So I have no idea whether it even works still or anything.
Starting point is 00:08:03 I haven't tried that one. So people can check that out but it would be nice if this was like leveled up to apply at least to a notebook even if you run it on demand yeah definitely would be cool to be able to blackify a notebook yeah but nonetheless this is better than what it was before so it's pretty good do you know what else is really good? What's that? Learning awesome Python from Talk Python Training. That is pretty awesome. Yeah. So this episode is brought to you by us again. And if you're in the market to learn Python, we've got a ton of courses. We're coming up on 200 hours of highly edited courses. So that's a ton of content. And we have a special enterprise plan. So if you're looking for team training and team events that are online digital, just shoot me a message and I'll get you info about that. And PyTest. Yeah, definitely. If you are considering PyTest or considering
Starting point is 00:08:58 testing your code, please do test that. And I would like to actually highlight, I brought up, somebody made a nice comment today. I wanted to bring it up. Ken Ewins Clark, this came out a couple days ago, says he picked up my book, Python Testing with PyTest, and started reading it. He was excited. And just one hour later, he posted another comment and said, I've just finished the first chapter and I can see I've barely scratched the surface. So I'm already learning something new in one chapter.
Starting point is 00:09:28 So that's cool. Yeah, that's really cool. Maybe help people test smarter, not harder. Yeah, well, actually, that is the goal of the book. But I also wanted to highlight an article by Luke Plant called Test Smarter, Not Harder. And this is not like a huge article. It's some nice opinionated testing articles.
Starting point is 00:09:51 Good opinions there. There's a lot of great advice, but I wanted to pull out a couple of his suggestions because I don't think that they're talked about much. The first suggestion that Luke has or the first one I'm highlighting is write your test code with the functions or methods or classes that you wish existed, not the ones you've been given.
Starting point is 00:10:11 So if an API you want to use doesn't exist yet, you just use it anyway, but then you have to make it exist. So this is actually huge advice, I think. And people don't really, I think they think about it while they're coding, that you try to write the code you want, the API you want, and then make it if it isn't there. But forget to do it while testing. And while testing is even more beneficial, I think, because you've got to be able to read your test code really fast and understand it quickly. The other thing I want to highlight with that is,
Starting point is 00:10:43 if you are responsible for the API or the API that you're testing against is something you control, then pay attention to those tendencies to say, I really wish I had an easier API because that might tell you that maybe that new API should exist and maybe you should add it to your interface. Yeah, I think this is one of the really big values of testing is that it lets you step back from the code you're writing and look at the API or the classes or library or whatever you're building. Look at that from the outside and go, does that make sense? Is that the best way I want to use it? It's sort of your first chance to put it into practice as a consumer
Starting point is 00:11:20 rather than a creator of it. So if you don't, if you're not the person in control of the API and you're just using a different API, you can write a wrapper around that to just highlight the thing that's important for the test and not have to pass in a bunch of stuff that doesn't matter to the test, but you have to pass it anyway. I think those are great suggestions.
Starting point is 00:11:41 The next suggestion is only write necessary tests, specifically tests whose estimated value is greater than their estimated cost. This is a judgment call, of course, but it does mean that at least some of the time you should be saying this test isn't worth it. This is a controversial sort of opinion, but I go by this. And if you have trouble convincing the people that you have to convince to skip a test, you can just say, I'm prioritizing my tests and that one's lower on the priority. Maybe we can get to it later. The flip side of this, this is good advice. The flip side is that I think is not initially thought of by a lot of folks is you have to maintain your tests as your code changes. I mean, if you've got a static API and it's just fixed and it's on PyPI, it's fine.
Starting point is 00:12:29 But if this is an application you're building, you might dramatically change the way things work. And when you do that, you might have to rewrite your test to correspond with that, to recreate objects in some new way or whatever. And the more maintenance burden that your tests carry, the less you're going to like writing tests and the less you're going to keep them running. And so it's not just,
Starting point is 00:12:51 is it worth the value of creating the test? It's worth the value of creating and living with that test. Yeah, test code has the same maintenance cost or more maintenance cost than production code. Also, different parts of your workflow. So early on in a project, you're really learning how to do the problem
Starting point is 00:13:11 and you're learning about the code. So write tests that help you with that learning. Don't write tests that solidify the API so it's hard to change. That's not right. Yeah, write the ones that help you learn about your code while you're putting it together. Very nice.
Starting point is 00:13:31 So this podcast is pretty awesome. And for episode 200, I wanted to get something good, a package that's good to talk about. It might be the greatest package of all time. Really? Well, it's self-proclaimed, so a bit of a grain of salt. It sounds really simple. It has a crazy name and it actually is really quite useful. So this next one is called US, as in the United States, the greatest package in the world. That's literally the name of it. So this goes to us. Yeah, so Jerry Carbaugh reached out to us and said,
Starting point is 00:13:57 hey, I created this package. I don't know if you think it's useful or not. I'm like, oh, okay, it's kind of interesting. It's a Python package on PyPI for working with states. States, zip codes, those types of things in the United States, right? Okay. It seems like this could be motivation for things like the EU or, you know, some other place where you want to understand the geography of it. But this is really quite involved.
Starting point is 00:14:28 So I envision like, okay, well, maybe it's got like a list of the states and it's got the abbreviation or something. It's got that. It's got all the territories. It has the postal abbreviations. It has associated press style abbreviations, which I don't really know. It has BIPs codes. I have no idea what BIPs codes are, but they're like lookup codes, different kinds of lookups you can do.
Starting point is 00:14:44 The capitals, the year of statehood the time zones you can even do phonetic name lookup so like if you can't spell mississippi but you can make mississippi sounds with letters you could put that in there and it'll go and find it so like it basically do like lookups on misspellings but if you get it like sounding right it can still find it so maybe you accept typed input or some text field that says the state, but then you can do a lookup on that to get a more canonical representation. Whether the state is contiguous,
Starting point is 00:15:14 like Oregon, all one thing stuck together, or a very nice place like Hawaii that's broken into a bunch of islands, whether it's continental or not, similar difference there. That's pretty cool. If you want the geographic boundaries of them for like geospatial work it comes with urls to shape files that come out of the u.s census at least they're accurate up to 2010 okay well also one of the flags is obsolete i was wondering if there's obsolete states there are obsolete states
Starting point is 00:15:43 yeah so i think more territories are obsolete i don't think there's obsolete states. There are obsolete states. Yeah. So I think more territories are obsolete. I don't think there's states that are obsolete, but there's territories that are, for example, like the Philippines, I think used to be a US territory, but it's no longer something like that. There's a few examples in the docs. Oh, okay. Cool. Yeah.
Starting point is 00:15:59 And they also have an environment variable to indicate whether Washington, D.C. becomes a state. You can set a flag that will trigger that to show up. So it's future-proof a little bit. Okay. And it has a CLI. So you can type states space MD for Maryland, and you'll get a big, long description of information about it. Well, with the prefix of the great state of... Yeah, it's interesting.
Starting point is 00:16:23 So is this more than you expected out of it like when i thought i thought it would just be like a list of states and stuff but like all this look up all this information this is pretty awesome actually it's pretty in-depth well no it's pretty cool i just didn't i don't know if i'd say it's the greatest package in the world oh all right well there's always a pr you could always a pretty good package with respect to state management in the world. Yeah. Yeah, okay. Now, actually, if you work with states, this seems super useful, regardless of whether
Starting point is 00:16:51 you agree with the name. Yeah. I've got kids that are at home right now. One that's started school, but started school online. So it's sort of an anticlimactic beginning to school. And we still have like a lot of time that they're devoting. I'm glad they're doing this. They're allowing teachers some time during the week to prepare for all of this,
Starting point is 00:17:18 which means they've got kids have more free time than they had before. So one of the things I was looking for was good learning, software coding related learning activities for kids that have some spare time, especially early on in the school year. I can't remember who suggested this. Somebody on Twitter suggested this, but there's a video series that's part of TED-Ed that's called Think Like a Coder. The title says it's a 10 episode series that will challenge viewers with programming puzzles as the main character, a girl and her robot companion, attempt to save the world that has been plunged into turmoil. So I was trying to evaluate whether or not to highlight this on the show,
Starting point is 00:17:59 and I got like four episodes in just this morning. Although it says it's a 10 episode series, but I only count nine. It's zero. It's you start counting. It's a zero base. So it's off by one for programmers. I don't know.
Starting point is 00:18:13 It doesn't really teach like, I haven't got at least the first four episodes. It doesn't teach them like actual coding, but it talks about the concepts. And that's what I really like about it. It's an interesting story. The animation is pretty good, but it'll introduce words and terms like loops for loops until loops while loops conditionals variables path logic permutations how to do searches tables and recursion and even
Starting point is 00:18:39 some big o notation and some other things but these are like terms that in software and in programming, we use all the time and just assume everybody knows what we're talking about. One of the things I really like about this is just defining and using those terms in an entertaining story so that when you really do start learning how to code, it's not going to be surprised. Highlight with that, I'm also reading to my daughter a book that I picked up called Girls Who Code, Learn to Code and Change the World. And it's a lot of inspiration. There's actually a Girls Who Code project that does teaching and stuff, but I don't know what they're doing right now during COVID. But the book is great, and it's not any language-specific stuff.
Starting point is 00:19:25 I think there is some Python in there, but that's not really the focus of it. The focus really is teaching a lot of the concepts and just getting people excited about it. So I wanted to highlight these two. That's one of the biggest challenges. It's getting people feeling like this is interesting and this is for me and I should pay attention to it.
Starting point is 00:19:43 Yeah. That's cool. Also, I want to throw a shout out to codecombat.com that's another really nice place that sort of has some of these ideas go through and do like a little dungeon exploration and solve solve problems i think it would be a good follow-on to this series like you've got the ideas from the series and then you can go right like super editor supported Python code like in a little game world so that'd be fun yeah yeah we'll link
Starting point is 00:20:09 to all that in the show notes absolutely so this next one is interesting I ran across this just a few days ago and I thought oh I definitely want to talk about this because how many programmers out there have this idea of I've been building this software for other people for other companies and I just want to there have this idea of, I've been building this software for other people, for other companies, and I have this idea and it doesn't exist and I want to build it and put it out there into the world.
Starting point is 00:20:32 Surely almost every programmer has had this idea in some form or other, right? Yeah. Yeah. So there's this project that is a pretty new project that goes along this path and it's called keep the score so keep the score is like online software for scorekeeping basically if you've got like a soccer tournament rock climbing competition whatever like those things probably don't exist anymore but when we could be around other humans and when we can again this is going to make a lot of sense you could have like a a little online scoreboard that the parents could pull up and keep track of or whatever.
Starting point is 00:21:09 Something like this, right? That's basically what this app is. It's a Python Flask app. And they wrote a blog post called The Cost of Running a Python Web App with 55,000 Monthly Users. So this explores like the infrastructure and how much did it cost to actually put it together, how they're doing it, and so on. So I thought it might be fun to just kind of talk through that a little bit and then do maybe a little comparison over to some of the TalkPython stuff. All right.
Starting point is 00:21:33 Yeah, so I'm leaking over the thing. Their site's pretty cool. It's hosted on DigitalOcean, as is all of our stuff, Python Bytes, TalkPython, and whatnot. So that's a really fair comparison that I'll make. And they're using DigitalOcean and whatnot. So that's a really fair comparison that I'll make. And they're using DigitalOcean and Firebase. Currently have around 55,000 unique visitors and they have their servers and database over on DigitalOcean. And I think they might be using Postgres as a service on DigitalOcean rather than hosting their own database server from what I can tell. They also have Amazon web services. Yeah. So for the numbers, DigitalOcean has cost them about $95
Starting point is 00:22:06 a month. They have some AWS Metabase stuff running over there at $60 a month for reporting and whatnot. They have Google Cloud for a whopping $1.32 at Firebase. DNS hosting at $5. Discuss
Starting point is 00:22:22 $10. They said, of course, you can have a free one but they put ads there and they don't like that so ten dollars they're paying for that and they said well okay that's 171 dollars a month is this worthwhile obviously if you were rodent schwartz or you were talk python training like it would be obviously $171, no big deal. But this guy points out, I'm an indie developer. I have no revenue yet.
Starting point is 00:22:52 I'm just trying to get this thing off the ground, and I'm paying $171 a month. That's a lot of money for just trying to do something nice for everybody. Yeah, I agree. It's mostly free, and they're trying to figure out the monetization. I think it's a cool project. I actually hope they're successful, and it's cool they're building it with to figure out the monetization and you know i i think it's a cool project i actually hope they're successful and it's cool they're building with python but i don't know it's an interesting trade-off i feel like so many people i don't want this to
Starting point is 00:23:12 sound at all critical of this guy like what he's doing is working for him and that's that's great but i feel like a lot of people just in general not necessarily this example they envision a world where like things are so much bigger and more powerful and more awesome. There's more users and it's more awesome. And they got to be ready for that because when they land on Hacker News and all the people come, they've got to be ready for 50X traffic and stuff like that.
Starting point is 00:23:40 And I don't necessarily think that that's how it goes. If you're in the cloud, something like that happens, push't necessarily think that that's how it goes or you know if you're in the cloud something like that happens push the make it bigger button and then it goes like you don't have to do that beforehand and actually one of the things they said they they ran into is they started out with a smaller server and they said oh we want to make sure we have a bigger server just in case and they upscaled it and part of that upscaling like changes the i think it was probably the file system got larger the disk got larger and once that happens you can't downscale it again you're like stuck without unless you recreate it from scratch you can't downscale it again
Starting point is 00:24:16 and so they have two servers they're like deploying to one and while they're deploying to one they take the floating the elastic ip and they switch it over to another one that keeps it running and then they deploy to the other one and it switches it over to the like there's like this back and forth swap going on and that's actually how i do it at talk python on training site and stuff like that as well having like two servers that said this feels really high to me i'll give you you some stats on TalkPython. Just TalkPython.fm, the website for the podcast, not the training site, not Python Bytes. The reason I chose TalkPython is it's very similar
Starting point is 00:24:54 to the numbers that this guy is using on the same infrastructure. So TalkPython gets about 40,000 monthly visitors. It's super hard to talk about unique monthly visitors because so many developers, especially in the developer space, because so many people have ad blocking turned on, which is how you, you know,
Starting point is 00:25:12 like the third-party cookies from apps like Clicky or whatever say you get this many visitors and like 50% of that's blocked or something, right? So anyway, you got to kind of estimate like, well, how much is blocked? Is it 30% or who knows? So anyway, it's around similar numbers, a little bit smaller in terms of visitors, but the podcast clients, oh my goodness.
Starting point is 00:25:34 The podcast clients are crazy. They're just pounding the server like all the time asking for the RSS feed. So we get about 3 million requests for the RSS feed monthly. That goes through, it goes through Python, it does some database stuff, it talks over the database and it gives back an answer. I could cache that as a file, but then there would be like latency and inconsistent.
Starting point is 00:25:55 There's no need to not have that happen, right? But that does, right? So that comes through and that's about 120K requests. So that's 320 gigs of traffic and 3 million requests just to answer the question, can I go download the file, which is much bigger weekly. You know what I mean? So that's a ton of traffic. And the server is backing that.
Starting point is 00:26:16 I have two servers because I do this flip as well. So there's zero downtime most of the time. One of them is a $5 server. And because I wanted to splurge, the main one is $10 because, hey, this is my whole business. It's worth five extra dollars a month, but it could easily handle it on five bucks. So for example, I have it pulled up right now and it's running at like 8% CP usage, 6%. It kind of varies right now. If it was on the $5 one, it would be like 12%.
Starting point is 00:26:45 It would still be fine. And then there's also a dedicated MongoDB server that handles everything. But that's like $10. Total cost, $25. Okay. Well, $25 is... Okay, devil's advocate here. $25 is way better than $171.
Starting point is 00:26:59 But even $25... Yeah, I could do it at $20 if I just went down to the $5 server, which I could, but I don't really need to. But even at $20 a month, that's what, $240 a year for trying to do something nice and free for everybody? Yeah, I know. What's really lucky is that I don't have to pay for the bandwidth
Starting point is 00:27:17 for the stuff going through DigitalOcean, because that would be like another $1,000 a month at least. But that's included, so it's fine. I feel like you could turn stuff down a lot. Like, for example, I think he's using Postgres as a service, which is probably, I don't know, there's probably 50 bucks a month. You could probably put that on a $5 server and just manage Postgres yourself. Is that worthwhile? I don't know. How much of a pain is that to manage yourself versus
Starting point is 00:27:44 how do you do backups and all that kind of stuff but in the really early stages i think you if you're worried that extra hundred dollars a month is a big deal you know maybe you do it that way also though by the way my aws bill is over a thousand dollars last month so but that's just video delivery that's a different story that's just bandwidth that's and that's because of their training yeah yeah yeah okay so i i could do it cheaper i could do it a lot cheaper but it would be less good for people and for that i'm trying to pick the best possible option so that's how that goes but anyway i think it's interesting to sort of think about like what does it cost and your point about if i'm doing something nice for everyone, it should cost less. Yeah.
Starting point is 00:28:27 Well, I mean, motivation doesn't really get into it, but it's a very real thing. It's a barrier to entry for people that maybe they had to scrape together just to get the laptop in the first place to start coding. Yeah, and if you're not in like a western democratic place where currency is pretty valuable or the pay rate is pretty high all of a sudden 175 could be 25 of your monthly income which that's a huge number right yeah yeah so it could definitely vary depending on where you're located yeah anyway pretty pretty cool i think it's worth looking
Starting point is 00:29:02 at and and digging into and i wish them the best of luck with this project because it seems cool and it's built Python. Finally, if you want to hear like a deep dive into all this stuff that I was talking about, Dan Bader and I had a long chat about the infrastructure behind TalkPython and some behind real Python over on TalkPython 215. I'll link to that as well.
Starting point is 00:29:21 That's pretty serious, man. We should do something funny. Yes. Tell me a joke. Okay. So somebody shared this with us on Twitter. And it originally Netlify posted it. It's a conversation between two people.
Starting point is 00:29:32 Oh, no, we lost the hackers. Where did they go? I don't know. They just ran somewhere. They just ran somewhere. That's so awesome because I didn't get that joke reading it. But when you say it, like, oh, yeah, perfect. Well, I'm very concerned about making sure that everybody has a happy work environment and that they're safe.
Starting point is 00:29:53 And I've had to fill out some contracts and stuff. It's so ridiculous, man. I've had to fill out like vendor stuff for podcast advertising. And they make me go through their stupid vendor onboarding thing at some of these big companies and i've got to answer like the general vendor information so what is your information like what is your location what is your bank account information so we can pay you what is your osha health policy is there a chance that somebody is like, are there dangerous ladders that people could climb? Will it be forklifts? I'm like, dude, this is podcast advertising. There's no ladders and there's definitely no forklifts. Why are you sending me this huge 50 page form? I got to fill
Starting point is 00:30:36 out like two pages apply to me. Anyway, let's take this and turn it into the programming joke. So, you know, you've seen those like number of days since serious injury at factory seven. We're doing great. Nobody hurt this week. So how about this for our programming sign? Number of days since I've encountered an array index error. Negative one. I love this joke.
Starting point is 00:31:02 It's a good joke, right? Yeah. Negative one. So that's really big because you probably overflow. Well, you don't know how big though. Is it a short and unsigned? Is it like a,
Starting point is 00:31:14 if it's a short, it's like negative 32,000. But if it's a long, that's a really huge number. It's like 4.2 billion, 9 billion, whatever the overflow rap is there. Uh, they probably just allocated a bite for it. So it's, Oh yeah. So it's, yeah, it's like 4.2 billion 9 billion whatever the overflow wrap is there uh they probably just allocated a bite for it so it's oh yeah so it's yeah it's like 255 or whatever yeah yeah less
Starting point is 00:31:32 than a year awesome all right well thanks brian congratulations on 200 man thank you oh we overflowed into we're into the 200s now. Congratulations. Oh, wait. Let's celebrate on 256. Yes, we will. That's going to be the full cycle. Yeah. Yeah, awesome.
Starting point is 00:31:52 All right, well, thanks again. Thank you. Bye. Thank you for listening to Python Bytes. Follow the show on Twitter at Python Bytes. 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,
Starting point is 00:32:07 just visit pythonbytes.fm and send it our way. We're always on the lookout for sharing something cool. This is Brian Ocken, and on behalf of myself and Michael Kennedy, thank you for listening and sharing this podcast with your friends and colleagues.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.