Python Bytes - #279 Autocorrect and other Git Tricks
Episode Date: April 15, 2022Topics covered in this episode: OpenBB wants to be an open source challenger to Bloomberg Terminal Python f-strings JSON Web Tokens @ jwt.io Autocorrect and other Git Tricks Extras Joke See the ...full show notes for this episode on the website at pythonbytes.fm/279
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 279, recorded on lucky April 13th, 2022.
I'm Michael Kennedy.
And I'm Brian Ocken.
And I'm Brian Skin.
Hello, Brians. Great to have you.
Hello, singular Michael.
Great Brians think alike.
That's right. That's the saying.
Brian Skin, welcome.
It's great to have you here.
You are now completing the trifecta of podcasts, I understand.
Yes, indeed.
I was on a panel for TalkPython and an episode of Test and Code a little while back and excited
to be here for Python Bytes.
Nice.
You've been a big contributor in terms of sending topics our way.
So it's only fitting that you're here.
Tell people real quick about yourself before we jump into the topics.
Sure.
I'm a chemical engineer by training.
I am not actually a software dev by day.
I have a PhD in chemical engineering.
I've been working for the last 10 years or so at a company here in Dayton, Ohio, Faraday
Technology, working on electrochemical process R&D.
So there's a lot of science there, some programming, mostly for data analysis, things like that. But I also
have done quite a bit of Python on the side in the documentation area and various things like that.
So, cool. Chemical engineering is pretty awesome. And it's great to have someone here who's not a
straight software developer. We get a lot of myopic views, and I think you'll have some interesting perspectives.
Hope so.
Yeah, I hope so as well, I'm sure.
Now, before we kick this off, I want to say this episode is brought to you by Datadog.
Check them out at pythonbytes.fm slash datadog.
We'll talk more about them later.
Right now, Brian, maybe we could talk about F-strings.
What do you think? Yeah, I mean, talk about F-strings. What do you think?
Yeah, I mean, I love F-strings.
I use them all the time.
But I was like really thought it was cool.
There were a couple new resources that I kind of wish I had had earlier.
This one, they're new.
So we've got from Florian Bruin, and he's, he's hugely helpful to, to getting, doing the code review or book review and
code review and all that stuff on the PyTest book. So I, I definitely want to shout out to him for
thank him for doing that. But so he generated this, this Python F strings, it's called fstrings.help.
And it's just like, it's Jupyter Notebook looking thing.
I think he created it with Jupyter Notebook,
but it just quickly goes through all of the formatting stuff of F-strings,
and there's a little bit of explanation,
but it just sort of exactly shows you what the syntax is
and what the output is really concisely.
This is a nice run- of the F string features.
Yeah, that's cool.
It looks like if you were trying to either learn Python strings or trying to help someone
learn Python strings, you could just send them this and go, here, scan this.
You'll be good to go.
What I like about it is just the terseness as well.
So this is a decent reference to bookmark uh for looking things up yet the other
thing i wanted to point out was an article called python f strings are more powerful than you might
think and that's exactly kind of the gist of it it's it kind of it's more discussion it doesn't
um i mean it does sort of tell you what they are but it kind of assumes you already know
but says some some really cool things like date date and time
formatting um have uh uh using it for debugging with variable names we've talked about that on
the show um making advantage taking advantage of string representations there's uh there's even
embedded i didn't know you could put f strings inside of f strings um so uh there's there's part nested f strings they call it so uh
interesting stuff yeah yes yes um so yeah nested f strings i had no idea i didn't either um i've
totally done that before really totally yeah templating one thing to then template into
another thing absolutely it's it's super helpful okay nice Very cool. Yeah, it's easy to forget that you can apply the standard, I guess, string.format type of operators like colon,.3f, or colon, comma to put digit grouping, but in fstrings, right?
Because it feels more like you're working with a variable than you are with a format character. I mean, short examples like this of, here's a cool thing you can do with even a well-established
basic feature like that can really help people go, oh, hey, that's just what I need and run
with it.
Yeah.
Very nice.
Oh, this is great, Brian.
I love it.
Now, are we ready to move on?
Yeah, definitely.
Cool.
All right.
I kind of want to blow your mind with this thing here. You've probably heard about Bloomberg terminals. So if you're in the investment space,
like if you work at a hedge fund or an investment company, especially in Manhattan,
you know, you'll sit down and you'll see like these six monitor crazy setups that would make
gamers jealous, you know, around them. around them. Look at what is going on
here. And one of the tools they use a lot, it's a thing called the Bloomberg terminal that lets
them look at all kinds of different visualizations and real time instant updating things around the
stock market and whatnot. That is a commercial product project that, best I can tell, I mean, there's probably discounts or whatever, but it costs around $2,000 per user per month, which is a non-trivial amount of-
That's a ton.
Cost, right?
I mean, no wonder we're all getting little percentages of money sucked out of our 401k retirements, because all of those people like paying that much money to like manage our accounts. Yes, exactly. So I want to introduce you all to OpenBB at openbb.co.
This is the equivalent thing, but several interesting aspects. One, it's open source.
Two, it's free. That's cheaper cheaper it's not necessarily the most important thing but
it also gives you access to all sorts of tools that we know and love from python especially on
the data science side so this open bb thing is uh this terminal type thing you can install it's
really got this sort of weird blend of like cli. I know Will McGugan would be super impressed
with all of its like terminal UI, its TUI aspects.
But then it also pops open interactive windows
that are like graphs and all those kinds of things.
We'll pull up some examples in a minute.
So you get access.
It's not just that it's free,
but you get access to all the Python data science stack.
And it is itself created in Python.
So pretty cool.
It's pretty popular.
It's got 11,000 GitHub stars.
And what you do is you show up at this terminal
and there's even an interactive live version.
You can have dark mode or not dark mode
turned on on the website.
I mean, I love it.
This is really a polished thing.
And you can type things like stocks.
If it's spelled stocks, you could type stocks.
And it'll come up with all these ways that you could explore them.
You could type BA and it'll come and give you these things.
And eventually, if you get to the right spot, it doesn't happen on the website,
but it'll pop up these extra windows that then let you explore things with graphs and so on.
So very, very cool.
Let's pull up some of the terminal things here and look at the features. Here are the features. So you can install it through its own installer.
You can install it through Anaconda or you can run a Docker image of it to get it to run.
So it's sort of summary is Python-based integrated
environment for investing research that leverages state-of-the-art data science tools and machine
learning technologies and navigate through over 500 different views and functionality.
So here's some of the pictures that we can look at. If you go to the product terminal and just
scroll down, you can have these really cool graphs
of like significant events happening along here
and extra information.
You can look at basically an Excel view.
You can look at 3D volatility sections.
You can look at sentiment analysis here.
The Bitcoin rainbow chart,
which I don't know how to read rainbow charts but isn't this an amazing view for something that runs in the terminal yeah this is great that's
astonishing yeah it really is pretty astonishing and like the the things just keep coming so if
you just keep scrolling through this there's such a to wait like to understand how is the economy doing apply ai predictions to like gdp and all all sorts of uh wild stuff so it's this really crazy blend
of terminal 2e plus pop open a bunch of data science explorations and then being python i'm
sure you can explore yourself my i looked at the requirements file it's like maxed on requirements in there let
me tell you but uh i think it's based on tornado as far as i can tell so but and yeah good will
points out it also uses rich yeah well it uses rich very cool thing and tested with pi test so
oh my goodness yeah so that's awesome. Anyway,
I am super impressed with this. It's an open source project based on Python, sort of democratizing a
lot of these things. And if that wasn't enough, I think here's one more sort of side story that I
think is interesting. So I'm sure you two have seen, you go, it's not as common as it used to
be, but you go to some open source project
or some application and it says,
buy us a coffee, help make that next feature happen.
This one has a different banner at the top
instead of coffee.
It says, we've just landed our $8.5 million
seed funding round
and we're about ready to get started.
I mean, that's some kind of crushing it
for open source, isn't it?
Yeah, definitely.
That's a lot of coffee.
They're going to be so jittery.
Just like the stock prices.
Exactly.
Look, so much fluctuation.
Oh, no, no, that's just me.
It's actually very still.
Maybe that's why stocks go up and down so rapidly.
Too many traders and too much coffee.
Yeah, that's probably actually true anyway i think this is a
really cool python application it looks well done and it looks pretty modern and yeah it just looks
like a neat way to apply some data science to investing do you have a sense of the learning
curve like is it is it mainly pointed at you know directed at investment professionals or is there
an on-ramp for casual use if you look at their description
it does seem to be focused on casual um sort of a casual use case here um
we let me see it says a terminal built by the community shape our taste
where did i see this somewhere they i can't remember where i ran across it but they do
talk about sort of like individual investors getting access to the tools that the companies at the big, the people at the big banks and hedge funds would have.
So it does sort of seem to be aimed at that.
And my experience is it's pretty easy to use.
I don't know it's easy to understand the output, right?
That's more of an investing economics problem, though.
That's a perpetual problem, yeah.
Indeed. All right. Well, people can check this out if it sounds interesting to them. that it's more of us investing economics problem though. That's a perpetual problem, yeah. Yeah.
Yeah, indeed.
All right, well, people can check this out
if it sounds interesting to them.
Brian Skin, what you got for us?
So my first item is pyproject.toml and pep621
for project metadata in pyproject.toml
coming to set up tools.
So people in Python land are going to be pretty well familiar
with pyproject.toml at this point.
Originally it was the PEP 517 and PEP 518 that created it
and started the basics there.
And then you had Black doing project configuration in there.
And it's kind of been slowly snowballing over the past few years.
And one of the big pushes of PEP 621, who's who of Python packaging authors here,
was trying to standardize project metadata and also standardize it in a way that the metadata
could be specified statically. Because that, you know, for things to get uploaded to PyPI,
if you want to have information about dependencies
or various other things like that,
if you have the metadata specified statically,
it's much easier to get to.
You can trust it more.
And so the PEP, it's defining how
to put project metadata in pyproject.toml,
how to tell the build tools tools like build or flit, what is a static
defined declaratively in the metadata and what's dynamic that is going to be provided dynamically
later on. And a number of tools had implemented pyproject.toml support, things like flit, hatch,
PDM, not poetry yet, though they're discussing it,
but Setup Tools was still missing it.
It's been an issue on the Setup Tools GitHub tracker for a while
and with a lot of discussion there about what it would take to bring it in.
One of the big appeals of moving to this for Setup Tools specifically,
there'd been the move to try to bring static metadata in the setup.cfg.
But in that discussion, there's some problems with the INI format because it's not structured.
It doesn't have good complex data type support. Right. Nesting embedded things don't work.
Yeah. INI has no sense of an array. So if you had a setup.cfg with an array in it,
setup tools actually had to take that
as a string representation of an array
and then arrayify it by executing it basically
instead of the Toml where it actually knows it
as an array in a table.
But in any event, Anderson Bravo Harry has just within the last month or so,
I think it was, finished an experimental implementation of PEP 621 in setup tools.
There was a discuss thread seeking feedback from the community, try it out, report bugs.
I tried it on one of my projects and it mostly worked. I actually turned up a bug that Anderson fixed super quickly where I do dynamic long
description, which turns into the readme for the PyPI page. Do you mean you read it out of a text
file or something? So what I have is I've got documentation links in my readme that point
into the main branch. But when I do a build to PyPI to do a release,
I want it to point to an archival version of the docs
on read the docs.
And so I dynamically do a replace on the docs branch
for those links.
Well, aren't you a special butterfly?
I have complicated needs.
I'm sorry. But so I have that set up and it broke and I reported it and he fixed it. So as far as I can tell, you know, it may be experimental and it probably will change, especially some of the issues around specifying dynamic metadata. But it's at least working reasonably. And so, check it out. If you're using setup tools,
take a look at switching over to that. He made a tool that can convert setup.cfg
to pyproject.toml. The project is ini2toml. And there's some others. You can check the show notes.
I've got a number of things listed there.
Yeah, very cool.
I suspect that INI to TOML
might be more generally useful, actually.
I think that's why he titled it that way
instead of setup.cfg to TOML or whatever.
Right.
Cool.
Yeah, this is great.
More progress on the highproject.toml stuff.
Very cool. Now, this is great. More progress on the highproject.toml stuff. Definitely.
Very cool. Now, before we move on, let me tell you all about our sponsor this week, Datadog.
They've been supporting the show for a really, really long time. Datadog is great. They have a real-time monitoring platform that unifies metrics, traces, and logs into one integrated system. Their APM empowers developers and teams
to identify anomalies and resolve issues
and improve application performance.
So you can begin collecting stack traces
and visualizing them as flame graphs
and organizing them into profile types
such as CPU or IO types of reports.
Teams can search for specific profiles
and correlate them into distributed traces
and identify slow or underperforming code for specific profiles and correlate them into distributed traces and
identify slower underperforming code for later analysis and optimization and with datadog's
apm live search you can perform searches across the full stream of ingest traces of your app over
the last 15 minutes like i need to figure out what the database is doing and the api and the
front end and all those things so try them for free free with a 14 day free trial and data dog.
We'll send you a free t-shirt.
So just check them out and support the show by visiting pythonbytes.fm
slash data dog,
or just click the link in your podcast player show notes to get started.
Nice.
Indeed.
All right.
Right.
Well,
what do you got next?
I've got get,
so this isn't necessarily Python only related, but I use Git a lot.
And I didn't know you could do autocorrect with Git.
So this is Wayland Walker.
I think he's submitted other things to us on the show.
But he wrote this article called Configure Git to Autoc your fat fingers, you know, or just just your sloppy typing.
So so there's this like, let's say you do get checkout dev, but you spell checkout C-H-E-K-O-U-T and misspell it.
Well, git will like tell you that you did it wrong.
And it guesses what you're you're what you meant and tells you
this is a similar command as this um but there's a configuration option that i didn't know about
called help.autocorrect that you can set a timeout and it just automatically runs the command it
thinks you want it um so i'm playing with it and so, I hasn't got anything wrong. So you can, I've set it to one second also,
but you can set it to things like 10 seconds
or I don't know why you'd want 10.
Did you mean form?
Did you mean RM dash RF?
Applying.
Let's just get commands.
It's not everything.
Formatting hard drive.
Get reset dash dash hard.
Oh, yeah.
That one actually would be kind of destructive.
That would be bad.
But I, so I realized that I added this to my workflow, but I realized that I hadn't really talked about my workflow at all on my blog.
So I went ahead and just showed the things that I do normally.
For a quick change, I usually check out main do a pull uh then uh create a branch
with checkout dash b and then uh i commit i usually do commit dash a dash m with a message
um the i want to talk about these that one a little So the dash A, what that does is,
that's that push.
Anyway, I got these backwards.
Anyway, the dash A will just say,
instead of having to stage a file or add them,
so normally you have to add your changes
and then you commit them.
But I just want to,
usually just want to commit everything
that i've changed or delete it also if i delete something i want that to change so the dash a does
that i just learned about that recently so that oh interesting so you can basically skip the get
add dot yeah or something equivalent to that or the get add file names right and the add dot is a
little dangerous because it'll add everything the unst unstaged stuff too. So if you have temporary files or, or just play, you know, you get a test file or a goofy
file that you're just playing out with.
I don't want to add that stuff.
I, I intentionally, uh, add things that I want, or I mean, add what's the other one?
Uh, you know, uh, uncommitted things.
I don't usually want to add that.
So the dash a is nice that it doesn't do
that. And then the the last thing that I did was the the global, there's another configuration
change of global push dot default current. So weird, but what this does is that the current
there's a bunch of values for that I'm going to have a link to the other show notes in the other uh the documentation about all the different values in the show notes but the i
like current because what that says is the branch that i'm using branch name i'm using now just make
that the one on online so if you do or fantastic upstream if you don't do that it says oh there's
no upstream named this branch and And you have to do this.
I'm like, okay.
And you can do it with push.
You can do a dash U in push to make it automatically do that.
But it's just verbose.
And I always wanted to do that.
So anyway, that's my new Git workflow for simple stuff.
I love it.
Very nice.
Yeah.
I really like that current.
Having to do all that extra typing, even with autocomplete, is just annoying.
Yeah.
Brian S., it sounds like you use Git a lot.
What's your view of source control from a chemical engineer perspective?
In that ecosystem, in that environment, how do people view this kind of stuff?
They don't. Basically, I mean, anyone who's familiar with much development probably uses it some.
Actually, there's a 3D physics modeling, multi-physics modeling tool, Comsol, that just added a source control-like feature into it.
So it's starting, you know, the data reproducibility, the history tracking has started to become more of a thing. But yeah,
it's, it's very often the, you know, V2, V3, 2020,
2020 V3 V3 final, final, final.
Yeah. So, I mean, you know, I have, you know,
I have blog posts churning about strategies for version control on data analysis code because of the reproducibility and needing to track environments precisely for reproducibility at a point in the past.
And tagging commits for just like, oh, basically every time I run the code, I need
to know what the state of it was.
And the tooling is not that great for doing that.
At least I haven't found much.
So it's still evolving, I think.
Okay, cool.
Alvaro points out at work, they have a project with 6,000 lines in an I&I final that I&I
to Toml might be just what they need.
That sounds like a lot.
You definitely have to proof them afterwards because there may be some stuff that doesn't
translate cleanly, but yeah.
Yeah.
We need a Tommel to I&I, and if you can round trip it and it's the same, then you're good
to go.
Yeah.
I don't know if that'll work.
Keep your sanity all right this next one's a quick one for me but it'll be useful for people who are working with json web tokens so json web tokens are a thing
that you can exchange with maybe a distributed login system so instead of using like an api key
that you just pass around all the time you could could say, I'm going to either share a certificate or somehow log into some other
system and I'll get back this token that I can share on to other places to communicate who I am,
communicate what roles or permissions I should be granted and so on. So if you work in that world,
you work in a world of dealing with cryptographic signatures and picky algorithms
and stuff like that. So I just wanted to give a shout out to JWT.io. So this is a place that
allows you to decode, verify, and debug JWTs. It's pretty cool. So you come down here and what you do
is you put in some encoded token and you say which algorithm of the encryption
algorithms are using. And then what pops out is the separated JSON result that says,
here's the header. It says what algorithm and what type it is, what version of JWT and so on.
And then what the actual data was like, this person is a subscriber. Their name is John Doe.
Shouldn't scroll it because it doesn't seem to work.
And then here's like the signature
and whether or not the signature was verified
and stuff like that.
So I think that's pretty cool.
You can hit share JWT
and it'll just copy that.
You can send it along.
But anyway, I think if you're working with stuff,
this might be pretty handy.
And while you're at it,
there's somewhere in here, the libraries, you can say, see the
JWT libraries.
And let me make that smaller ish.
So the way it shows it's a little bit weird.
It has the technology and then a whole bunch of checklists.
And if you way go down to the bottom, you can see the actual package name.
So like there's a bunch of.net ones here.
Don't care about those. But the Python ones
are down here and says who's created them, right? Like Simo Source or Michael Davis. And then this
one's called Python Jose JW Crypto or PyJW. And it shows you which algorithms are supported and
how it works and so on. So I think this is pretty cool. If you're going to work with these things,
what do you think?
I don't have a lot of expertise with authentication and tokens of this
sort.
How is this different from something like macaroons where it's more like a
advanced cookie?
Is this separate from the browser or.
This,
this is done in several ways.
I think so.
You can go like to a federated identity provider.
So something like Auth0 or Microsoft Azure Active Directory
or something like that.
Or you could have your own identity provider
from identity servers, one of these implementations.
And basically, it allows you to do single sign-on
and federated sign-on across different platforms without just taking and using straight cookies.
Okay.
So it works both for APIs and for other types of apps.
You can do it within an app or with an API.
So like if I call an API,
if I log in with me and I call an API and I want to communicate onto my
identity, onto the APIs, that API is calling, you know,
it's like those kinds of sort of more complicated scenarios. Yeah. Gotcha. Yeah. Yeah. Anyway,
JWT.io, check it out. What do you got Brian's again? Okay. Um, for my second item, I'm going to
appreciate the opportunity, uh, Michael and Brian Ocken, to do a little bit of self-promotion.
I have a new project I'm calling Jupiter TempFars.
So one of the really powerful things about, you know, Jupyter notebooks are great.
You can do a whole lot with them.
They're obviously being used everywhere, data science, scientific analysis.
And one of the features of at least the Python
kernel of Jupyter is that you have a global namespace that you work in. And this really
adds to the power of it in some ways, because everything you do in the notebook flows from
one cell to another. You don't have to worry about shuttling things back and forth.
But as has come up countless times here and elsewhere, you have namespace contamination
problems where you
accidentally assign something in one cell and then you fuck on yourself because either you use
something and have a typo and accidentally use something from another cell or something's
lingering on and you have the same variable name in multiple cells. And all of a sudden
your analysis behaves funny or it's not reproducible, or you, you know, you close down for the day and start back up and the whole worksheet blows up.
And so what I put together is a, it's a notebook extension for Jupyter.
It's based upon another library of mine, tempvars, which I need to freshen a bit,
but this is a, it's a front end extension for Jupyter.
And so what the underlying library does is you import from tempvars,
you import the capital tempvars context manager. Then I'll just define a variable here.
And then in this cell, I've got as a context manager, tempvars, and I declare to it, all right,
anything, this syntax says anything that starts with T underscore is going to be treated as a temporary variable. And so when I run this, the first line just checks to see if
T underscore A is in the namespace. And it's not because it's inside the temporary variables
context. Then I assign it. And indeed, it assigns. And then when I pop out the back end,
the previous value, five, is now restored to it. So what this does is it,
it makes sure that you don't have contamination coming into the cell and anything you do in here
is reverted to the prior state out the back end. So that's used. Yeah. So that's using the underlying
library, but what I did, it's like, you know, okay, fine. It works, but you have to have this
whole thing that you type out and it's cumbersome. So what the Jupyter plugin, the Jupyter extension does,
is it lets you turn on this toolbar for tags for each cell.
And then if you define a tag with this syntax,
you can also do a tempvars end.
But here, tempvars start, T underscore.
Now this variable will automatically
be treated as a temporary variable. It's no longer
in the namespace when you execute the cell. And what it's doing behind the scenes is it's actually
taking the code, patching the execute functionality for the cell, and wrapping it in a TempFar's
context manager behind the scenes so that anything you use in here, T underscore, is a temporary
variable. You don't have to worry about it getting contamination from
the rest of the namespace. And then just like
the other, it...
Yeah. So
it's brand new. 0.1 is out
on PyPI.
The readme is in order
to satisfy the audience
here. I have animated
GIFs. Are those screenshots
on a UI tool? I love it. Yeah. Animated to boot.
So readme has the user's instructions. It's on PyPI, just a pip install Jupyter temp vars. And
then I have a shortcut script to actually install the extension into your Jupyter environment.
I have a number of features that could be added to it, different things that the underlying library could have added to it.
But I'd really love it if anybody who is intrigued would try it out, find and report bugs, suggest features that you want.
Because, you know, it's a small thing, but it can be a big problem.
And if this could be at least a partial or substantial solution for people, that would be awesome.
Yeah, nice work. This looks great.
Those are good.
Yeah, the problem of having variables shared
across those things
when you didn't intend them to be
so tricky in so many ways.
I mean, Jupyters are like go-to,
Jupyter cells are like go-to statements
with no traceability, right?
Because it's, you could run them down,
then you could go back
and run the one in the middle again, and then you go run another like you need to have except for just a little
in and out numbering like you have no idea the order they ran in yeah notebook hygiene is really
tricky and yeah right now can i feel like i cut you off we can say something oh just uh he commented
that um to satisfy us he's got or the the entire Python community has got animated GIFs.
But to be fair, it's not just technical books and read me.
So I don't use cookbooks that don't have pictures either.
Yeah, that sounds good.
I do read novels that don't have pictures, but so it's not everything.
I really hate the pictures in your head.
I really hate the graphical novels that don't have pictures.
Those are the worst.
They're the worst.
All right.
A real-time follow-up.
Brandon Brainerd, former co-host here says,
this is talking about going back to why JWT over something like cookies.
So imagine having something like auto zero when you log,
maybe alt zero.
When you log in, it when you log in it gives you
back this jwt which has a timeout the front end has this it can send it to your api and then also
it has the signature that verifies it wasn't tampered with uh and you can verify the sender
because you can you know decrypt it and stuff like that okay better. Better chain of custody. Okay. All that tricky, uh, cryptography stuff.
Speaking of,
uh,
other things,
extra things,
you guys got some extras we should cover.
I have a few,
actually some quick ones.
All right.
Bring it on.
So,
um,
we've got,
uh,
GitHub issues are finally live.
So there,
there,
there are Python issues are now on GitHub.
So now we didn't jinx it really, really is there.
So enough said, um, I was, you know, I've used lorem ipsum before.
I think everybody doing front end stuff has, but I didn't know there's a, there's a cool
page like lorem ipsum.com that has some, a translation.
So you can read, uh, what it means.
Um, at least a 1500 1914 translation so
uh it's sort of an interesting read i won't get into it here but it's worth a read if you're
curious uh and then one of the things we do sometimes at the end is funny stuff um and one
of the things we've covered is various o'reillyilly or O'Reilly covers. So I found
this dev to O'Reilly cover generator. I didn't know where it was. Somebody had, and you could
just make up your own. So I made one up, passed it around last night. So it's kind of a fun thing.
Yeah. I pulled that from the show notes and passed it on to my friends.
They have run with it.
They're delighted.
Awesome.
100% test coverage.
You need to test with no asserts.
At least CI is happy.
So anyway.
This is awesome.
How about you?
Got any extras?
I have a few.
Now, your mention made me add a third one.
Or another one, rather.
Let's go here.
So hipster Ipsum.
If you just need a little more pizzazz in that lorem Ipsum,
and you don't want people asking questions,
this is a hipster Ipsum at hipsum.co.
This is a generator.
You can give it your flavor.
So you can go over here and say like
um how many paragraphs we only need two paragraphs and hipster neat or you can do it with a shot of
latin nice and it starts out with i'm baby gentrified tumblr butcher cronut succulents
poor loco subway tile food truck letterpress. Tote bag, tofu.
Anyway.
It doesn't flow quite the same as the Latin, but it works.
Yeah, exactly.
You got the fashion acts and all that.
So anyway, that one's kind of fun.
More seriously, quick shout out.
Worked with Christos Meskis from the Microsoft Identity team, speaking of JWTs.
And he and I just put together, of course,ure APIs with Fast API in the Microsoft Identity Platform.
So people can check that out
if they want to do JWT
and other types of
federated identity
with Fast API.
That's a fun course
we just launched yesterday.
Nice.
Excellent.
Cool.
Yeah, thanks.
And then a quick shout out.
Seth sent over this thing
called Python Virtual ENV
for Windows sorta-ish.
And it's
this idea to bring some of the
PyENV virtual
environment features to Windows. I haven't really
played with this, but
trying, I guess some of the features
there for the virtual environments don't work on Windows,
but his sorta
plugin script does.
You can check that out which i think will
be helpful for some people for the the windows people and you know that's that's it for my items
brian skin do you got anything you want to share as well yep i've got a few quick ones um first of
all uh as many probably know um eva stepped down uh jelaska stepped down as the executive director of the PSF.
I believe it was at the end of last year.
PSF has found their new executive director, Deb Nicholson.
So congratulations to all there.
Yeah, congratulations.
And more generally, PSF has been hiring lately.
Last year, there was the packaging project manager,
Shamika Mohanan.
And the developer in residence.
Absolutely.
They also, there was a posting for an infrastructure engineer
to assist with the facilities that,
the link now 404s,
so maybe they've made their hire, I don't know.
But the posting was there and now it's not.
And then actually in the steering council notes
released for March,
there is beginnings of discussion
about hiring a second developer in residence,
which would be terrific.
So yeah, it seems like it's been a big success.
So getting someone to help Lukasz out
would be really great.
Definitely.
Two more quick things.
One, PyOhio, the regional Ohio conference,
the call for proposals is open. It's going to be a fully virtual conference again this year. So anybody who is interested, submit, submit, submit.
Nice. once, I think, right? Along with Anthony Shaw and Will McGugan. This was a couple of days ago,
Samuel Colvin of Pydantic fame posted this somewhat cryptic tweet here showing over a
tenfold increase in speed for some sort of Pydantic features here. So I don't believe
this has actually dropped yet. This is all I know, but this looks pretty exciting.
The magical Pydantic core is coming.
Yes.
Cool.
I have no idea what it is, but very exciting.
But I want one.
Ten times faster.
Maybe it's the Pydantic pony.
The Pydantic unicorn.
No, that's great.
All right. I got no more extras but i have some jokes
yay bring them all right i think this first one might be from you brian skin is that right
yeah i i can't you want to tell us this joke here give us yeah so it's a it's a riff off of
the the the various elements of a business enterprise trying to bring a product to a customer that's
what they actually want, you know, with the tree and the swing and the armchair swing and the swing
with no ropes and that. This one is more cat directed and the left panel says product features
and it shows this really nice multi-level cat tower with beds and scratching posts and,
you know, very attractive. And on the right,
it says user needs, and it has a cat peeking up out of a cardboard box.
Exactly. Slightly over-designed, would you say?
Just a bit. And, you know, I think there was somebody responded to that. There's a tweet
lower down saying, this is exactly my life. I have an untouched, you know, cat tree in the
corner and all the cat sits in is the box.
So this is also true for children. A lot of times the box is the best part.
Definitely. All right. I brought two more for us just because they're both,
they're all short and I thought this would be fun. So here's one that says junior developer, how did you find the bug so fast? And it has the senior developer who has this sort of lion meme.
I was there when it was written.
Lion, which in the wardrobe reference there, I think.
I think so.
All right.
And then this one, really, I really appreciate this one.
So there's two sort of time-lapsed Google search pages with text overlaid on it.
And it says, 831, C++, c++ hello world 833 alternatives to c++
and of course it's complete with the top std colon colon c out less than less than hello world
less than less than standard out colon colon end out you know the the formal c++ style like as per now or whatever yeah hello c++ hello world
alternatives to c++ all right i'll just leave it with that you guys i had i had one semester
c++ in college and i don't miss the compiler errors at all no yeah c++ is some some wild
stuff you're still working at somewhat i. I did a couple of years of professional C++
and it was okay, but a lot of craziness.
Yeah, you don't have to use the crazy parts though.
So at least in the embedded world,
we use, it's C++,
but we just selectively use the cool features.
Mostly it looks like C.
Yeah, I think C++ is getting a big update as well isn't
it i think there's there's regular updates there's so many new things coming on uh um it it was
fairly stagnant for like like decades and then yeah but in the last 10 years there's been a lot
of new changes i feel like i've read people griping that they're making C++ too much like Python or something.
Adding, I don't know exactly what that means, but, you know.
We propose taking away the semicolons.
What?
Too much.
Too much.
I could definitely get rid of the curly brackets.
Yeah, yeah, yeah. There's a lot of parentheses when you don't really need them.
Yeah.
All right.
Well, Brian Ocken, thank you as always. And Brian
Skin, thanks for being here. Thank you.
Thanks. Thanks for having me.
You bet. Bye, everyone. Bye.