Python Bytes - #279 Autocorrect and other Git Tricks

Episode Date: April 15, 2022

Topics 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)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 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.
Starting point is 00:00:22 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.
Starting point is 00:00:42 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
Starting point is 00:01:01 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.
Starting point is 00:01:37 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.
Starting point is 00:01:55 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,
Starting point is 00:02:35 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.
Starting point is 00:03:00 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
Starting point is 00:03:46 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.
Starting point is 00:04:35 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,
Starting point is 00:04:57 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.
Starting point is 00:05:53 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.
Starting point is 00:06:35 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.
Starting point is 00:06:51 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.
Starting point is 00:07:07 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
Starting point is 00:07:45 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.
Starting point is 00:08:17 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
Starting point is 00:09:16 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.
Starting point is 00:09:51 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.
Starting point is 00:10:04 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.
Starting point is 00:10:21 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
Starting point is 00:10:57 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.
Starting point is 00:11:26 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
Starting point is 00:11:48 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,
Starting point is 00:12:25 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
Starting point is 00:12:48 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.
Starting point is 00:13:27 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.
Starting point is 00:14:03 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
Starting point is 00:14:49 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.
Starting point is 00:15:45 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.
Starting point is 00:16:00 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
Starting point is 00:16:32 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
Starting point is 00:16:57 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.
Starting point is 00:17:20 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.
Starting point is 00:17:35 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,
Starting point is 00:18:27 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.
Starting point is 00:18:41 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
Starting point is 00:19:13 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,
Starting point is 00:19:44 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?
Starting point is 00:20:18 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
Starting point is 00:21:01 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.
Starting point is 00:21:19 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?
Starting point is 00:21:42 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
Starting point is 00:22:45 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.
Starting point is 00:23:07 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
Starting point is 00:23:35 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
Starting point is 00:24:25 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.
Starting point is 00:24:53 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.
Starting point is 00:25:08 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
Starting point is 00:25:40 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,
Starting point is 00:26:00 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
Starting point is 00:26:23 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,
Starting point is 00:26:54 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
Starting point is 00:27:30 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.
Starting point is 00:28:07 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
Starting point is 00:28:54 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,
Starting point is 00:29:37 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
Starting point is 00:30:06 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
Starting point is 00:30:21 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.
Starting point is 00:31:03 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
Starting point is 00:31:19 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.
Starting point is 00:31:50 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.
Starting point is 00:32:10 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
Starting point is 00:32:38 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.
Starting point is 00:32:55 All right. Bring it on. So, um, we've got, uh, GitHub issues are finally live. So there,
Starting point is 00:33:02 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
Starting point is 00:33:30 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.
Starting point is 00:34:08 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?
Starting point is 00:34:18 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.
Starting point is 00:34:41 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.
Starting point is 00:35:09 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
Starting point is 00:35:30 and other types of federated identity with Fast API. That's a fun course we just launched yesterday. Nice. Excellent. Cool.
Starting point is 00:35:38 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
Starting point is 00:35:52 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
Starting point is 00:36:12 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,
Starting point is 00:36:46 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.
Starting point is 00:37:02 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.
Starting point is 00:37:19 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.
Starting point is 00:38:07 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.
Starting point is 00:38:22 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,
Starting point is 00:39:02 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,
Starting point is 00:39:39 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++
Starting point is 00:40:08 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,
Starting point is 00:40:55 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.
Starting point is 00:41:31 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.
Starting point is 00:41:43 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.

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