Agents By the Bay: Guido van Rossum
Recording: Agents By the Bay: Guido van Rossum
Right. So, I'm part of the concept, but not part of the I don't use the physical buildings much. Okay. All right. So, I think this is good. So, I'll be sitting next to you and we can look at the camera, we can look [clears throat] at the challenge just having a conversation. Okay? So, Excellent. Uh hello everybody
Uh I'm Alex Robel, the AI community architect at Neo4j, uh the graph database company out of Sweden. And uh here uh with us uh at PyBay, the 10th anniversary, we have Guido van Rossum, the creator of Python. We're very fortunate. Welcome, Guido. Nice to meet you. Uh >> Hello, everyone. And uh we're doing uh uh as a company, we do graph rag and uh we're in the midst of AI. We're just a graph database, but we do a lot of uh integration with open source and it was really great to see you talking about structured rag uh and what was a huge surprise, you're basically one of the cool kids doing AI now by virtue of doing rag
>> [laughter] >> So, uh how did you come to uh do that uh you know, specific project uh in at Microsoft? Ha. Uh the origin is that I had spent almost 4 years working on faster C Python with a great competent team and I thought for myself it was time to uh move on and try something else. And by then, uh this was about October last year, it was clear that that had to be in the direction of AI Mhm. because the whole company was a buzz with AI and like you everybody had every product has to have a co-pilot, basically. >> Mhm. >> [clears throat] >> The year before everybody was running around like headless chickens uh trying to do the same thing. Uh so, I had been playing a tiny bit with AI myself uh uh discovering limitations of embeddings. My Initially, my dream was to write uh sort of a code analyzer that I could ask questions about a large body of code that I had access to, but that I didn't understand
Mhm. Either not at all or not well enough. Uh eventually, I I I wrote three or four versions of that. Uh the first few were terrible. Uh at some point, I gave up. Uh but sort of I had that idea in mind. And I don't exactly know how the office of the CTO uh became my target. I think some people said, "Well, you could go there because they uh they do advanced AI stuff and they would love to have you." Mhm
Uh so I approached the office of the CTO, and he said, "Well, for what you're interested in doing, there are really two projects reporting directly to Kevin, who is the CTO, uh that you might uh be interested in. And so, after working with both projects, I sort of ended up with Stephen Lu's project. Mhm. That's the story. Now, this is great, and I met, you know, your colleagues, and they told me that your group is called AI systems. Mhm. So, is it the idea to do systems like distributed systems or software systems supporting [clears throat] AI, so that's an example, a database indexing information supporting AI. I actually don't know the origin of that term, so I'll I'll decline answering that
>> Okay. I mean, I I like systems, right? Like distributed systems, and you know, a lot of AI is basically data, right? So, not everything is AI, but I think everybody now understands that unless you have data sets, you cannot really do AI. And so, you give examples, right? They have corpus of email or you know, Monty Python text, and so so you you you index and you put from what I understood, right? You put um information before instead of just, you know, putting them as random vectors, you structure them. And and so, by virtue of having structure, they are better searchable Exactly. >> better results. Uh I I want to follow up on so so I come from functional programming background, you know, Haskell, Scala, and all this stuff. And so, I've been, you know, first of all, amazed how Python became the language of AI. And and now like we're all using Python
So, but then I I've seen something interesting. Uh everybody's using Pydantic in AI specifically. And I think the origin, from what you know, apocryphal stories I heard is that LangChain folks were the first to use it. Uh and I think Harrison Chase used this opportunity to learn Python by writing a client for OpenAI. And for some magic they used Pydantic. And so, because LangChain became foundational in open source AI ecosystem, everybody picked Pydantic from this. And so, I think what I've heard from Pydantic, there are 70,000 packages in Python using Pydantic. And so, almost every uh open source AI package in Python is using Pydantic now
So, when Pydantic cuts to major version, so we have Neo4j Python driver package, which is using Pydantic. And we integrate with LangChain, which is using Pydantic. So, we have to have a meeting when they're upgrading the version of Pydantic, we have to go and look at that. So, and Pydantic basically is a is a type system for Python, right? So, this is basically written in Rust. That's not how I would describe it at all, but you're So, I'm curious I'm I'm just curious. So, do you like again, I know as as a guy coming from a type type text very strong with that language as I was looking for familiar things and so I found by identity and then that's I was surprised that it's it's it's been picked up. So, do you think it's but there are other ways to do types in Python. So, I just wonder like what do you think of this phenomenon like rise of identity like do since more and more people use it for all kinds of data, do we need more types? Do we need to annotate data? Like you have a structure if the structure is formally and you use your type script, right? So, type script would like that thing would have a a type in in type script it would be a record
Do you think like something like Python is is is timely? Should be a part of Python itself is if it's used so widely. Like what's your thought on types for Python at this point in Well, you know Python has a static type system. >> Correct. Yeah, which I helped create. Although you kind of let us know is the real creator. I just encouraged him to make it compatible with Python instead of preprocessor. You know, in the Python world nobody wants to use a preprocessor. Right
Anyway, we have that type system and by identity came Oh, yeah. And one sort of more or less accidental property of Python's type system which is in contrast with type script is that Python types are run time introspectable. Right. I don't even remember the reason why we did that except that we put a sort of a fledgling support for type for annotations in functions in Python 3.0 long before we grew this type system. >> Yes. Yes. And sorry for my cough. But sort of by making the the Initially, the annotations were forced to be run time introspectable because it was just an expression that was evaluated
>> Mhm. And that the value of that expression was not used to influence the Python interpreter in any way but it was curled away in a magic attribute of the function. Mhm. called uh dunder annotations. So, uh at some And and sort of as the type system grew, we kept this property of type annotations must sort of leave behind when you evaluate them the normal way just as an expression, Mhm. they must leave behind an object that represents all the aspects of the original uh or at least all the relevant aspects of of the original annotation. Mhm. Like if you if you say this argument is a union of int and string, Mhm
uh you would end up an object that says union and it would have two attributes or a list of attributes that is int and string. Mhm. >> [clears throat] >> And for int and string, we just use the existing uh built-in uh classes. So, Pydantic came along and made good use of that uh run time run time introspection and they I thought in but I'm not an expert on the history of Pydantic. My understanding was that their original application was JSON validation Mhm. for web servers or or like REST interfaces where you could validate that if someone sent you a request and it it was formatted JSON that didn't just parse using the JSON.load because that's kind of a trivial requirement, but that it followed a certain schema and that things in that schema uh were sort of they they added some things to the schema in a sneaky way. Well, there's there's an escape syntax in the type annotation syntax now where they can add annotations like not only must this this be an integer, but it must be a positive integer less than 100 or something like that. And they have like little notations for all that
And so, that made it a very useful annotation language uh for validation of JSON. Which initially, I think, was especially important just for for any web UI. >> Which is yeah, a lot of users JSON and so, speeding up JSON already gives a lot of value. And so, they they made a nice mapping between Python classes and uh JSON data where you can sort of you you can say, "Here's a class and here's a blob of JSON. Now is Now sort of try to make an instance of this class from that blob of JSON and it either gives you a valid instance of the class or it gives you some error that says that JSON didn't actually have all the information I needed." Uh how exactly they then became important in AI, I don't know. Possibly because there's lots of JSON data around in that world. Uh so, if they used Rust just to make it faster. I don't know that their first version was in Rust
>> Yeah, so the I don't Yeah, that's a So, a very good question. Yeah, we have a community conference, you know, in in November area, by the way, and uh Samuel Colvin, the founder, is coming to to talk about it. So, I'll definitely ask him that this because what I found again, I I came to the GenAI uh open source ecosystem uh fairly recently, you know, I was learning communities of people doing like distributed systems like Kafka and Spark and and doing and so but because all the is now Python. So you know I I found that I mean a lot of it all right so it's a huge success. I think Python basically is what facilitated AI on training side to PyTorch is basically the major training infrastructure. The fact that PyTorch existed I think pushed the entire AI community in the direction of Python a little bit. Mhm. The other I think part of that origin story probably has to do with NumPy
Mhm. Uh and it's usefulness for machine learning. Yes. Where instead of JSON data you have data that is like millions of numbers in arrays. Yes. Uh and Python already had a great so solution for dealing with that efficiently. Uh in the form of NumPy. Right
And all of AI is basically matrix multiplication. So if you right if we have matrix multiplication so so I wonder what you think of this because Python I think uniquely of all the languages is interfacing with all kinds of native languages. Right? So in like PyTorch is basically Python API into blob of C++. Yeah I'm simplifying things. And so Pydantic is basically you know using Rust underneath to ingeniously use this annotations. So Python is really flexible it allows you to use things like who knew this annotations would be used for for like embed a new kind of type system and and using Rust or C++ so Python always like interoperate with this. So what like was it your initial intent that it will be effectively an API language or did you just come because of the design? >> [clears throat] >> The design sort of the the the aspect of Python's design that you described is called extension modules or extensions. >> Mhm
That was in the language pretty much from day one. Mhm. Uh >> [clears throat] >> The reason was that I invented Python in the context of a novel operating system that had its own quirky uh IO primitives. And so, I wanted Python to work on Unix, but I was also wanted to Python to work on Amoeba, which was this quirky distributed operating system. Which didn't natively support files or processes, or at least if if when it did that sys calls were totally different. But basically, there was only one type of sys call. You make a request to uh capability. So, >> [clears throat] >> I knew that if I wanted to you wanted to be able to use Python with Amoeba, which was which my stated reason for developing it and uh letting my hobby time with Python uh bleed over in work time
Uh I knew I didn't want to be bake Amoeba primitives into the language. >> Mhm. But I I had to have some way, and so I knew that I had to have extension modules. The initial extension modules weren't even dynamically loaded. You had to sort of edit a little table somewhere in the deep in the source code, and then re- rebuild Python from source. Mhm. Uh it wasn't I think 5 years later or so people started telling me, "Hey, did you know that there's dynamic linking?" And I said, "Sure, send me a patch." >> [clears throat] >> Uh where were we? I think I was >> now basically power >> Okay, the extensions uh because they were always in the language and and sort of quickly gained more power, especially through dynamic linking. Uh uh they've always been sort of a very powerful mechanism to interface Python with everything else in the world, whether that is the Windows file system or the Linux file system or a set of Mac APIs
Uh or a big library that that exists like uh in the early days Xlib was uh an extension, I think. So, you could communicate with an X Window server. Right. And [clears throat] that was always my plan and it was it was also a form of self-defense >> [snorts] >> in the community because there were lots of people who came to me saying, "Oh, Python is great. Mhm. But I can't do this particular thing with it." Mhm. And so having extension modules as an answer where I said, "Well, that is just an API with a bunch of functions. So, you can write an extension module Mhm
uh and sort of invent a mapping between Python objects and types and uh the native objects or data structures of that library. Often they didn't even have objects. So, then [clears throat] you map to uh to tuples or or things like that. >> Mhm. Anyway, that was always my sort of defense against people who said, "We need to change Python to support this or that." >> Mhm. No, you can you can do this yourself. It's even better. >> Then A, I don't have to maintain it or think about how to to implement it
And B, you can have your own release schedule, which is more than uh once per Python release. So, that was at Centrum Wiskunde and Informatica >> at CWI, yeah. So, I wonder, right? So, this sounds like a great place and you know, recently we seen DuckDB, another very efficient compact another thing which developers love. I wonder, what is it about the culture of CWI? Is it pragmatic culture? Like, what what made this place uh the birthplace of Python? Is there something special about it or just serendipity? I would say it was a classic research lab where researchers were given a lot of freedom to sort of develop interesting ideas into working code. There was also a whole the half of the of CWI is very mathematical and abstract. There's some very abstract computer science happening there, too, but there's also a very pragmatic practical uh side of the institute that that sort of built software. Interesting. >> and and sort of So, the develop theoretical work >> releases releases it as open source
When when I started, Python was I think the only the first thing that CWI ever released as open source. >> Mhm. And I'm still [clears throat] sort of I feel so lucky that that they let me publish Python as open source. >> Mhm. The term open source hadn't even been invented, but the concepts were around. >> Mhm. Because uh the X Window System, which was something that we actually worked on. We had people working on that
Uh and that was distributed under very sort of lenient license that later became one of the standard open source license, the MIT license. Right. >> [cough] >> So, I adopted that and uh crossed out uh the regions of uh Massachusetts Institute of Technology and wrote CWI in crayon and that was all we did to the the license. Uh and that that worked well. This is great. Uh one question is, you know, somebody come from functional programming can't help asking and wonder if this is true or not. So, there was like maybe a few years ago there's a apocryphal story that, you know, Python got lambda and map functions and there was a paragraph attributed to you that you regret adding them to Python. And I And And basically it was like the four comprehension >> [cough] >> The four [clears throat] comprehension is easier for developers to read than the map
And I wonder if this is true, if this is something you wrote or this is something somebody made it up. Well, I don't know the particular paragraph, but I do remember expressing at various times some regrets over the particular form that that this little bit of functional programming in Python took because I wasn't myself familiar with functional programming and I think I had a pretty wrong concept of what functional programming was. Mhm. Uh and uh so, initially we had lambda which which is an inline function that is in expression form instead of in statement form. >> Yes. Uh and we had map, filter, and reduce. Correct. Which is practically most of the functional programming for Well, that for most people >> For some people that's functional programming
>> I almost immediately took a great dislike of reduce Mhm. because I could I I wasn't I hadn't grown up with Lisp or APL. Mhm. And as soon as code used reduce even once I would completely lose track of what that meant because I'm I'm used to a certain procedural style of coding and whether it's Algol or Fortran or Pascal or C or C++. That's all the same. JavaScript TypeScript, C#. All those languages use the same kinds of paradigms. >> Mhm
For most of the coding. There are some some of them like Python have have little functional or functional-like corners, but most of the code that you write most of the time is procedural. >> Read loops. Exactly. Exactly. List and arrays and loops. That's That's what makes computers interesting and that that's what they're good at, honestly. Oh, yeah, and if
That's about it. That's right. Functions for abstraction are just a luxury. Fortran had all of this and Fortran is fast. Exactly. Yeah. So, anyway, I I didn't know exactly what I admitted into the language and somehow the person who pushed the idea uh was was very very persuasive. >> Mhm
Uh and came with a complete patch that that applied flawlessly and everything worked as promised and it was understandable. Uh [clears throat] so we put that in. So, I then I started regretting reduce. Then with Python 3 sort of one of in Python 2, one of the warts with the functional stuff was that map and map and filter at least uh produce an entire array. Mhm. Uh which loses a lot of the elegance of using map and filter if you sort of stack them, maybe you write multiple filters and you begin or end with a map or there's a map in there. >> they're not lazy, they're not Exactly. They were eager and so for each level of intermediate result, you get have another array and as long as those arrays are like a hundred or a thousand long, nobody cares, honestly, but if if you have some real data and it's a million lines or a million data objects, then you really don't want to have several arrays of length a million
A million each. Uh [clears throat] all sitting around until you're done with your computation. Right. Uh and so that's why we changed it in Python 3 just like we changed keys and values to of dictionary to also be uh lazy. >> Lazy. Excuse me for a second. I let me make sure that the sound is still >> talking way longer than uh Yes, a little bit longer, but this is interesting. So, you know, yeah, I'll be wrapping up
Uh but yeah, so this is I mean I I really appreciate it because you know, I was always curious and basically what what you know, you said now, I think that kind of confirms this the paragraph was about like this is not Pythonic style. So, like the the full comprehension is just more It [clears throat] does the same thing, but it's more understandable visually for the developers. >> also it can be faster and especially since I think 3.12 or so where Carl Meyer did an enormous amount of work on how list comprehensions are implemented or comprehensions in general. Uh and so to reduce the overhead. But the the the key difference is that when you have a lambda, a lambda is implemented even though it has different syntax, it's implemented as exactly the same as a def. So, it's a function, it has a stack frame, uh it has arguments, it returns a value. The syntax you use to do all that is different, but you can make lambda work pretty hard. >> [clears throat] >> Uh The problem with that is if you have a simple lambda like is lambda x colon is x greater than zero
Because you only want the positive entries from a list. And if you if you call that a million times because you have a list of million floating point numbers that you want uh to filter. That function call overhead cost you way more than all the loop overhead uh together. And so this is where list comprehensions, because they don't have a function call overhead, they don't necessarily have their own stack, can be [clears throat] faster. Makes sense. And what I found personally >> have a lazy version, too. Even though they're called generator expressions, they use the same mechanisms. And the same syntax
You know, I was looking because you know, in the period when I was, you know, switched to Python, I was looking for functional kind of libraries like nobody's really using this. And you know, in Pythonic code people are using [cough] lambdas and map and reduce. They're doing like and I found like actually Because they've been obsoleted by comprehensions largely. Right. Yeah, so that's I mean that's interesting. So that's good, you know, I was able to clarify that for posterity. Uh so I mean so now that you're in you know, like basically, you know, Python has powered a revolution. You're in the midst of it now
You're at Microsoft at the AI systems group. I [laughter] still feel like I'm standing on the sidelines and that's that's where I like to be at this point in my life. I soon I turn 70. It's not a young age, right? 70 is [clears throat] the new 30. So >> [laughter] >> No, I don't feel it that way. I've had a hip replacement. I need a cataract surgery. Uh I got a lame knee or at least a wobbly knee
Uh I need more sleep and I sleep my sleep is worse in quality. So uh I don't feel as productive. My memory is often uh very leaky. I don't remember that won't remember the names of any people I I [laughter] met here. I will [clears throat] I'll remember the faces though. That's easy. >> we we we put them on the graph record. I mean I'm you know Yeah
Uh kind of Well, anyway, I I'm looking forward to retirement in the next few years. >> But still, right? Like I mean I think it's it's amazing. You basically, you know, created the language which is now everybody in San Francisco, everybody in the AI, right? The [laughter] The kids are coming to Python. They don't know what graphs are. So, you know, we're in a graph database. They think graphs are charts. So, THAT WAS MY OH. OH, YEAH, IT'S A TER >> THEY THINK GRAPHS ARE CHARTS
THEY THINK GRAPHS ARE CHARTS. flash But what what's what's I was saying, right? Uh so so what's amazing to me that Python is so ubiquitous. There's a lot of people who never study computer science. They pick it up and they are able to do it. And now because the of vibe coding, right? Whatever it is, like I mean it's uh it's now the like now cloud code, cursor, you know, co-pilot. They're producing like gobs and gobs of Python. Honestly, if you ask them to produce TypeScript, they can do that just as well. >> And they do TypeScript
I I But what what do you think >> Or or almost any other language, I'm convinced. Never tried it, but I'm convinced that they they know all the languages well enough. Maybe you know, I mean maybe this can be like a good question to ask. >> [clears throat] >> So, you know, Eric Meyer, right? Uh Oh, he is like like suddenly a super fan of vibe coding, right? >> He is uh actually uh you know, he's in the community. You know, I met him a couple years ago. He's writing a new language called Universalis. So, his premise is that for AI year, we need AI first programming languages. So, LLM is a runtime
And his language looks like Datalog. So, this is basically a triples, subject verb, you know, object. And so, some of these things can be they can be user-defined function, for instance, right? Like if you need precise precise numerical required. Okay, cool. Yeah. So, [clears throat] this is great. So, the final question is basically, you know, now that basically, you know, so you're basically okay with live coding. It's good for its use like converting things to a thing
>> want to I don't call that live coding because uh I know exactly what the outcome is. And I actually I always go over the diff. And for that particular diff, I knew what to expect. Basically, there would be a bunch of defs that had async in front of them and a bunch of calls that had await in front of them. And those were the only expected changes. Mhm. >> And so, I just sort of page through the diffs making sure that that those were in fact the only changes that had applied. >> Yes
And uh I page through the bottom where that this this this was a lot of pages. Mhm. Mhm. And [clears throat] then I said, "Okay, I can commit this." Yes. And in other cases like that inspect disaster, I also found out just by looking at the generated code or the generated code. So, you reviewed all the all the changes. Basically. Yeah, every once in a while I'm I'm lazy and I think, "Well, it passes the test, so what?" And several times I've regretted that
So, I mean, but this is a great start. All right. So, so given Right, like given the the state we're in. So, we have this whole AI ecosystem, Python basically everywhere, right? And even live coding or agentic coding emerging. So, what do you like we have a lot of students here, right? What what would you what your advice to young people here? What should they study? Like should they study Python? I think everybody should study Python at this point. Like any even if you're non-technical or coming to AI, you probably should study Python. There >> are plenty of people who just don't have a head for coding and who would who you just make miserable if you force them to study Python. So, I would I would take that with a grain of salt
Mhm. Uh in general, I'm I'm a coder. I get endorphins from coding. Mhm. I am not a teacher. Uh I am not a life coach. I have no idea what to tell students. That Did you got it You got to have a more specific question
Someone asked me a similar question like what advice do you have for uh for new engineers? >> Right. And I I gave the exact same answer. And then he started asking and he had specific questions. Actually, he he ended up asking about how I used AI and what I thought of it. >> Uh-huh. And that There I had an answer. Okay. Okay
I mean, from what >> just heard. From what you described, right? Like it sounds to me then folks who do vibe coding should think of this as a as a good use case instead of, right? Like making because a new problem of the code code would make stuff up, but like massive refactoring, massive change, which is kind of well understood, is something that uh is good at, right? So, maybe >> not vibe coding. >> It's not vibe coding. >> That That Yeah. Not all code generated or updated by an LLM is vibe coding. >> Right. >> It's vibe coding when you don't care about what the code looks like. When you don't review that diff
Mhm. You only care if it works. Yes. And if underneath it has written uh million lines of uh spaghetti code, you couldn't care less because the next time you want to change something in that that pile of spaghetti code, you're also going to ask the LLM uh to make the updates. And if in order to add your simple feature, it has to write another million lines of code or well, who cares? Yep. And that is vibe code. That's what you do. And that And that That's I thought where where sort of uh Eric Meyer was was standing on vibe code
>> think that's his idea. I mean Not anymore. Okay, that's >> Yeah, I think I think he delegates that right to LLM runtime. Right, but again, I need to know more, but I think that you know, the the the code which people write is becomes very high level. So, I think the real question now, you know, if the prompts we're writing should be natural language, or should be new AI first languages which will be like English, but more will be like more Prolog-like, which more structured in the prompts and more decomposable. That's I think that's >> I don't know. Now you have to teach people how to write that Prolog, and the first thing they will go to is they will ask an LLM to write the stupid Prolog >> [laughter] >> for them. So, I don't think that that's not a solution at all
I mean, what I started with actually was uh large collection of interfaces and implementation classes that had been carefully coded by a crack team, people who really knew what they were doing. They knew the language, they knew the problem. They were sort of developing answers for the problem as they were going. Mhm. Uh >> [clears throat] >> but they ended up with like a list of public interfaces. These are interfaces like this is the minimum spec for a message. This is the minimum spec for uh conversation. These are the methods on conversations that you can call
These are the types that they return. >> And by and large all I had to do was translate that to Python syntax, which was also a a task that uh a model did pretty well. Mhm. Both especially the specs, but also the the actual implementation code. I definitely had to sort of also review that carefully and catch the occasional weird thing. But Python and TypeScript are close enough together that it wasn't so such a big deal. Mhm. Uh it became harder when I started to add the SQLite uh backend, which meant I had to sort of invent from scratch an API for uh for storage provider
Mhm. And we did a good whiteboarding session with my team over 3 days. Uh I don't know, I think in August or so. Uh where we came up with a rough sketch of the schema and the APIs for that uh that storage provider abstraction. Uh and then it was straightforward to fill that in. And and still the LLM I guess I didn't write carefully enough what I wanted. But I don't think that having to write it in the form of triples would have helped much. Uh [clears throat] but by sort of reviewing what the LLM did and keeping the parts that that were okay, every once in a while I made a small manual correction
Usually I thought, well, if the LLM wrote the code, it can pretty well correct it as well. Uh so, if I saw a typo somewhere, I would just tell it there's a typo on line such and such of this file, fix it. And then it would do it. Yep. Yep. I wonder since you you mentioned translating TypeScript to Python, it just occurred to me that creator of TypeScript is also at Microsoft. Do you talk to him? Do you guys talk? Yes. Yes, well, Steve is also involved, my boss
I don't know if you You know Steve and Nico. Uh he and Anders sort of are together the origins of TypeScript. So, I but I do actually talk to Anders regularly. Uh he was even my onboarding mentor when I started 5 years ago. Interesting. So, this is great. >> He's great guy. I totally agree
I just talked to Steve, you know, because you you know, it made it clear to me that the you know, what you do is basically very suitable for graphs because all the names you extract in the structured information can be nodes and can be the links. So, he's going to look at using Neo4j as a backend as a storage backend. So, I and I will definitely be happy to work with him to see because if we can put all of this into Neo4j, we have all the same markers, but now we can link them. For instance, all the names of a person, we can create a node and so maybe we can take it further and have more fun with it. So, that cuz was my inspiration. >> you could you you could try uh just contributing uh Neo4j storage backend. >> Correct. Yeah
I mean, that sounds like a great thing. So, thank you very much. I think now I understood your talk even better after you explained [laughter] uh hopefully, you know, this Py AI episode will be a nice complimentary, you know, material to the main talk and so we really appreciate, you know, this opportunity, you know, and I'm really happy, you know, to meet you and thank you so much and wish you >> You're welcome. you know, many happy years of contributing to Python and AI. Oh, yeah. Thank you very much. Sorry, it got longer, but you know, I