Python Bytes - #232 PyPI in a box and a revolutionary keyboard
Episode Date: May 5, 2021Topics covered in this episode: Sphinx Themes Gallery update Mongita - Like SQLite but for MongoDB World Plone Day 2021 - Over 50 Videos from 16 Countries The social contract of open source: view e...very commit as a gift PyPI in a box Film simulations from scratch using Python Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/232
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly
to your earbuds. This is episode 232, recorded May 5th, 2021. I'm Michael Kennedy.
And I'm Brian Arkin.
And I'm Annette Lewis.
Annette, welcome to the show. It's so great to have you here.
Thank you. It's great to be here. Thanks for inviting me.
Yeah, of course. We were on a panel together at the Python WebConf,
and that was a lot of fun. It was like a close out the conference
trivia show or something like that, right? Yes, that was a ton of fun. It was nerve-wracking,
but I really enjoyed it. Yeah, absolutely. So tell people a bit about yourself before we jump
into the topics. Okay, so as I said, hi, I'm Annette. I am a Plone and Python developer with
six feet up. I've been working professionally in the web development world for about eight years now,
but my interest with working with web technology
started back in 1999.
It's just been a passion
that's followed me all the way till now.
Oh, that's awesome.
Did you start in Python or?
No, I didn't start in Python.
I actually started just HTML, CSS.
And as I got more eager,
I just put more and more languages
and then Plone was my gateway into
the Python world. Yeah. Oh, fantastic. Interesting. There's a, the Plone is a kind of a microcosm
now. So yeah, it definitely seems like it. All right, Brian. Well, you want to kick us off with
a web topic? Yeah, this was just announced last week. The Shinx theme gallery which um it has has an update updated look
and i actually to be honest i hadn't didn't look at it before so i wasn't sure what it looked like
before but i have a new product sphinx project that i'm working on so i was interested in this
and it looks awesome so the theme gallery has if you go to the theme gallery page you see uh you
can just browse through and all the themes are just like these images.
Oh, yeah.
If you want to look like Read the Docs, you can do that.
Or you can get like a plain white one.
Yeah, very nice.
That's neat.
Yeah.
And it wasn't obvious to me at first, although it's kind of obvious now.
Each theme is shown in three different sizes.
So you get the full wide layout or you get the narrow layout or what it might look on your phone.
Interesting.
So like this press one on the screen here,
which I actually like a lot,
you can tell it's clearly responsive
and adapting like the design to the phone,
but like the celery one,
it's just lots of side scrolling.
Yeah. And then click on one.
So if you click on any of them,
you get a demo of what it looks like.
And right away you get like some instructions on how to install it if you want to.
And then a link to the documentation for the theme.
And then you also have, there's a nice kitchen sink feature.
So you can go ahead and you can see all the different markups that's possible.
And what I really like is there's a specific API documentation example,
because for the project I'm working on, I'm using it to document some code.
So I really want the API documentation to be really clean and easy to read.
That's the most important feature for me.
So I think we're going to go with the book theme,
because the book theme's API documentation looks pretty good.
So we're going to start with the book theme because the book themes api documentation looks pretty good but we're going to start with at least um and anyway i think this is just a really nice way to to review
everything so drop down the kitchen sink thing um and then click on api oh yeah it's very nice uh
looking um uh to to break up the different api this shows you how how the API of your project will be presented through the documentation,
right?
Yeah.
Yep.
So yeah, using the API, I don't know, I'm still on the fence about how I'm going to
put all this in.
But listing all the API of the project I'm working on, it's going to be an internal documentation
project.
But this is really helpful and I really think it's really nice looking.
So good job, guys.
Yeah. Yeah, that's super neat.
You've got to write in restructured text.
Is that right, by default?
No, no, no.
I'm doing all Markdown now.
So the cool thing is, and I probably should do a write-up of this at some point,
but Paul Everett's doing a talk for PyCon about doing Sphinx in Markdown,
and that's what I'm going with.
So there's, yeah, the mist parser using that.
And then there's also a way that you can actually put Markdown in your doc strings.
So you can even write Markdown within your code codes.
Oh, that's cool.
That's cool.
And that's it.
What do you think of this project?
I think it's really cool.
I mean, when you work with so many clients and so many pieces of thing,
anything where
you can get nice, clear documentation and any themes are like a passion of mine, especially
starting in front end.
So this is laid out.
That's cool.
Yeah.
Your work with Six Feet Up is primarily like a consulting role.
Like you guys help other people with their Python web apps and stuff, right?
Yes.
So we get to do lots of different projects.
And the best thing about that is we're always trying to solve different types of complex problems.
So any tools that we can use or introduce into this is a great asset.
Yeah.
Very, very cool.
All right.
Well, this next one that I want to talk about is near and dear to my heart.
Brian, you may have heard me talk about MongoDB before.
Yeah.
Yeah.
I'm actually a huge fan of MongoDB.
Like our site runs with MongoDB as the backend.
And one of the things I've been jealous about is SQLite.
So if I was working with Postgres and I wanted to use, say, Portis ORM, I wanted to use SQLchemy,
and I wanted just a simple little version, well, I could use SQLite and then change the connection string over to Postgres and get a real proper database. But I don't have to always have that in place, right?
Various reasons. We even talked about using SQLite as a database file format, which was super cool.
So MongoDB doesn't really have something like that. To a great degree, there was
TinyDB, which is like it, but yeah, similar. but tiny db i don't believe it's actually
mongodb compatible i could be wrong about that but i believe tiny db is a little bit different
yeah it's different yeah it's a document database but it's not just swap the connection string for
mongodb i believe so let me tell you about mongita i don't know how that's really meant to be pronounced, but I'm going with it. It sounds fun.
So Scott Rogowski created this thing called Mongita,
and he says,
Mongita is to MongoDB as SQLite is to SQL,
which is really, really nice.
So it has a cool, I don't know,
meerkat type of animal or something.
Mongoose, I'm guessing maybe that's a mongoose.
Anyway, I love the cool little animals and whatnot, but it's quite new, but it also
seems to be coming along. And he highlights a couple of uses here, like for embedded
applications, you might use it for. So an embedded database, right? If I want to ship an app and it
needs a database storage, but I would rather use a document type of database instead of a relational one, you can use it for that. Also for testing, this is kind of cool
because it's not a hundred percent, but it's a non-trivial amount of the underlying MongoDB
Python API is implemented. So you might be able to just swap it out and use like an in-memory.
So one of the connection strings or clients you can use is just an in-memory one.
So you could write a PyTest fixture, Brian,
that loads up your test data and then swaps things out.
And then just from there on out,
you think you're talking to MongoDB,
but you're talking to something in memory through MongoGita,
which is pretty cool.
And Sam asks, can we run this in memory?
Yes, exactly.
Exactly.
I can't wait to try this.
This is pretty cool.
Yeah, it looks pretty cool.
And Dean is pointing out this may be the most popular DB
in the country of Mongolia.
Anyway, so design goals.
I didn't get the joke at first.
That's bad.
So it's meant to be compatible with MongoDB
and implement a commonly used subset of the PyMongo API.
It's embedded.
So instead of having a separate database server, you can just have this, which is really cool, like for workshops and stuff.
It's supposed to be not super fast, but decent enough to work with fast.
It's all tested.
Its only dependencies are PyMongo, which is the thing you've got to replace, and then sorted containers.
And theoretically, it's thread safe.
Obviously, it's not a real database, so I still think it's pretty cool.
So you come along and just say, instead of creating a PyMongo client, a PyMongo.MongoDV
client, you could create like a Mangita client disk or a Mangita client memory, and then
just do the queries against it, which
is pretty cool.
There's some performance comparisons and whatnot about how it works.
And then I'm going to point out one thing that we were talking about over here recently,
connection with Mongo Engine.
So if you're working with an ODM and you don't want to write raw queries and dictionaries,
which I encourage you not to do, work with some kind of ODM,
it would be nice if you could just change something and then all of your code keeps working.
So this person, Rocky Holmes, comes to us. It'd be really awesome if I could connect this through Mongo Engine. He's like, I'm not sure what's going on. I'm like, well, so I wrote some code and said,
all right, here's all the things that have to change to plug Mongo Engine directly into it.
And basically, there's just certain things you have to say. Yeah, yeah, yeah. Sure. I'll do that
for you. Like setting the host, you have to be able to set the host because the underlying library
tries to set the host, but obviously there's no host. But if it's not there, the code won't run,
right? So there's a few things. And Scott went through and merged that back. So now there's a
subset of working with Mongo Engine as well by just swapping out the the client
basically monkey patching the client that's so cool that's nice yeah neat right yeah i've been
using tiny db in small projects and um i think i want to definitely want to try this out because
the the road between path between you know starting with tiny db and then going to mongo
is a kind of a big hurdle.
But this looks like a smaller jump. This is much, much closer, yeah.
And if you use the disk writer thing,
I think it's going to save it in direct BSON instead of JSON,
so it should make it parse less and whatnot.
I haven't tried that yet, but it does store it in BSON,
which is the binary version of JSON that MongoDB uses.
So I would suspect that's a smaller, faster, lighter file format
than actually going to JSON and parsing the strings back.
Nice.
Yeah.
Pretty cool.
Pretty cool.
All right.
Next up is Annette.
What's your first item?
My first item is about World Plum Day.
So last week, the plum community actually put together World Plum Day.
And I was kind of blown away by it because it was a 24-hour online streaming event.
And it was held, as I said, last week.
And they put together over 50 videos, 16 countries.
It was like 10, 11 languages of content just introducing all types of different parts of Plone.
So they went through like some general interest,
they went through some technical talks, case studies, and it's all available on YouTube right
now. So you can go and watch it. And it's a great primer if you're familiar with Plone.
If you're not familiar with Plone, even if you just want to learn some new techniques or see
some case studies, they have some great case studies about different universities that they
were using.
So here they actually put together a nice list of highlights.
And of course, yeah.
So if you're overwhelmed with looking at everything,
here's like a good list that you can go through.
But like I laser focused, of course, on Plone 6
because that is something I have been waiting to come out.
And the more like breadcrumbs they get me,
the more excited I get.
And they actually did this Plone 6 introduction in I believe seven languages already. been waiting to come out. And the more like breadcrumbs they get me, the more excited I get.
And they actually did this Plone 6 introduction in, I believe, seven languages already. They're trying to add a couple more so that everyone can get this introduction to what Plone 6 is going to
be like. That's amazing. I've never heard of a conference doing that. Even places like WWDC
or Google I.O. or Microsoft Build, like there might be subtitles, but not different versions.
Yeah. So it's amazing. And like at the very bottom, you can see that part of the link where
they actually have a couple hours of content in just Italian. So it's for everybody. It truly is
a worldwide event. And with Plone 6, they're talking about like Volto and under the hood.
So if you're not familiar with Plone 6 or Plone in general,
it's a Python content management system,
but Plone 6 is also going to have a React front end
available to you in the form of Volto.
So you'll have the Volto front end.
You can decouple that and use any front end you want
because it has the REST API.
They're making it easier to install.
So I just, I can't wait to get my hands on it.
Okay.
Yeah.
Here we go.
We've got the, if I can pull this up,
we've got the Volto, a new experience for editing the web.
Is that, this is what you're talking about?
Yes.
Okay.
It's like turn your CMS into kind of WordPress
that you write in place or something like that.
Right.
So what it does is the Volto gives you the ability to dynamically make your layout. So they
break the content into little blocks. So you can kind of drag and drop blocks and arrange your
areas. So it takes someone who might not be really technical or not be able to do front end or such,
you can kind of just drag and drop them and get that modern layout experience without having to
know all of that. But then if you have that skill, you can make more blocks, you can present clients with more
options. So you can use as little or as much as you want and you get all the speediness and
fastness of a React front end. Okay. Yeah, that's really, really cool.
Because there's a lot of competition for CMSs. There's Wagtail for Django and then there's
obviously WordPress that seems to run way more
of the internet than it should. And you might wonder like, okay, why am I going to use this
one or that one? This is a really compelling idea to put in front of a CMS. And I'm sure this will
give Plone a big leg up. Yes. So I guess maybe I've missed it. Is Plone 6 something that's out
already or something that's coming? It's coming. So they're still in the alpha phase.
It's not completely out, but what happens is you can basically put together the Plone 6 experience
by downloading the Volto front end and then also having the Plone back end. So you have the two
parts, but they're getting it to the point where it's going to be a real easy install process where
installing Plone will install both halves that you need and get you up and running.
So you can start practicing
if you're an early adopter now,
if you go through
the Volto documentation,
but then the official Plone 6
will be all ready for you,
packaged to go.
Cool.
Yeah, really cool.
Thanks for pointing out
both those things,
the conference and Volto.
All right, Brian,
you beat me to this one here.
Did I?
Tell us about it.
Well, I was considering covering it, but you got it, man. Go for it. It's a good one. Worth it. Yeah. So Brett Cannon, he, he gave a, this is interesting. Anyway,
he gave a great talk a few years ago at one of the PyCons about, he did a keynote about basically
burnout in open source developers. But this is, he wrote another article today,
or it wasn't today, it was in April,
but called the Social Contract of Open Source.
But the highlight I really like is view every commit as a gift.
So this is a really great article.
It's some interesting thoughts on what the contract is and
the relationship and what
relationship exists between a maintainer and the users of a project. And there's a really
interesting analogy that he talks about of the open source developers, like somebody that's
just giving away free software, but they just have like a pile of USB drives in their front yard
with a sign that says free.
So you can drive by, you can pick one up.
And if you need a new version, you can drive by and see if there's a new version there.
And you can get one if you want.
So that kind of analogy is interesting because if that was the case,
the things that you would not want to do,
you would not want to go up to the door and knock on the front door and yell at the developer.
You wouldn't want to leave an angry letter in their mailbox. You wouldn't egg their house because you're mad that they didn't have a feature you wanted. TP their tree. You wouldn't go down into the middle
of the street in their town and start yelling about how much you hate their software or how
much an idiot the developer is. You would treat each one as a gift it's like free and if if it disappeared
if it didn't show up anymore if there were no versions you're kind of on your own it's a gift
take it or leave it um he uh brought up an interesting quote from uh emmanuel kant which
i didn't quite get but he kind of translated um and his translate his translation really is
when you treat a maintainer as a fellow human being who may be able to do you a favor of their own volition, then you end up in an appropriate relationship where you're not trying to use the maintainer for something specific.
So you're not using them as a mean to an end.
You're treating them as somebody that's giving you a gift.
And just I like this attitude and it's great.
Yeah, Brett is a real thought leader on this whole area.
Annette, you work with people who are probably coming to consume some of this technology
on a corporate side and they might have different expectations.
Maybe they're switching from Java or.NET where they had somebody to go to and ask,
like, we need you to support us in this world.
If we ask for a feature for fixing a bug or something,
here's our SLA to make that happen, right?
Is that something you run into, Annie?
Well, they always, of course, they set up the expectation.
So I'd like to say, at least I've been very lucky.
So like, I think most of the clients I've run into
do treat it like everything that we provide for them,
every interaction is a gift interaction. So we're very fortunate in that front, but I definitely know, especially when
you have the, and do hobby programming, that is especially where you see this come up. If you
contribute anything, I always think if I ever, ever, ever want to contribute to not to be scared,
but if I put something out there in the world,
someone's going to expect me to support it sooner or later.
Yeah. Yeah. I have a couple of projects that I'm like, these are really neat. And if I put them
on PyPI, that would be great, but I'm not sure I'm ready to commit the energy and time to it.
So I think putting it out there fully in that way signals to some degree, like I'm making something
of a commitment, at least, you know, some people will see it that way. So yeah degree like i'm making something of a commitment at least you know some
people will see it that way so yeah i've held back a bit oh i actually so that's interesting i was
talking with brett actually there's a testing code episode that's getting released this week with
brett and we were talking about packaging and on one of my projects i don't i don't list which
python version it it is compatible with but it really isn't compatible with everything.
So I asked him about that.
And he said, well, if you only, like, for instance, he said, if you only want to test on 3.9 and like 3.8 and 3.9, just list those.
I said, well, shouldn't I try to expand it to more Python versions?
He said, if you can, if you want to, but it's really up to you.
It's your code.
You can share it however you want to share it.
So that's it.
Yeah, that's the point.
It's kind of a freeing mindset also.
Yeah, absolutely.
Well, nice article, Brett.
I have one more for you,
and I'm pretty excited about this.
I think this is a pretty cool idea.
Brian, we've spoken before about some of the tools
to allow people to have private PyPI servers for several reasons.
You know, one might be we want to be able to publish, like one of our teams creates
a package that we want to share throughout our other code.
You could publish that internally and not make that a public thing, but, you know, have
a private PyPI server for that.
But this is a pretty cool article. I saw it through this place called
builtinafrica.io. And it's about creating a portable PyPI server for offline access.
So if you're in that cool, so if you're in some place where internet is not super reliable,
or maybe it's reliable, but it's really slow, and you want to work with things like all the
packages on PyPI.
You know, those can start to be a big problem,
or especially if you have got intermittent downtime
or something like that.
So that's what this project is about.
And this person, Vuy Cili,
and Nadlavu, if I'm sorry,
I'm sure I'm messing up your name,
but they created this thing called PyPI in a box.
And the idea is, here is a real simple way to take a Raspberry Pi
and turn it into a portable PyPI server and offline caching tier, I guess,
of all the PyPI PIP infrastructure.
Pretty cool, right?
Apparently I've got to use cookies, but you know, it's all good.
So the idea is basically it's a standard Raspberry Pi and it's supposed to be super affordable,
should be very, very little setup. And it uses a couple of cool libraries that might be relevant
to people anyway, right? So you get this little 200 gigs SD card, use mini repo, which is a thing that will clone PyPI, use PyPI server to serve it
up, serve up the packages, and then put Nginx in front of the PyPI server because PyPI server
apparently doesn't do caching and is slow to like reread. If you like literally cloned PyPI,
it would be like a little bit hard on it. So you can put caching in front of it for different
search requests and install requests to make it much faster using Nginx. So this article really just talks about all the things
you got to do. You start with the Raspberry Pi, you get Ubuntu on it, you configure DHCP,
create an access point, you add routing to it, you clone PyPI with this mini repo library. That
was pretty cool. It's just a CLI, a thing you can get, which is cool. Then you set up PyPI with this mini repo library. That was pretty cool. It's just a CLI thing you can get,
which is cool. You set up PyPI server, run it on the stuff that you've cloned, and then you put up
Nginx in front of it to make it much, much quicker. Yeah. And that's pretty much it. You
could even do SSL over it. And then it talks about how do you integrate this into somewhere down
here. It talks about how you integrate this into PIP.
You can PIP install things and so on.
Anyway, I think this is a fantastic idea that this person put together.
And yeah, I like it.
I think it could be a huge benefit to people, not just in places where the internet is not as reliable or as good, but maybe you're traveling and your internet is super, super slow while you're
out of town for two months with your family.
Or I was just camping with my family and there was literally no internet, no cell coverage,
nothing.
And if I wanted to work on a project, it'd be cool to be able to have this if we were
staying for a long time to still continue to work in reasonable ways.
What do you think about this?
I think it's amazing.
I know I've traveled a lot. And there's sometimes I used to take train rides that were 14-hour train rides. And every tunnel, every bridge, you have no idea what your service is going to be like.
So something like this would be so great. When you're sitting in a chair for that many hours,
you can get a lot done. And if I had PiPi in a box, it would make that so much easier. Yeah, absolutely. Like Sam Morley out there says for traveling, definitely.
And then this actually, I believe was sent over by Jared chunks. Thank you, Jared. And he says,
you know, also on an intercontinental flight or when the power goes out or something like that.
You know, there's a lot of people who are sort of living the digital nomad life.
Doesn't work for me. There's too many people in the life in schools and stuff. But if you were, this seems like a really cool idea.
Another thing to point out in here, there's a nice little comment that I can't make. I don't
see any instructions for, but this thing is a Raspberry Pi with stack overflow and PyPI
cloned into it. The two
things you need.
If I had those two things, I'd probably really not
need the internet again for quite some time.
This would give it an entire new
meaning to a stealth startup
and you come out of stealth mode means
you literally just reconnect to the internet.
I like this idea. This looks really
useful for lots of reasons and
it's not very expensive to the extent that it can empower people who are struggling with these kinds of things.
I think that's all the better.
I definitely need to try this, especially the mini repo thing.
I was taking a look at that.
It looks great.
And also, it looks like you can boil it down and only have certain Python versions.
So if you're only going to work on Python 3, you don't need to download all the 2.7 stuff.
Oh, right.
Yeah, that's super cool.
That's a good idea.
So yeah, this is neat.
Nice.
All right, and you got the last one, right?
Yes, I do.
This was a fun project
that I just came across browsing the internet.
It's a blog post by Kevin Martin Jose.
And it was about film simulations from scratch using Python.
In particular, this goes over implementing a color lookup table to an image with Python and image processing, almost like in the film industry when you want to color grade something.
And I thought, that's an amazing project.
And the way this is broken down is they kind of walk you through
the pieces and build you up to getting to a more complex project. And they explain the lookup
tables while they're at it. So the primer, I'm going to give a real quick primer on the color
lookup table. So basically you have this magical 3D cube of color or some representation of color.
And of all the colors in the world, you want to map it to a certain amount of numbers. So I might say, if I have whatever many colors, I want to map it to
just eight colors. And I want every red to be this red and every blue to be this blue and such.
So what they end up doing is they just start with pill and image, and they just start with a red
image. And then they make their own lookup table and they're using NumPy. So they're using
those arrays to make the reference table that they look for. And then afterwards they say, okay,
I'm going to take all these red values and I'm going to write a new method that's going to pass
this image through and reapply the colors depending on what my lookup table is. So in the first
example, it's just a red cube. And since they're using NumPy zeros,
their entire table is zero. So that comes out to black. So their little red square just turns
black. And they're like, well, that's not quite as interesting. So they actually take a specific
address in that table and they say, we want to reassign this one to green. So the next time they
apply this, it turns to green. And then as you get through the article further and further, they take up this charming little truck from Rome
image and they say, okay, let's map all of the reds to green. And of course, well, that means
all of the other colors end up being black. So it's like those things in Microsoft Paint,
if you take a big image and you open it with two-bit color, that kind of image.
Do you want to feel like you're back on a Commodore 64?
Yeah. So then afterwards, they say, okay, well, now we've got to make this a little more detailed.
So they make a more complex table and magic happens in code and such. There'll be a link
to this article. So if you want to read through it, it's actually a really interesting read.
But then afterwards, they make a bigger table and they try and get more color.
So they bring it up to like, I believe, 12 representations.
And now it looks recognizable.
But then finally, now that they've gotten through all of this color and the for loop
where they're actually iterating through all of the pixels in the array and then reassigning
it and they use a scale they're also using numpy rent rounding it to round the scale to certain values so they can say okay
i'm taking this entire block of color and assigning it to this color block um oh yeah like quantizing
it yeah yeah exactly i think they um they take the the table size divide by the number of colors, and then they reassign them as they need to.
But then afterwards, they actually say, okay, now we've gotten you through all of those pieces.
And they have nice side-by-sides, so you can kind of see, oh, before and after.
I noticed that about that article.
That's so amazing that you have a slider to sort of see the image effects.
That's a cool blog post.
And that's just with the
identity of the 12 it's not even that many colors so it's amazing how the human eye just says oh
that looks good enough um but then afterwards they're like okay now we've made our own lookup
table now we can download lookup tables and start manipulating so they reassign a value to green
so you get that truck and they just patch green into the red areas. And then finally they end up using a hauled clut.
Yeah, I would get it.
Yeah. So they actually, they download a PNG version of this table. So instead of a 3D cube
and just numbers, it's an image. And then this is
what I thought was the coolest part about all of this is they scroll, scroll, scroll, magic numbers.
But what they basically do is they take that image, they open it with pill, they use the
numpy array to make that an array of values that they can use against. They bring in the image of
the truck, and then they have all of this magic
code there that they reassign those values one by one. So it iterates through all the pixels
and then it spits out the filtered image and then pill puts it back into an image form.
So you can see what you got and I'll skip to the very last one. Oh, did I miss one? Oh,
there you go. You can see like how this is like less desaturated.
Oh, yeah.
So like, that's just that particular type that they applied there. And I thought there was one
more in here somewhere. Oh, there we go. There's the green tint, where they just added a little
bit of green to every color. And it was so cool, because I spend so much time in the web Python
world, that it's so easy to forget that Python is it's got such a wide array of things that you can do with it.
And just image processing just blew my mind.
Yeah, I agree.
This is super neat.
And it's the kind of stuff that I wouldn't do that often.
But it's also really cool to see what you can do.
It's kind of think Instagram filters type of thing, right?
Mm-hmm.
Yeah, some of the image processing stuff is
really cool i remember in a university i had a class where we took um uh took the colors that
we took it uh looked at the colors that the human eye sees best and then tried to map those two
colors that a like different animals see different colors better or different frequency ranges so um
you can translate
those and highlight kind of translate other other frequencies and shift them so that you can
kind of uh represent what an image might look like to a different kind of animal
um those are interesting things to like the bird eye the dog eye the cat eye yeah well like for
instance uh birds and insects often see different since they
see different frequencies are flat the flowers have some a lot of flowers have patterns in them
that we can't see because they're not intended for us to see so huh very cool okay awesome yeah
jared chung out there also says always want to play around with images using python but haven't
got around to yet this is a really neat example to explore. I totally agree.
And then a couple of comments just going back.
Sam Morley says, you know about the
IPI in a box? For an on-system
package, you could actually do this in Docker
on localhost. So if you just
wanted it for you, you didn't want to share it,
that might be pretty neat as well.
And of course, if you removed all the duplicate
questions and the comments saying you're doing it wrong,
you could probably just fit it on a Raspberry Pi,
the stackable flow that is.
And then Kelly Paredes from Teaching Python Podcast,
a former guest here, does super cool shared thanks,
even the simple thought of turning simple pixels
into another color to be really nice for students
because, yeah, she and Sean teach middle schoolers
how to do Python, which is neat.
Awesome.
Awesome.
All right.
Well, I think that's all of our items, isn't it, Brian?
Yeah.
Yep.
Do you have any extra information for us?
Oh, you know it.
It was almost an extra, extra, extra, extra here all about it.
I'll be quick, though.
So many of the Python things are available in new form, most notably Python 3.10
beta one. I saw that in PyCoders today. So thanks Dan and team for putting that out there.
But yeah, this is the first beta of 3.10, which is sort of the stable version, right? Which is
pretty neat. Let's see. Then I covered HTMX not too long ago, a couple episodes ago. And that's a really cool way to basically add JavaScript-y dynamic front-end stuff without doing almost anything.
It's more like declarative stuff.
But someone pointed out that HyperScript is sort of a companion-type thing.
It's pretty new, but really simple.
You can just say, like, button, on click, toggle this CSS element.
And, yeah.
Nice. Super, super neat ways to click, toggle this CSS element. And yeah, super, super neat ways
to add little bits of interactivity to your web page
without really doing a ton of JavaScript stuff.
And apparently it is accompanied with a haiku,
which is always cool.
And then lastly, it's not quite last, maybe it's last.
I also want to point out that we just released a new course.
I talked about it coming, but now it is out.
Getting started with Dask.
So if you want to take Pandas code and run it on all 16 cores on your machine,
or you don't have enough memory, but you've got disk space to load up the data,
or you want to run it on a cluster, Dask is like the next level scaled out Pandas.
So here's a free course I put together with Matthew Rocklin and team over at coiled on working with Dask and just getting started with it. So people should check that out
if they want. And I believe that is it for all of my extra items. Either of you want anything else?
Oh, I have something. Yeah. Awesome. Yes. So the Python web conference 2021 happened in March,
but we're getting a head start on the Python Web Conference 2022 and their call for papers is open.
So that's a conference that's put on by Six Feet Up and it focuses on Python, particularly in the world of the web.
And that's actually where I met Michael Kennedy doing our panel, our fun quiz show panel.
It's also where I've met like a lot of the Pythonistas that I've come to call my friends and
in the community as a whole. So just want to say if you're interested in speaking,
I will say this and it probably seems ironic since I'm on a live cast right now. I'm an introvert.
I'm really shy and I usually don't like speaking in public, but I always push myself and try and
give a talk just because if you're passionate about it, you'll probably find somebody who's just as interested and you can learn and teach both
the same way.
So there's a variety of different topics.
We have speakers from all over the world.
So it's a great time.
So whether you attend or just put in a talk, I hope to see you there.
That's a great shout out.
And this conference is quite large.
You said you're seeking 60 speakers for topics related to like this big long list that people
can find in the link.
Yeah, it was like four or five days, something like that.
Yeah, it was five days.
They did half days.
So you didn't get as much fatigue.
That was really cool.
I like that.
And four tracks.
And I know they even had a culture track.
So even if you're not technical, they're still just with the Python community and culture
things to listen to. Yeah. Yeah. Very nice. I want to second your thought about encouraging
people to speak, even if they're introverts or shy, or they don't feel like they're ready. A lot
of times just putting yourself out there can really help amplify your career. And it could
be something like, here's how I learned to become a Python web dev. And these are the things that
were struggles. And these are how I overcame them.
Like that might be really helpful
to a large group of people.
And just putting yourself outside of your comfort zone
can make a big, big difference.
And here's a pretty low stress, low risk way to do it.
Yeah.
Yeah, fantastic.
I guess I want to reiterate that.
I think one of the things about either blogging
or speaking at a conference or something,
as a developer and especially an interviewer,
I'm often looking just at the people that are better at me.
So I'm looking at learning.
So either writing or talking gives you a chance to turn around
and see how far you've come and start teaching some of that back.
And I think it's good for mentally just to help people realize
they've come a long ways.
Yeah, for sure, for sure. sure all right do you have something funny do i i do have something funny okay so this one
uh i found out about it because of our friend cecil philip who was just on the last episode
and he tweeted this changes everything and i'm like all right what is this about
it says uh so this comes from stack overflow it's's a little bit old, but it's a goodie from
April 1st. It says the reviews are in. The key is flawless. The key is a new keyboard from Stack
Overflow, and it comes in this super tiny box and it's here to help programmers code better.
And so there's this video. I don't think I can get the I don't think I can get the audio into
the streets. You have to watch it. I'll link to it. But the idea is you have this keyboard here and it only has three buttons. It has a stack overflow icon,
which is like the command or the control button. And then it has a C and a V.
It has a really beautiful like whisper click sound. And yeah, it says free for your keyboard
with the unlimited copy and paste. The key is the name of the keyboard. What do you think?
Oh my gosh, that's great.
Like if I could have that in my normal keyboard, just so I know it's like, okay, it's time
for some Stack Overflow time.
Copy, paste.
Exactly.
I mean, it's obviously a joke, but it could be kind of like, all right, I'm going into
the mode.
I'm using the special three key keyboard.
Let's do this.
Yeah.
If you could have like whatever you highlight in your code it just automatically
looks that up in stack overflow and then a key to copy the answer the top answer and uh yeah
there you go yeah exactly just automate all of programming um yeah you could even tie this
together that stack overflow in a box thing um i'm not sure i'm not a huge fan about the touch
bar thing and the the max that
they're fine but i mean i don't hate them but i don't really love them but it seems like somebody
could program one of those touch keyboards to have just this if it sees you're in a browser
with that url it just it switches to just these three keys yeah fantastic all right well i think
that is that's it that's the show brian thanks for I think that is, that's it.
That's the show.
Brian, thanks for being here as always.
Annette, so great to have you here.
Thanks.
Good to be here.
Yep.
Bye everyone.
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 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.