Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

« Return to show page

Transcript for Episode #228:
Supreme Court decides API copyright battle

Recorded on Wednesday, Apr 7, 2021.

00:00 Hello, and welcome to Python bytes where we deliver Python news and headlines directly to your earbuds. This is Episode 228. Recorded April 7 2021. I'm Michael Kennedy. And I'm Brian I can

00:12 and I'm Guy rice.

00:13 Hey, guy, welcome special guests, guy Roy's here to be part of the show this week.

00:18 Thanks for having me.

00:18 It's exciting. I

00:19 know. That's what they all say. Right.

00:22 It's great to have you here, though. You know, we met on a panel at the Python web conference. And we recently had a Calvin Hendricks Parker here from who was organizing that as well. So you know, a little bit a little more Python web conference going on? Yeah,

00:37 it was good event.

00:38 Absolutely. I want to tell folks a bit about yourself before we jump into the topics.

00:41 Yeah, sure. I'm not, you know, you can see my name right here on the screen. But for those listening, the podcast, my name is Guy. Yes, it's my real name, I sometimes get asked if it's a short for something. It's not, in fact, short for guy Follow me. It's actually just my name guy. I work for Redis labs. I'm a developer advocate there. And I've been doing Developer Relations type of work for, you know, been paid to do it for about five years, I've been doing it unpaid as an unpaid, just fan of doing community things for about 10 years on top of that. So a lot of different tech stacks. I'm not really a Python person by trade, I tend to spend more time in the vile, vile JavaScript space. But But I

01:22 know they're very popular language these days.

01:25 It is. But I know, a lot of different things. I'm a bit of a generalist. So I do think

01:31 how do you enjoy being a developer evangelist seems like a really fun job. It's,

01:36 well, I like to show if the best thing about being a Developer Advocate is that it lets me monetize my narcissism. But the reality of it is, it's I mean, it's actually a lot more work than you think it is fun. But there's a lot of challenge there. And I spent a lot of my time making contents advocating with the product group for, you know, the ways that we should change Redis and our clients and that kind of stuff. And also going out and speaking in events, this obviously has been a very weird year for that. It has, but you know, that's a lot to balance. It's actually kind of a lot of hats to wear. And there's a degree where we're being a generalist is very useful. Like today, I'm spending a lot of time working on a dotnet course, helping someone out with that, because I've got some dotnet experience, but you know, it's, and but then I'm doing stuff in JavaScript. And then oh, let's look at graph databases. And I'm just looking at

02:28 different things. You guys drag to this Python podcast as well.

02:30 Yeah. And then someone thinks I know, Python, and put me on this podcast, you got a couple of good items to talk about,

02:35 I think. All right, well, cool. Welcome, Brian, want to kick us off here?

02:41 I can't believe it's already March, April, I was gonna sit sorry,

02:44 for March, and it's actually blown out. So.

02:48 So here's a article called the how to make awesome Python package how to make an awesome like Python package in 2021. And this is, um, I really love this article, because it's kind of my workflow. I've just never written it down. And so I'm really grateful for Anton for writing it down. I'm also grateful to john Michell on Twitter to post that to so that I could see it. So it's great. I really love it. Anyway. Well, so what is this, it isn't about how to make an awesome package, it's all of the extra stuff is the workflow. So we he starts in, he starts just like at the basics, just stubbing a package. And I really, actually really liked it. This is this is where you start. So the start was in using just grabbing a directory and stubbing it out, and then having an Dunder init file, and in an initial file that just does like has one function you can call just so that it's something there. And it actually throws a not not implemented yet. exception, which is, that's a great thing to throw, right? And then pardon the birds. I didn't even

03:58 record it from Hawaii. So it's fine.

04:01 Yeah, he's got a virtual background to make it look more more mundane tropical birds.

04:05 Yeah. So then using flit to, to package it up, and then go ahead and publish or not published for real published to the test by PII repository, which I love this workflow, if you're gonna plan on sharing something, just go ahead and do this right away. The one thing missing there is go ahead and check the real peipsi to make sure your project name isn't taken already, or else the test might work, but your real one won't. So adding that in is a good step. But then

04:36 I was blown away at some of the Python packages that are still available, like secure, right? I mean, that's not available now. But there was a thing that got to just call it call itself secure. Like a couple years ago, how is that still a thing right? Oh my god.

04:50 Yeah. So one of the one of the tricks with doing the test pi pi though, is getting your is getting the pi pi RC correct. So He talks about how to do that. And then publishing using flip publish. And then, you know, adding, adding more detail like, now you actually have to implement so an implementation of something and then push it to the real repository. And then, you know, then everything else is like extras. And he lists them as dependencies almost like adding a readme in the change log in. And then, you know, linters, and tests, testing, you should maybe test earlier than this, but setting up talks and make files and cloud building and the whole gamut. This is a really great, comprehensive article. And you can, what I like is you can start at the beginning. And if you're not even publishing publicly, if you're just publishing in house, this still makes sense up to up to a certain point. So this is great. Yeah, we

05:49 think really good advice. I love having a well structured projects. Where, yeah, if I have a problem where there's something I want to do I know right where to go, I don't need to go through all the coders like, here's the 50 lines of code that could possibly be about this. Let me go find it and get started. Guy. What do

06:04 I this is? I like that it's an awesome Python package. And it's not about the contents, it's about the stuff around it. Right? This is the kind of stuff that is just noobs need this? Right? Yeah, it's just these. These are exactly the sorts of resources like the finest the here's the canonical way to do this thing. Well,

06:21 right. And a lot of times the tutorials are like, well create the one file. And that's what you do. Go and that I feel like that kind of leads people down the wrong path a lot of times, so yeah, love it. All right. Well, I think I got the next one here, Brian. Okay. Cube Stryker, as in Kubernetes. So this is a security tool for anyone who is running or being a tenant on a Kubernetes cluster. But it's really fast way to audit an existing Kubernetes clusters or best practices. And like all beautiful repositories, it has an animated gift. So you don't have to read anything. You just watch it for a while, like, Oh, this is what it does. That's kind of cool. Maybe I'll use this. Yes, we love those who

07:01 are listening. There's an animated GIF on the screen right now.

07:04 That's right. Absolutely.

07:05 You should totally see it. It's amazing.

07:08 Yeah, guy. I mean, sometimes we cover they'll be like UI frameworks, like, Oh, we built this whole UI framework, we do this thing. And there's like, no screenshot or no way to see that what it looks like, well, if it's about the UI, we should probably see some pictures. So Brian and I are always on a bit of a kick about this. Yeah, yeah. So performs a bunch of in depth analysis on self hosted Kubernetes on Amazon, Eks, Azure Eks. A suspect pretty much you name it, the Eks. It'll do it. Let's see if I can find where it talks about the things that it does. Yeah. So it scans your infrastructure. Like I said, it checks for various services and open ports tells you that they should or shouldn't be open. It looks for insecure things, or readwrite. Or you can even set it up to be read only. And it can check. You know, give it like lower permissions. And it'll still do that. It'll look for misconfigured I am settings identity from Azure, sorry, AWS, misconfigured containers, pod security policies, network policies, and extra privileges, all that kind of stuff. So running containers is pretty easy. Running containers in Kubernetes is pretty easy running a Kubernetes cluster. Not easy. There's a lot going on if you're the one running the Kubernetes cluster. And so here's a really nice tool that you just point at your cluster and say, How am I doing? Right? Give it a quick check to see if anything's wrong. Yeah, thanks, you guys a guy you do anything with Kubernetes or Docker or things like that.

08:34 I do basic developer things that developers tend to do with Docker. containerization isn't necessarily my jam. I mean, you know, I certainly will spin up a Redis instance, for example, using Docker or something like that, because it's super convenient. But beyond using some basic Docker compose, I don't do much of anything.

08:51 Yeah, same. Same here. I feel like every time I start to work with it, I go, this is really neat. But it feels like I'm just moving code complexity to DevOps complexity. And I'm better at code that I'm at DevOps. So let me not do that.

09:02 But you got to write it down somewhere, right? At the end of the day,

09:06 exactly, exactly. Alright, so guy, you got this next one here. This is something I'm pretty excited about. I'm a big fan of possibility of web assembly. Sounds like you are as well.

09:17 Yeah, I'm an enormous fan of web assembly. And I mean, there's a couple of reasons for that. Some of it is that it kind of reminds me of the early days, like, like in the 80s. When I was learning programming, I got into 6502 assembly language. So that low level, machine level coding has got a, it's got a nostalgic joy to it. And so webassembly has drawn me in if you don't know much about webassembly, just just put context around it. webassembly is byte code for the browser. That's where it started. The idea is, is you can take some code, write it in C or rust or some higher level compiled language. And then you get a bunch of bytecode a binary file that can be downloaded and run from the browser. So that's webassembly in 30 seconds.

09:58 Yeah. People have been Done really crazy stuff with things like astm.js, where they're like, oh, let's take some code and send it over to some fancy JavaScript that then will compile it in Java. And there's just all this wild stuff that you can do. And it's really, really impressive. But this is like, you know, if you're gonna do that, let's make this an actual thing that's actually expected to be this runtime, this low level runtime it Yeah, it's

10:21 cool. Well, and it turns out, it's actually a lot more performant to, I mean, I've seen benchmark, say, as much as 20%, faster, all the way up to 20 times faster. But regardless, they always say faster, which is good.

10:33 And smile are probably coming down as binary bits and probably loads faster, doesn't have to get it. Yeah, it gets there.

10:38 Well, and it's, it's just another file that can be served from the file server. So or from the web server, so it can be cached and all the other things that you would do with any web content. So lots of advantages and optimizations to be had.

10:49 Right? So what's the thing that you're you're telling, so

10:52 some time, he says, Hey, we built this bytecode for the browser 1000 Times said, you know, what, if we put the bytecode wherever we wanted, and instead, so in much the way that node brought JavaScript to the server side, wasn't trying, why sometime brings webassembly to the server side by adding IO capabilities. And by adding a command line tool that can run it by adding runtimes that you can load up in other languages. So why hasn't time is simple as this as you've got a web assembly module, and you say, Why hasn't timespace in that module on the command line? And it just runs it? And does whatever it does.

11:29 And there's different languages supported, right?

11:31 Right. So and this isn't language support from a take that language and compile to webassembly. This is take webassembly modules and run it in those environments. So in rust, Python, go dotnet. And in C, although it's not listed here on the screen, there are runtimes that you can load up, load webassembly module from whatever you know, read it from the file system, read it out of whatever, right and instantiate that web assembly module and run it. And so

11:58 yeah, so if I found like a cool library, it happened to be written in rust, and it has a web assembly version, I could then use that in Python.

12:05 Absolutely. I've ever, I've actually done a web assembly text format, which is the assembly language to go with web assembly. I've used that to compile simple modules to just like add numbers and stuff like that, and then loaded that up from Python code. And I actually even run it inside of Redis. But yeah, so now all of a sudden, it brings that those compiled chunks of code that that are really just data, you can hand them around any way you want, and bring them into all these different platforms. That's pretty cool.

12:36 Yeah, this is really neat. Brian, what do you think

12:38 I'm just the the, the intermediate part to where you can, you can have a group of people like even if it's not some third party packages, just within one company that can write in whatever language they want to write in, and then have an intermediate language that you can, you can glue it all together, down the pipeline. I think that just makes people more efficient. I'd like to see that that sort of take off. I think it's a neat, neat place to go.

13:03 Yeah, guy could I use this to say if I had like a dotnet library, a go library and a rust library? And I was writing in Python? Can I bring those all together to interoperate with this thing?

13:13 In theory, I mean, there's a lot of a lot of work involved to do that. And there are limitations out of the box web assembly, just like out of the box JavaScript didn't have any kind of IO, because you don't need IO in a browser, you have fetch right you know, that's that's all the IO you get. webassembly is the same way. But webisode at some time is support sports to the Lassie standard. All these things start with W, they're actually kind of hard to say. And what you see is the web assembly systems interface, which gives you file IO and will eventually give us network IO. Right now it will support reading and writing sockets, but it won't support opening a socket. Listen. So that's frustrating.

13:57 That extra ability, though, that actually kind of scares me a little bit. And then I'm concerned about the security part, since you're grabbing some binary blob, or it says a sim webassembly. blob is still not human readable. Right? So how do I know it's not going to be a virus or something like that? Yeah, that's,

14:14 that's actually totally legitimate concern. It's, it's honestly echoes the same concerns that we had with Node. js, when it first came out. It's like, cuz, cuz in the browser, it's all nice and neat. And sandbox, right? Yeah. And as soon as JavaScript escapes the browser and got under your server side ever, it's like, well, we can pull JavaScript code and call eval on it from anywhere, like, Well, yeah, you could. And so it's the same. I think we end up in the same situation where it's got the same caveats once we go there. You know, you know, I guess the advice is don't run strange code. Right? Yeah. But these are particularly like a JavaScript. You can look at it and say, you know, I see what's going here and I suppose if it's minified, that's not that easy, but it was WebAssign It's actually just bytes is even harder. It's even more opaque. Yeah,

15:03 yeah, there's so much stuff going on the supply chain space now. Right. ipi there was the bhp itself got a backdoor put into it, but luckily never got into any other releases. But yeah, I mean, it's a good concern, Brian are a valid, certainly it is still good. Yeah, absolutely. You know what else is cool, Brian, this episode is brought to you by you and me this time. So the cool things we're doing, I wanted to tell people, if they want to take some Python courses, they can check out talk and just click on courses. And we got a bunch of new ones and a batch release a brand new free course that people will be able to check out as well, probably I'll be able to talk about that next time. But it's on the data science side. That'll be a lot of fun. And then people want to test things. They should probably test it with PI tests, so they can check out your book as well.

15:51 Yeah, that'd be great.

15:53 sponsors. Thanks.

15:56 Yeah. And I can't wait to get back to conferences. So I get back to handing out stickers and stuff that was sort of in great. Yeah, I

16:02 know. Matching that with other people. So crazy.

16:05 Yeah, I am into myself, but you know,

16:09 I'm a risk of becoming agoraphobic at this point. Yeah. Yeah, I'm fully

16:14 so I wanted to talk about something cool that Anthony shot put together. So he, I just saw about this. I think he don't you use dependent but, um,

16:25 I Oh, yeah. My, my Monday morning means go in and like close 20 prs, and about four of them are conflicting with dependable. Were dependable was the other PR that also did the PR that conflict with? So yeah, I've got this special relationship. But I'm still very glad to have it there. Because it's fantastic to know there's a security problem for this thing, fix it now. That's really good to know.

16:47 Yeah. So okay, so I probably have a bad one to introduce the dependent bot side. So this is we're actually talking about bit depend a lot. But But depend a bot, if people haven't heard it, like the 90 times we've talked about it. It tells me what it does, it goes out and checks to

17:05 know it looks at it even supports different languages, the Python world that means if it sees a requirements dot txt, or it sees like pi, or whatever, it will look in there for pinned versions, if they're not pinned, it will pin it to the current version, and then submit that change to the requirements, that txt is a PR. If they are there, and it sees there's a new version of that library, it will do a PR and in the PR, it'll say things like, here's the change log and all the commits, since the last time you use this library, here's the release notes around this library, click this button to apply the new, you know, upgrade you're pinning. So you know, requests equal equal something higher than it is currently, automatically to your system. So that's the job depend about the thing, the complaint is that if I've got a requirements, txt file with 30 packages in it, I am 10 of them change I get 10 prs instead of one PR with 10 changes, add. Okay,

18:03 yeah, well, just

18:04 like with each other, because they're like all like right by each other. And like, as you accept them, they start to like get merge requests, you got to merge conflicts you got to resolve and anyway, that's, that's this deal. But that's what it is.

18:15 So this depends a lot bot is a bot that looks at all of this, and decides and you create a list to say some of my dependencies can be automatically figured out. And then like, say talks, so you're not you're using talks, but it you're not really using it, you're using it to test and stuff, you're not using it for everything. So like, that's an example, and the dependent a lot. But make sure that the PR request from depend upon if it passes the tests, it goes ahead and merges it to that's really all it does. And I think that's cool, too, just because that's what I would do if, if I got one of those PR requests, I would make sure it all works fine. And then probably in some of them, I would probably just push through if I trust the where it comes from and stuff. So

19:05 yeah, exactly. It's a well known package, and chances are, it's gonna be fine, right, like bodoh, from AWS. Or it's fine to take it.

19:12 Yeah, and especially the tools around your project or or your, you're only using a little part of something, as long as your test pass, it's probably gonna be fine. Things like updating Django, you may want to have some more manual procedures for that. But something something some minor thing, like I'm only using, you know, a fraction of a package, go ahead and update it and see if the test passes.

19:35 Yeah, exactly. I totally agree. Guys, one space has more dependencies than Python. It's got to be JavaScript.

19:42 Got the truth? Yeah, you know, my interaction would depend on the vast majority of my repos online, our sample codes to go with talks and videos and that kind of stuff. And I always get dependable notifications for Hey, this project that you did a year and a half ago that you forgot about it That tends to be my interaction with the pen devart I can see how something like this would be very useful. I don't know that. I don't know. It might be something I could use to just have to think about those old packages anymore. That seems like this could be really helpful. Yeah, I do like that the guys the deal developers name is Tony baloney. That's a fantastic username, by the way. Yeah, he's

20:18 been on the show. He's a great friend the show.

20:21 Yeah. I've never met him. I just think that's really funny. Kudos.

20:26 Yeah, like it's really cool. I want to check this I'm definitely think I'm putting this

20:30 putting this up. probably do it. Like, for example, things like talks and pi test, and my testing tools and linters and stuff like that. I definitely want to just update those like, and try. And if it doesn't, if I'm always going to update those if there if there's a new one in it, and everything passes.

20:48 Yeah, let's roll it back then work. Yeah. And tangentially related Dean out there says you can't seem to be able to pip install dash e dot bracket extra. But then he quickly posted his own little fix that Oh, in z shell, you got to escape the brackets? No one else there's trying to do that. That's great. But yeah, well done on this, Tony. Anthony, this is really, this could be a dream. If this works, the way I see it working, I will be so happy my Mondays won't be like, Well, here's the next hour merging prs and resolving its own self conflicts. So I'm excited. Very cool. All right. Well, what is the next one, I want to take us a little bit like take a step back just a little bit from low level tech and talk about the Supreme Court of the United States. Brian, I want to talk about this too. I also want to take you back to the early 2000s. I mean, this is like early days in my programming career, honestly. But here we are with a ruling about something that happened in the early 2000s. And what it is, is that way, way back, son created Java, Google with a career I actually whoever created Android, I think before Google bought them created Android and said, you know, it'd be cool if we could program this with Java, and use the API of Java. So the common ways to like write files and open sockets, all that kind of stuff, just make it exactly what the the Java Runtime libraries do. But they did not actually take Java, they actually re implemented it from scratch. So none of the runtime details had anything to do with Java. But the API the way you talk to, it looked just like the Java base class library library. So Oracle buys Java. Oracle thinks that's not super cool. We weren't part of that action, sues Google for copyright infringement by using the Java API's. And so then this throws a huge uncertainty into the space of basically all these libraries, right? What if, what if I want to create a new way web framework, and the way it works is a little bit like flask, but it turns out that flask copyrighted, you know, the way it uses decorators, you know, app dot route or whatever, and then I get sued. That seems that seems weird, right? Yeah. So does that mean that he's a good guy?

23:01 So does this mean that this ruling mean that you can't copyright an interface? In essence?

23:06 Yes. Well, the rulings interesting because it didn't actually address the copyright ability of API's, they said, potentially, they still could be copyrighted. But the use of the API as I described it, in the beginning of like, this is the way you talk to it, not the implementation, but the way you speak to the thing. They said that that is fair use. So when things are copyrighted, you're allowed to speak about them in limited ways. You're not allowed to take a movie and publish it. Yeah, republish it, but you're allowed to take a scene of it and analyze it and, and maybe have that soundtrack, that 32nd soundtrack or something like that, right. So that'd be fair use. And so they said, the way in which they're using API's is like fair use, and they, they talked about the knowledge, having a thing, you might copyright the thing, but having knowledge how to operate the thing that you can't copyright. So like knowing how to drive a car, you can't copyright that. And so having the API without the implementation is kind of like the knowledge of how to operate the thing that the API goes to. But the API itself is fair use, which is pretty interesting. So I guess this just sort of put the bow on it is, the Supreme Court ruled that Oracle's suit is dismissed, they cannot sue Google. And it stopped actually, a huge wave of lawsuits over followed around all sorts of different things for all different sorts of people. So I think I'm happy with this.

24:29 I think I am to actually, I mean, if I, if I were to sum up everything I just heard, what I heard is reverse engineering is fair use.

24:36 Yes, that sounds about right,

24:38 and so forth, just like the the Twitter version of this ruling.

24:42 You know, the example that came to mind for me and it this is a thing, like this exact example, that was the lawsuit, it seems really clear to me that it shouldn't really, I don't think that should be a thing. But on the other hand, you know, AWS was hosting, like reselling the open source free of MongoDB as a service, without paying any money to the MongoDB folks who actually created it maintained it, they change their license. And so what AWS did was kept the API for MongoDB identical, but reimplemented, the database server in their own version, I feel like that's a real interesting example that's a little more close to the edge. It's like, Well, here's an open source project that built something neat. Here's somebody who was literally running it, and taking profits off of it. Exactly. And then then they sort of changed it to this mode. And it now it's okay. And I think it probably is okay. Although I feel like Redis could get itself into the same situation, probably, unless the license already explicitly says that you can't do that.

25:44 The only module, the only licenses we have this specifically explicit that are the ones for the modules which extended extend, extend Redis Redis, itself is open source, and so on. And does have an implementation of Redis that they sell.

25:58 Okay, yeah. Towel out there in the live stream says, you know, another example would be AWS, AWS could sue all the other places like linode and digitalocean. and stuff that offer s3 compatible storage. That's such a good point. Yeah, right. Like they both both linode and digitalocean, have something that's like, like s3, and you literally can talk to with a Boto three, API, because it on the surface it is s3. And so there's another example of something that is spared being destroyed.

26:30 Yeah, in the courts, okay, hope this holds up. I really want API's to be something that you can't copyright this,

26:37 I think this is it. I think this is it. I mean, this, it, actually Google one, and then it was overturned by a higher court and a Google one again, that was overturned by a hardcore and it like, literally worked his way all the way to the Supreme Court. And then this is it. And the Supreme Court operates so much on Brett appriver, prior rulings and precedent and stuff, and that it's very unlikely that it could be changed at this point.

27:01 And the entire, the entire like story of Java is just riddled with these gross lawsuits. And it's just, I just have to shake my head about it. It really would be nice if it had a nicer history, I think people would be, you know, trashing Java a lot less at this point. But

27:19 yeah, we come up with other reasons, it wouldn't be a problem.

27:23 Ben Thompson from strategic theory had a really interesting analysis. taking apart what the Supreme Court said, one of the things they focused on was the, the meaning and the essence of copyrights, like the reason to have copyrights is so that somebody might invest 10 years in something that could easily be copied, copied, but doesn't yet exist and had sort of drive innovation. And they talked a lot about the Supreme Court talked about, does this application of copyright actually benefit or restrict innovation? And it was interesting that they were actually thinking in those terms, not just like, well, what is the legal definition of copyright, but they're like this would be very harmful to so many people if it went the other way. So we got to consider that as well. And let's see Dean Dean says, So Java lost this close case. I guess the case is now public static void

28:09 is final.

28:11 Yeah. Exactly. Exactly.

28:16 Cool. are apparently right now the Supreme Court factory, so you know,

28:20 yeah, yeah, we've got an ice Supreme Court and the Supreme Court factory generates ice Supreme Court implementations. And we got a Supreme Court

28:28 guy, every manager. Yeah. Gosh, yeah, that's

28:31 a no, I don't know. That's, that's too far too far down.

28:36 The bridge too far, isn't it? Yeah,

28:38 it definitely is. Alright, guy, you got the last word here? And I'm not sure I pulled it up. Like make sure I got it pulled up. Here we go. Yeah. So you already talked about how you work for Redis. and machine learning is absolutely front and center in the Python world. And you guys are doing some interesting stuff there. You wanna tell us about it?

28:58 Yeah. So I sort of mentioned this earlier. But it's kind of good segue is Redis has modules, which are, you know, things you can use. They're like plugins to extend what Redis can do so you can use like a module, this graph database. And so now, boom, we got new, some new types and some new functionality. We can do graph databases, or time series or whatever. And one of the modules of this Redis lab, and this is part of Redis. A standard, anyone can create a module in any way, there are lots of open source ones out there. Redis labs has a few that we've created. One of those is red, Sai and red Sai turns reticent to a model server. The idea is that I can take the binary output of a model in there's TensorFlow, or whether it's pie torch, or whether it's an onyx model. And for those who don't know what onyx is, it's the open neural network exchange, which is a standard Microsoft put together for models. So sort of like a universal model standard. Then just like in an S in XKCD. It's like there's too many standards. We need a new one to bring He's all together. onyx has created yet another standard.

30:04 Yeah, exactly.

30:05 So it's just what always happens, right? But Retta supports those three model types. So you can take an onyx model, for example, and load it into Redis. And then you can use Redis commands to, to execute that model. And so it provides a nice little abstraction. And the thing that's cool here, I think, is that normally, if you want to bring AI into your application, as a developer, you have the data science team, they build, they do their thing, they build their models, and you get these binary files out. And then you need to bring them into your application some way. And there's a few ways to do that, right, you can, you can just wrap it up in a in a, you can containerize it and make a little flask app around it, which is a really common solution. There are other model servers, you can just put it right in your application, but then you have to use Python, which is well, not a terrible problem can sometimes be a problem.

30:51 Not using Python, you may see it as like, wait a minute, this is gonna be a big change.

30:55 And so the thing that gets me excited about Redis AI, which is kind of not the thing that gets my bosses excited, but it's the thing that gets me excited, is that because we support onyx, the data science team can build their model and convert it to onyx. And they sort of have a universal standard. So they can pick whatever techstack they want. As long as I can spout out onyx model, and then Redis Redis being Redis. It's got a client for every language under the sun. So if you're, you know, using Haskell, for example, you know, if there's a Redis client for I don't know that there's a Redis client for Haskell, but there is, its odds are there is then you can get to that model from whatever language you're at, regardless of what that data science, you know how amenable to data science tooling, that platform is, and so it creates a nice architectural layer of abstraction. So that's actually why I think it's kind of cool about Redis. AI. It just provides that it that that abstraction that makes the developers and the data science folks both not have to well speak the same language in a lot of ways.

31:53 Yeah, that that's really neat. And it sounds to me a lot like what HTTP API's did previously, right? And if you wanted to talk and talk to somebody, instead of directly plugging in that library, or exchanging some binary data you like, Alright, everybody's gonna just agree on JSON. Why didn't they agree on dates, but come on. Other than that, it's working out just fine. We're just gonna exchange this. And that'll be the way we can talk to it. And nobody worries about what language you're using to consume that API. It's like, that's your problem. Hopefully, your language has a nice way to do that. Yeah,

32:24 it's, it's just one more thing. The other thing it does, which I think is kind of interesting, is that it introduces a new data type. So the models as inputs and outputs take tensors, they put in a couple tensors as input to your model, or one or however many you need, and then your output will be whatever tensors make sense. And, and the tensor is just to, you know, I think I think the word cancer is, I'm gonna say pretentious. I'm probably gonna anger a lot of people by saying that, but because really what a tensor is, in practical terms, is just a multi dimensional array, right? You know, you got a tensor that's got a particular shape, it's just like, well, this is an array that's 10 by five by three. And it's, it's, that's all a tensor is. And so it sounds all mystical, but it's really just a multi dimensional array that's been handed in. But because tensors tend to be the things that are put into and taken out of machine learning models, read Sai has a tensor data type. And so you could use that capability in Redis, as well, if you needed to store multi dimensional arrays in Redis. You've got a type that does that now. And so even if you didn't care about the data science, the the, the predictive capabilities that model hosting, that's the word I'm looking for in Redis. API, you can still use the tensors for various data storage, Jesus.

33:37 Yeah. So yeah. Okay. Interesting. Yeah. So you kind of hijack the data type as well. Yeah. So yeah, this looks really interesting. I think it's, yeah, people should check it out if they're doing machine learning and sharing their models across different technologies or processes.

33:50 Yes, I'm excited about her.

33:53 I'm excited because I use multi dimensional arrays. And now I can call myself a data scientist.

33:58 That's right. Yeah.

34:02 Awesome. All right. quick follow up. Before we get to the extras in the joke.

34:06 I'm more of more of a mad data scientist. Yeah.

34:11 You know, army captain says Sorry, I'm late, doesn't depend on optionally auto merge. If ci passes, yes, but you got to have ci running on that project. And so like, if you've got, like, I have a 3040 repositories that have courses, I don't set up ci for the courses like what does it even mean to have ci for the courses, but I get dependent bought stuff all the time on that, because, you know, it's checking the repository for the requirements file. So you know, sometimes you can't get it auto merge. But, you know, there's certainly circumstances where it doesn't if it would just put it in one PR. Here's the 10 changes like I put that actually as an issue on the dependent bought itself and people voted at common are like yes, this please. Apparently not yet. Anyway, any what the Anthony's done is pretty excellent. Hi, Brian. That's it for all of our main items, right unless I lost track.

35:00 Yeah,

35:00 got any extras you want to throw out there?

35:02 Don't I just been working a lot

35:05 about you got extras, I got plenty. So recently did a cool episode over on talk Python about diving into the get the dot Git folder. And like all the internals of what Git does there, and one of those pieces mean if you want to go in there and look and see how basically understand how Git itself works, and then all the storage stuff, like how they all come together. And one of the things that got a nice shout out there is Git for Windows at Git for Windows org. There's like a special version to install for Git. I think this actually might have come from Chris Moffitt, even some sort of follow on conversation or something. But wherever it came from, if you're doing Windows you want to still get this is kind of a cool way to do it as well. If you're not doing something like chocolaty,

35:42 I use it every day. And it gets on Windows. Yeah, it's a requirement.

35:46 Yeah. Nice, very cool. Jupiter lab three is released. So this one comes to us from Alan Hansen. And Thanks for pointing this out. It's a little bit, a little bit old couple, couple months, but still very cool that Jupiter lab three is out, you can check it out and see all the new changes that come along, including a debugger. debugger, how about that? table of contents, multiple languages, all sorts of cool stuff. So this looks like a major release. And if people who love Jupiter labs, check it out on code spy charm? Yeah, that's right. It's, it's on its way. And speaking of pi charm, I've got someone that Brian skin also did a follow up to the previous episode, maybe the one before that, where we were talking about, like, you know, really, it's great that I think this is when we had Sebastian Ramirez on and we were talking about Google becoming a visionary sponsor of Python, which is great. And it's really cool that a couple of companies have done that. But then we also pointed out that, you know, Bank of America has like insane amounts of stuff that they depend upon. JPMorgan Chase, their core trading engine, some of it is all by like, some of these companies that make huge amounts of money, and fundamentally depend upon Python itself, generally don't support by that. I mean, I don't know to the degree to which those two companies do, but you don't see them at the top of those sponsorship lists. And you know, like, Google's was something like $300,000 a year. That's the biggest corporate sponsor in the world, right? Can we do more to Brian skin said, Hey, I wrote a letter for people. And he shared it, where it just said his beer recipient, given the appreciable business value that we derived from Python, and its related scientific tooling over the last few years, at no direct cost to the company, will there be room for bracket company to contribute to financial aid to the 501 C, three organizations that support these tools? Here's a list. Here's how I basically wrote like, a template letter that you can send to your company, decision makers, to encourage them to support Python and other open source projects. Yeah, this is great, though. Well, then Brian, that's pretty cool. Alright, Django, three, long term support releases out. So if you're on a slow roll with Jango, you're ready to roll on the new version. So this is something you can safely adopt for the next three years. And and stay happy but on a brand new version of Django. So check that out. Pi charm, here you go guy told you would come out by charm. 20 21.1 is out. And they've got some really cool stuff in here. Really neat things, including the code with me stuff is now out. So code with me is I fire up pi charm, or any of the IntelliJ based things and I say, Hey, I would like to say program with Brian, Brian, could you help me work on the Python bytes website. So I could send you a link. And we would both have like, like Google Docs. But in Python, like where we see each other typing, we can follow each other along. You can debug the code, but it's running on my machine, for example, even as voice call video call built into Python alongside that,

38:48 really, it's like a Skype client, or you know,

38:50 it actually looks like Skype. I couldn't be sure, because I haven't tried it yet. But I looked at the UI that you get. It's like a little inner panel. It looks like an embedded Skype. Interesting. Yeah, yeah. I Well, those are all the extra things for me as well.

39:03 Well, I wanted to bring up so he reminded me of that the Google fund thing that when adding, you know, Google give PSF a bunch of money. Well, what the PSF is doing with it is they're hiring a developer. So nice. I'll drop the link. So psfc hiring a developer and residents to support to support c Python. So this is a good thing. Yeah.

39:25 Awesome. That's really cool. Ding langsam also says pi con. I L is in a month, so yep. Awesome. Check that out. And then he also asked about what about the in browser pi charm, which we did cover but that was it's of course, kind of experimental phase. I would definitely if possible, recommend this code with me thing over that because then you get the real pi charm. It just happens to be like this live exchange was the other one. There's a lot of setup and whatnot. And it had the this is a private, not necessary, private, but this isn't a beta don't depend on it sort of way. But this is officially this other thing is released. Got anything else you want to throw out there for the world for the listeners while you're here?

40:04 That really comes to mind. But thanks. Thanks for having me. I see our schedule. We have a joke coming next. Is that true?

40:10 We we do have a joke coming next. We actually have to I believe I'm gonna fire up mine first. This one I have

40:16 a job as well. If you if you don't mind. Don't worry safe.

40:19 Yeah. Perfect. All right. So Brian, you're a fan of him, right? Yes. Okay. So Anthony Shah same Anthony Shah as the depend a lot, but we were just talking about wrote a little one liner that fits nicely in Twitter, vim, colon, the original escape room.

40:38 That's an old joke.

40:40 I love it, though. I love it. And of course, you put it on April 1, because you got to do something funny then. Right?

40:45 Yeah.

40:45 And how about you got one here?

40:47 Oh, yeah, it was just added. So this this this is? So the the ancient software development stands for happiness.

41:00 sighs Yeah. Dean also just wants to point out that i l Israel, which I did think that was but I wasn't 100% Sure. So I

41:09 wasn't sure what that was Israel or Illinois.

41:11 Yeah. Israel. Perfect. I would love to go there, but probably not traveling right now.

41:16 I want to go there eventually. That's actually where Redis Labs is headquartered.

41:19 So Oh, is it interesting. I've had some really great vacations in Tel Aviv hanging on the beach. I can't wait to get back.

41:25 I gotta say we're excited to go to Illinois.

41:29 Yes, you know, Chicago would be nice. Maybe?

41:32 Yeah.

41:33 I just can't wait to get to Peoria. Yeah. Well,

41:37 I actually, actually, I've spent a lot of time in Peoria. Yeah. But I've probably hit my lifetime limit. I don't need to go. I wouldn't take a vacation is a nice place, but I wouldn't travel too.

41:48 Yeah. So so my joke is, well, it's for you. What's a what be a pirate's favorite programming language?

41:57 hybrids? Favorite programming language?

41:59 c da, you ruined it. So that the light supposed to go is I say what would be a pirate's favorite programming language? And you both in simultaneously go are? are right, because? Yeah, and then and then the response for me is I you might think it'd be rmat. But as first love B to C, and

42:24 the audience's calling

42:29 works great live, because you know, you get an audience that they'll shout back the answer. Yeah. Because they just can't help themselves. And then you you surprise them with the the twist

42:39 was a trick question because ours is not a programming language.

42:47 Well, it's been nice talking to you, Brian. I saw what I would want to work in honestly, it's I mean, I know it's popular was popular in data science stack. But it's, it's, I mean, it's got one based arrays. I mean that that's right up there with BB six.

43:06 I've never even tried it. I just I haven't made anybody mad today. So I need to fill my quota.

43:12 It doesn't have like web clients and stuff like that. So you can build web servers. It's the full fledged language, but I've never done anything more than attend a one hour talk on language.

43:21 Yeah. Yeah, I haven't either. All right. Well, guys, thanks so much for being here with us and Brian, as always great to

43:28 get to talk.

43:29 Thanks for having me.

43:31 Thanks. Thanks, everyone, the live stream as well.

43:33 Bye. I'll see ya.

Back to show page