Python Bytes - #183 Need a beautiful database editor? Look to the Bees!
Episode Date: May 29, 2020Topics 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)
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.
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
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.
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.
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
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
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
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.
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,
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
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
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.
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.
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
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
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.
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
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.
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.
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
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.
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
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
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.
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,
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
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.
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
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
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
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,
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.
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.
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.
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.
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
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.
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.
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
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?
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.
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,
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?
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
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
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
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.
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.
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
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
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
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,
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
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.
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
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
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.
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
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.
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.
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
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
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,
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.
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.
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
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,
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.
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.
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.