Python Bytes - #183 Need a beautiful database editor? Look to the Bees!

Episode Date: May 29, 2020

Topics covered in this episode: fastpages: An easy to use blogging platform, with enhanced support for Jupyter Notebooks. BeeKeeper Studio Open Source SQL Editor and Database Manager 2nd Annual Pyt...hon Web Conference Mimesis - Fake Data Generator Schemathesis Finding secrets by decompiling Python bytecode in public repositories Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/183

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 183, recorded May 19th, 2020. I'm Michael Kennedy. And I'm Brian Ocken. And Brian, we have a special guest, Calvin Hendricks-Parker. Welcome, Calvin. Hey, guys. How are you doing? Doing super well.
Starting point is 00:00:18 Great to have you here. Yeah. Awesome. Well, I'm excited to be on. This is my first time being on one of your podcasts. So I'm all giddy with the excitement. I'm very giddy as well. It's great to have you here. It's always nice to have a third person with a fresh perspective because Brian and I, we've given our perspective 183 times and people are probably able to guess the most part of what we're going to say, but not the jokes. The jokes are always original. Okay. Now, before we move on, I do want to say this episode is
Starting point is 00:00:43 brought to you by DigitalOcean. Check them out at pythonby.fm slash digitalocean. Get $100 credit for new users. Tell you more about that later. Brian, why don't you kick us off with something completely from 2001, like blogging. Like blogging. Yeah, so one of the things that we thought maybe there weren't enough ways to blog right now. There's actually tons of ways to blog. But this is kind of a neat thing.
Starting point is 00:01:04 This is called Fast Pages. and it comes from Fast.ai and it's a blogging platform that they say it's an easy to use blogging platform with enhanced support for Jupyter notebooks. It's kind of put together. It's a, you know, where you write in Jupyter notebooks and then you can also write markdown files. And for some reason you can also write like Word doc files. But why would you do that? I blog in Word, baby. Weird. Has support for it anyway.
Starting point is 00:01:33 And you can, for your pages and posts and whatever, and push it up to GitHub. It uses GitHub app actions to publish everything. I think it uses Jekyll on the back end to publish to GitHub Pages. But it's all set up so that it's really fast to start. You can do things like alter interactive visualizations. And you can have code cells that you can hide and show or close by default if you want to. You can even do metadata like the title and summary. They go in special markdown
Starting point is 00:02:05 cells, but you can even embed Twitter cards and YouTube videos and tag support and all that jazz. It actually looks pretty slick to tell you the truth. If you want to publish something like a blog, but you're going to use Jupyter notebooks on a daily basis anyway, this might be a good thing to check out. Yeah. Jupyter is nice, but it's not quite all the way there, right? It's still like the code is still shown on all the cells and they're not like collapsed like this this is a really nice presentation format i think and the fact that you're not really running on your own platform right like there's so many things we're like oh i'm gonna write my own blog and then now i have
Starting point is 00:02:40 to run servers and patches and like wait a minute why am i patching servers like what have i gotten myself into whereas this just runs on github pages that's pretty cool i like the altair interactive visualizations right because it's one thing to take a screenshot or static image and put it up there but if you've got live code and live interactions that's pretty awesome actually so yeah this kind of appeals to me i'm not switching because i just i don't have the energy for one more thing that i put in a lot of focus on like a blog i do blog but not that much but nonetheless this looks really cool if you're especially if you're in the jupiter world but now you got to maintain your code on your blog page to make sure it always runs that's right that's right oh you
Starting point is 00:03:18 write tests for it it'll be fine yeah there we go okay yeah exactly yeah no i looked at this and i think this is a nice fresh take on like interactive code demonstrations in your blog and to me it's way better than just static code there with static pictures yeah and i definitely like i said i think it's a the best for for people that are spending their day in jupiter notebooks anyway then it's going to be a natural a natural place for them to be to to write blog with it. Yeah, absolutely. Yeah. Now, this next one that I want to cover, I'd not heard of. And I discovered it from Mahmoud Hashemi, who didn't realize that he had shared it with me. But he had like favorited it on GitHub.
Starting point is 00:03:57 I'm like, whoa, wait, that looks cool. What, you know, just that little activity stream of people you follow on GitHub or whatever's happening. So one of the things that I find lacking a lot of times is how you work with databases as sort of an admin side of things, right? Like if you're using Django, there's some kind of admin back in, you can sort of point at it. But if you're using like, you know, just SQLite and you don't have some web app to work with it,
Starting point is 00:04:21 like how do you work with it? I know there's a command line for working with it. You're right, DDL, data definition or description language, whatever that is. I don't want to do that. That doesn't sound fun at all to me. So what I want is a nice visual thing. There's like a history of my most common searches, things like that. So there's this thing called beekeeper studio. Have you guys heard of this? I've not. No, no, I hadn't either. But if you go to their website, it is super polished. It certainly passes the Michael and Brian test of many screenshots and little animations because, hey, it's a UI thing. And what it is, is it's a really polished free and open source
Starting point is 00:04:55 SQL editor and database manager. It checks so many boxes. It talks to MySQL, Postgres, SQLite, Microsoft SQL Server. It runs on all the things, Windows, Linux, macOS. It has a bunch of cool features like it has built-in support for connecting to your database server over SSH tunnels, which is really nice because you typically don't want to have your database out in DigitalOcean ocean or wherever listen on the internet that's just asking to be in the headlines of you know company x has lost all their data and is now you know you now get everyone gets free credit monitoring for a year thanks right you don't want that so you can have like the database locked down but still ssh over to the server and then just tunnel but this
Starting point is 00:05:42 has like built-in stuff for that cool tab interface. It has auto complete for your SQL queries, which is really nice. So like your table schema. So you know, you could pull a table name dot and it'll drop down all the columns in like your where clauses or your select clause, which I think is super nice. It has kind of an Excel view, where you can just pull up the data in the table and like filter it and sort it by clicking on the columns. So you don't have to be super good at knowing that. By default, it has a dark theme. That's pretty cool. Yeah.
Starting point is 00:06:12 So, you know, it's for serious programmers. Yeah. It's legit, baby. It is totally legit because it's default. You have a dark theme for sure. That's right. That's right. So there's just a bunch of cool things.
Starting point is 00:06:22 You can save your most common queries and there's like a favorites queries section on the left that you can just pull up your common queries and like rerun them. If you've got to do a report or something, you always have to ask about, like you can run that, which I don't know, this seems like a really nice tool. And I'm telling you, it is worth every penny you pay for it. Is it free? It's free. Yeah, it's free and open source. I installed it and I connected it to some little SQLite toy things, projects from my courses that i was working on and it came out great so how do we keep them in business sounds like we need to keep them in business somehow i know we don't
Starting point is 00:06:53 want this to go away but yeah it's nice over on github they've got quite a few stars 1.4 000 so it's it's pretty new i'm not sure how long they've been around but i'm excited to see them here it's great yeah nice well done people all right Calvin, what do you got for your first item here? So my first item on the docket is the second annual Python web conference, which I'm actually one of the co organizers of this web conference. So I'm excited to come on here and tell you all about this amazing event that's coming up. We did this last year, and we thought it was a pretty good success. And so we wanted to actually continue that tradition. And it seemed to fall perfectly within all these
Starting point is 00:07:29 conferences converting to virtual conferences. We are a virtual first conference. This was not a planned change to virtual. We're really doing this for real as a virtual conference. Just to be clear, you guys did this last year when it was not required to be virtual, right? When it was not hip and cool to be a virtual remote conference. So at least a year ahead of your time. We are. I'd like to think I'm a trailblazer when it comes to some of these things, but I'm only taking credit for the amazing work done by the people who are certainly behind me doing all the real work. But we're basically putting on what we're calling the most in-depth Python conference for web developers. I don't know if you all have been to PyCon.
Starting point is 00:08:06 There seems to be a lack of web and production level talks going on there these days. Well, it kind of goes back a long ways. And so we felt like this was a gap in the Python ecosystem for folks to come and talk about production use of Python on the web. So we're going to have talks on Django, Flask, Twisted, lots of testing talks. So maybe I'll draw certain folks from this audience in who like testing sql alchemy containers
Starting point is 00:08:31 deployment like tons of stuff like that so it's going to be a bunch of cool web talks and just kind of three tracks so it's actually going to be three days that is june 17th to the 19th so make sure you mark that on your calendar right now I would love if you went and bought a ticket right now but go ahead and mark that on your calendar save the date there'll be a full day of tutorials so there'll be six tutorials three in the morning three in the afternoon two days of talks with three tracks we've got some awesome keynote speakers so Lorena Mesa from the Python's Offer Foundation is going to be one of our keynotes we've got Henik, Russell Keith-McGee who gave a keynote at PyCon two years ago.
Starting point is 00:09:06 2018, yeah, I think so. It depends if you count this one, yeah. Right. So he'll be coming back and hopefully giving some more insights into, I'd love to see what he thinks kind of post-Black Swan era, if you remember his talk from PyCon. Yeah, that was a super good talk, yeah.
Starting point is 00:09:22 It was a super good talk. And that's why I'm really, really excited. He decided to kind of join my merry band and go on an adventure with all of us. We'll have some fireside chats. So during lunch, there's going to be I don't know if you're all familiar with Carl Meyer, but he's he works for Instagram. He's in their infrastructure team. And so he's really available to talking about like best practices. So we'll ask all kinds of deep questions. And actually, I've just enjoyed talking to him to no end about how things actually work in the real world for some of these kinds of things you know not everyone's doing microservices to the hilt like there are people who are running
Starting point is 00:09:52 real things that are just django monoliths and they still work and they're kind of tried and true so there'll be a 40 presentation 40 plus presentations six tutorials fun will be had by all hopefully connections will be made we really work hard at making sure that these kinds of virtual events are maybe overly stimulating so that you've got lots to do and kind of lots to interact with there will be you know kind of virtual cocktail hours afterwards online gaming so we had a mario kart tournament in our last virtual conference and we're going to bring back our board game night. And so actually as part of the conference registration, you'll be sent a pre-swag pack that'll include something for the board game night.
Starting point is 00:10:30 So if you actually want to play one of the games, we're going to give every player, every person who attends what they need. And actually you don't need to have that to play, but we're going to have some specially themed ones made specifically for Python web conference. You point like your webcam at it and everyone sets it up in the initial state
Starting point is 00:10:43 and like keep syncing it. Well, okay. So I'll kind of get a little bit of the cat out of the bag, but we're going to play Skull. Have you ever played Skull? It's a bluffing game. It's a lot of fun. So basically everyone has four coasters. I mean, it looks like the coasters, you know, look kind of like, you know, just a round
Starting point is 00:10:55 circular cardboard coaster. Three of them have flowers typically, and one has a skull on it. So it's a bluffing game to see how many flowers you can acquire before you run into somebody's skull or your own skull. So we're going to do a Python themed version of that with a web slant. So it should be pretty, pretty cool. I'm looking forward to that. That sounds fun.
Starting point is 00:11:12 Yep. So the tickets are $1.99 and $99 for students. Now, as a bonus, there is a perfect for every professional ticket purchased. We're going to donate a ticket to an attendee in a developing country. So we want to be able to get people who couldn't normally even make it to a physical conference at this event. You know, if you're in the middle of Africa or some far off place and you couldn't normally get to a conference like this,
Starting point is 00:11:33 we want to make sure you can attend and actually connect with the Python web community. So I'm pretty excited about that. And then I do have a discount code for the Python Bytes listeners. There will be a 20% discount code if you just use the code PB20 and you guys will get a 20% off discount. Nice. Yeah, this sounds like a fun conference. I really like that you're taking
Starting point is 00:11:52 the digitally native approach to conference because I feel like there's a lot of attempts at this right now and we'll see what sticks, but everyone's trying to reinvent conferences and this feels like a pretty good attempt at it. I've attended a couple recently where they kind of took conference skeuomorphism to an extreme.
Starting point is 00:12:11 Like you kind of VR style walked into an expo hall and kind of clicked to go through a hall, and you were sitting in front of a screen with like Mystery Science Theater 3000 style like characters sitting in front of you. Yeah, yeah, the silhouettes of people in front of you. that's not the way to go then that's not what this is yeah i saw i saw something where they're like oh we'll make it totally real you've got to like go check in with a real person before they'll let you into the virtual conference and stuff like that yeah no no no no no no no yeah
Starting point is 00:12:38 yeah so microsoft build is running right now and they're you know trying to figure out what they're doing there it didn't look super good to me this morning the way the experience was going but you know yeah they're doing it for a week so we'll or three or four days so i don't know maybe that'll be an example as well aws just did their summit and i didn't hear very good things about that as well well it's a big challenge and there's a possibility that i might be speaking at this conference oh that's right i how could i forget we do, if you go look at the speakers page, I'm super excited. I mean, it is a who's who of Python
Starting point is 00:13:10 web community. It just kind of speaks to the volumes of the confidence these people have that we can pull this off, that they're here to speak for this conference. Yeah, very cool. All right, well, I definitely think it's going to be a fun event. People can check it out. Obviously, links in the show notes and the discount code. Now, speaking of web and running stuff in the cloud digital ocean sponsoring
Starting point is 00:13:28 the show very cool place they just launched their virtual private cloud in their new trust platform which makes it easier to run secure code in the cloud with some confidence so vvc it's kind of like a virtual private network but it allows you to create multiple private networks for your whole team. Then you can stick your VMs where they need to go to make them to talk to different things. So I recently set up a whole bunch of complex firewall rules for all of our various servers that need to talk to each other. And it would be really nice to just click them in here,
Starting point is 00:14:00 but I set those up before this existed. Hence, I did it that way. So this is really a nice feature. It can auto generate your private network IP addresses. So you can control them or you can specify how you want them generated. And you can even configure some of the droplets to behave as internet gateways to kind of act as a outbound area or place for those various private clouds. So that's cool. And then their trust platform is like a microsite with all sorts of information about security and running stuff in the cloud.
Starting point is 00:14:29 So check them out at pythonbytes.fm slash digitalocean, $100 credit for new users. And so go out there and build something awesome and make it a little more secure. Yeah. You mean, so I mean, secure like real honest data, no fake data, no fake news, none of that. No fake news. If only that. No fake news.
Starting point is 00:14:45 If only there was a fake news generator. There probably is. So if anybody knows a fake news generator, let us know. It'd be fun. As far as fake goes, we were talking about, I have no idea how to pronounce this. Anybody want to try? It's M-I-M-E-S-I-S.
Starting point is 00:15:00 Mimesis? Mimesis? I've actually used this tool in the past. This is a party game I love to play. You describe an open source project and you see how everyone will pronounce it. Okay. Anyway, maybe Mimesis? Anyway, I don't know.
Starting point is 00:15:14 But it's a fake data generator. And I was reading it thinking, don't we already have fake generators? There are a handful of other fake data generators around. But this one looks pretty cool. It helps generate fake data in a variety of purposes fake data generators around. But this one looks pretty cool. It helps generate fake data in a variety of purposes and variety of languages. It's actually got over 33 locales. So you can get like, you know, Russian names and Spanish names and all sorts of stuff like that. But the localization also goes to things like you can, if you have addresses and food descriptions and people names and things like
Starting point is 00:15:47 that can be localized and that's pretty neat. Different phone numbers as well. So there's a whole bunch of different locales you can do. Supposedly it's super fast. They posted their benchmark of 10,000 full names of Faker versus Memesis. And then they were like 60 times faster, which is pretty cool. The thing I was really impressed with was one of the features is a data generation by schema. So you describe what kind of the shape of some data and the different types of things. and that we're putting in the show notes a description of a structure that has a name and an ID and a version timestamp and owner information like email and creator name, full name, things like that. And then you can just generate from that schema.
Starting point is 00:16:34 You can create a bunch of those. And that's pretty darn neat. I think I could use this really readily. Yeah, we were talking about building web apps and stuff. And one of the things that makes that really hard is you've got all this HTML and these loops in your templates and all that kind of stuff and CSS that's going to describe. If I had data here, this is how it would look. And often you end up with no data or like just a few letters here or there. So having like legitimate looking data is really nice for helping you design your apps.
Starting point is 00:17:06 Or if you're trying to anonymize something for some kind of data science thing, you just want to like, I want to randomly put in something here, but I want it to seem normal, but not be actually tied to the person. This looks really cool. Yeah, especially useful like in Django projects
Starting point is 00:17:21 when you want to have a fixture to load up some personally identifying information ahead of time for the developers. You don't want to have them grab the production data and have that liability sitting on their local disk. Yeah, yeah, exactly. There's interesting different classes that generate things. So there's obviously like a person. Is that what it's called?
Starting point is 00:17:40 Person, human, something like that. Let's see. Yeah, person. So it has things like you might expect like an age and an email and a name but it also has an avatar which is a link to a graphic as an academic degree like whether or not you have a bachelor's degree or master's degree it has like nationality occupation political view all these interesting uh different. And they also take on different locales. There's a science one.
Starting point is 00:18:08 So in the science one, you can have an atomic number, a chemical element, a DNA sequence, an RNA sequence. There's just a bunch of funky different types of data you can generate here. It looks pretty cool. Yeah, I was looking through things like software development things like operating system,
Starting point is 00:18:24 random operating system, random operating system random programming language software license things like that that's pretty cool right like what was it os 32 or what was it called os2 yeah this is a cool cool find and you know i have a another one that's kind of in that same space also with a bit of a web slant called schema thesis so this is cool that so the idea is you've got an api and the api is documented with something like open api 3 or swagger or something like that which is a bunch of http endpoints and then descriptions of the data is exchanged, right? Here's the endpoint. Here's the JSON document or, God forbid, XML document I almost said there. Right?
Starting point is 00:19:13 But here's the thing being exchanged, right? And then you would hope that the actual service actually exchanged data that looked like it described it exchanged, right? So this project basically tests for conformance with the API as you declare it in your own documentation. That's pretty nice. It supports those two formats that I said, Swagger and OpenAPI. And it's built with Hypothesis, Hypothesis JSON schema, and promo, please, PyTest. Yay. So the idea is it reads your application schema, and then using Hypothesis, it will generate test cases yay so the idea is it reads your application schema and then using hypothesis it will generate test cases that ensure your application is compliant with its own schema that's pretty cool yeah and it works in two ways you can write tests with pi test obviously it's
Starting point is 00:19:55 kind of meta but then write tests with pi tests and write code to talk to these things it seems like maybe the predominant way actually to do it is through this command line interface where you can point it at a url at the schema definition the documentation and then the actual endpoints and it'll just go and do all that work which is pretty cool yeah that's neat yeah you can also parallelize it you can pass the number of workers for concurrent test execution also if you're testing something that has an app as in flask or aio http or something like that instead of firing up a thing that goes through the network that goes through the whole serialization layer and hit some running thing it'll actually just load up your app and run it in process right as if you were doing unit testing against your
Starting point is 00:20:46 flask or aio http app so you can give it directly just the basically the package or the module and it'll just run it like without the web infrastructure in between yeah so that probably speeds things up quite a bit yeah yeah at least you don't have to have a server running somewhere so it's probably also easier for ci cd because there's not a second thing to be running to then talk to. You just run it straight out of the, out of thin air. And then also Calvin, you're talking about being keen on Docker. This CLI also can run as a Docker image. So there's like no setup other than just Docker run this. Live in the dream. Live in the dream, baby. It's always going to work as long as you have Docker. Anyway anyway that looks like a pretty cool pretty
Starting point is 00:21:25 cool thing and there's a little example in here it's not super clear to me like how how to put specific use cases into the code test so that's why i say i think the cli is kind of the way to go like there's ways to write code and it uses a primerization through hypothesis but it's it's a little bit generic i guess on what you would assert for. Anyway, if you've got APIs and they're already documented with Swagger or OpenAPI, this seems like a cool thing to point at it just to make sure that it's hanging together. Yeah, very nice. I wanted to give this a try sometime. Yeah, more testing is always better.
Starting point is 00:21:59 Especially if it's one line. Yeah. I don't know how to work to write that. All right, Gavin, what's this last one here all right so the last one up here there has been a lot of people combing public code repositories looking for secrets and a lot of the tools have been disregarding some commonplace secrets might be be stuffed away so right so they look at like json files they look at dot p i dot j s like it's embedded in code or maybe a.ini.
Starting point is 00:22:25 Yeah, so they're not looking for maybe byte compiled code. So actually, there's a blog post here by Jesse Lee. And I really enjoyed it because it's finding secrets by decompiling Python bytecode in public repositories. I mean, it's really common for maybe people new to Python not to realize that those PYC files could contain possibly sensitive information. So a lot of common patterns might be put your secrets into files like settings.py or config.py or secrets.py and then get ignore the py file. But you could be accidentally
Starting point is 00:22:57 still inserting the pyc file, which is the byte compiled version of that file. All right, like dunderpy cache yes settings dot pyc is probably something you could look for huh right so you should probably leverage whatever tools you're using to make sure you get a a stock like python get ignore file so if you're using like pycharm and you have the get ignore module installed like it'll tell you like do you want to generate the stock get ignores for your type of project? And it'll put a bunch of stuff like right in there for you. You should do that for sure. But if you don't, you might actually be vulnerable to having some of your PYC files contain API
Starting point is 00:23:33 keys or using passwords because that information gets compiled into the bytecode. What I liked about this post was they actually had a little crash course on deconstructing Python bytecode and like understanding what cached source means so it wasn't just like hey don't do this thing that's pretty uncool it really kind of gave you a quick little lesson in like what a pyc file is or what's in that pycache directory you know so this post also comes with another game you can play which is kind of cool a small like capture the flag so there's a little lab in there for you to actually try it out and kind of play with it so if you're totally into like security stuff and want to like see how this stuff actually works under the covers like the
Starting point is 00:24:07 author like went just kind of above and beyond and gave you like a capture the flag game to actually go explore those pyc files and cache files that are up on on github which or any other public repository which is really cool i see that's cool so the idea is that here's some that have this problem your job is to go uncover them or something like that yeah go on yeah exactly here's some that have this problem. Your job is to go uncover them or something like that. Yeah, exactly. Here's a couple of sample repositories. Go uncover this. So kind of the action items from this post specifically was like,
Starting point is 00:24:31 if you do have PYC files containing any secrets, you need to make sure you delete them and then go revoke and rotate those secrets. The other thing was using a standard gitignore for checking, preventing that to happen altogether. And ultimately, I think the best way to handle... I've been preaching kind of a lot to folks who are around me recently about how to store secrets you know using tools like vault or one password depending on what your situations are making it easy to get those secrets into say environment variables for me is the way to go don't even have those secrets sitting on your file system in any form whatsoever so i typically
Starting point is 00:25:02 have a little shell script that uses the command line tool for like one password or uses vault with a token to actually grab the secrets in real time, stuff them into an environment variable, either shove them into a container or as I launch, I grab this out of my environment and don't even take the risk of putting that stuff on my file system.
Starting point is 00:25:17 Oh, that's a clever idea. You know, because so often it's kind of a chicken and egg. It's like, great, so you don't store it in GitHub. So now it's over in this other text file right it's like how much better is that honestly i mean i know it's better but it's it's still like not that awesome right uh so having it encrypted is nice right one password and last pass and bitkeeper our key pass all have command line tools that you can script to get data out of them one password will give you back like j and with JQ, you can basically filter it out and grab the thing and put it into
Starting point is 00:25:49 an environment variable on the fly without it ever touching your file system, which is really nice. Okay, that's interesting. I didn't know about that. I'm a big fan of one password, but I didn't know it did that. Oh, so go check out go grab the OP one password tool. It's got full access, you can just basically grab secrets. Yeah, you can edit secrets. I'm a huge fan of one password tool. It's got full access, you can just basically grab secrets, you can edit secrets, I'm a huge fan of one password as well. And LastPass was nice as well. We used to use LastPass for a long time. But I store, for example, like AWS secrets, I'll put those up in one password in the notes field, or I'll create separate special fields that have kind of key value
Starting point is 00:26:20 pairs, which are environment variable name, and environment variable value. And then I just have a quick little one liner in my shell that converts those from one password JSON into export those two real variables in my shell. So more than just the secret key, like the region and like what profile to use, which assume to do like anything is a variable that I can put in my environment, I'll put into one password. Okay, yeah, that's cool advice. That's good. Yeah. Right. Well, that's it for our six items. You guys got any extra stuff that you want to throw out there? Ron, I see you got one here. Yeah, I just noticed that PSF is looking for volunteers to help migrate issues from bugs.python.org to the GitHub issues.
Starting point is 00:27:00 So if you want to help out PSF and do something worthwhile, like this cool thing to volunteer for. Yeah. Yeah, that's cool. That is cool. How about you, Calvin? In case you missed it, there is a Learn Python Humble Bundle that is going on right now that will benefit a couple charities, the Book Industry Charitable Foundation and the No Starch Press Foundation. And so those are helping folks who basically need a safety net during times like this, like independent bookstore owners, comic book owners, things like that. For $15, you get like nearly $400 worth of like amazing no starch press books. At some point in time recommended probably almost every one of the books is on that list to folks to so they can
Starting point is 00:27:35 get jumped in both feet. How do I learn Python? I've got three of them sitting on my desk right here. Because they're they're fun books. You know, there's like stupid Python tricks and automate the boring stuff. And there's really fun books in there., there's like stupid Python tricks and automate the boring stuff. And there's really fun books in there. So I'd recommend it to anybody who's spending time at home and doesn't know what to do with their time. Go grab these books for 15 bucks or pay what you want.
Starting point is 00:27:54 The money goes to a good cause and you get to learn awesome Python language. Nice. Yeah, that's cool. The Mission Python book is intriguing to me. That's definitely a cool one. All right, I got a few quick ones. Python 3.9 Beta 1 is out for testing.
Starting point is 00:28:10 So if you're into that, you know, go check it out. You can run, just download and run it. You know, play around with some of the new ideas in there. Also, not beta, but for real, Python 3.8.3 is also available. That's pretty cool. And then I got a cool message this morning from Jeff Derbyshire, and he sent over something that I thought
Starting point is 00:28:31 was just kind of a cool little piece of information. I'll link to the paper in the show notes. So everyone's trying to help out with this COVID stuff. Some particle physicists put some free time, took some of their free time to design and build a low-cost ventilator. It's pretty cool, right? Yeah. And then they wrote a paper about it because they're particle physicists and if you look through it it says things like the target computing platform is raspberry pi 4 as chosen
Starting point is 00:28:56 as a trade-off between computing power and power consumption and things like that which is nice the target programming language is python 3 and the ui is pi cute 5 and then the mvm gui that's like the ui for it is python 3 software written with pi cute 5 and pretty nice allows you to like steer and monitor the equipment so anyway here's a cool effectively a python ventilator created by particle physicists that's like open source yeah well that's awesome yeah it's kind of cool there's a huge number of names on this paper too yeah it's pretty awesome anyway i'll link to that people can check it out and if they're interested you gotta do something to keep the these particle physicists off the streets that's right no one just roaming around any old collider all right so for So for the joke this week, I thought I grabbed like a couple more. Oh,
Starting point is 00:29:46 really covers not O'Reilly. I know. I mean, you already had the humble bundle book thing. So we've got the, Oh, really ones. And I thought we could just each just do one.
Starting point is 00:29:54 I'll talk about the first one here. It's a chameleon, which obviously is the lizard that can change colors to blend in. Brian, you'll like this one. It's called refactoring code without test. It looks like it's working. No code coverage, no problems. It just blends right in. Looks like it works on my machine.
Starting point is 00:30:10 That's right. It was written by Sir Crash a lot. So, cool. All right. Brian, you want to do the next one? Sure. Becoming a manager and listening to people complain all day. Jesus Christ, not another budget meeting. So, luckily, I- And the animal? The animal's a crab of course i don't have to deal with budget meetings luckily yeah yeah me either all right calvin this one's a special web one for you yeah it is i'd say this is perfect for me so this is the um
Starting point is 00:30:38 z index good lord how many zeros i think it's 100 billion. Is it 100 billion? It's the real world CSS. You've come this far, no going back now. That's so true on so many levels there, I think. You're like, Z index equals one. No, 10, no, 100. Fine, just, it's eventually not going to be behind that thing. I love it. All right, and then the last one,
Starting point is 00:31:01 I'm a big fan of design patterns. So this one is, avoid using dark patterns. And it says do or do not. There's no try. And of course there's a Yoda on it. Very good. Very good. So yeah, these are always fun.
Starting point is 00:31:13 All fun. These, these are really good covers. Yeah. Always a nice joke. As well as nice being here with both you guys. So Brian, as always, Calvin, thanks for joining us. Yeah, it was wonderful. Thank you very much for having me. Thank you. You bet. Bye us. Yeah, it was wonderful. Thank you very much for having me.
Starting point is 00:31:25 Thank you. You bet. Bye everyone. See y'all later. Thank you for listening to Python Bytes. Follow the show on Twitter via 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, just visit PythonBytes.fm and send it our way. We're always on the lookout for sharing something cool. On behalf of myself and Brian Ocken, this is 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.