YouSaid · the spoken record

Travis Oliphant

lines on the record
265
first
2021-09-23
most recent
2021-09-23
sittings or episodes
1
sources
podcast

Every line below is reproduced as it was said and linked to the record it came from. Nothing here is summarised or generated. Directory · Search · Corrections

  1. To write a compiler and then have it be spaghetti code. Like the passes become challenging. And we ended up with three versions of Numba. Numba got written three times.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  2. Very fragile, very substantive. The subset it would actually compile was small. And so if you wrote Python code and said Decorate code with an at and then a name. The at jit would take your Python function and actually just compile it and replace the Python function with a Another function that interacts with this compiled function. And it would just do that. And we went from Python bytecode, we then we went to AST. I mean, writing compiler is actually, I learned a lot about why computer science is taught the way it is, because compilers can be hard to write. They use tree structures, they use all the concepts of computer science that are needed. And it's actually hard to, it's easy to...

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  3. That could work early. Like one of the challenges of any kind of new development is if you have something that to make it work, it's going to take you a long time. It's really hard to get out off the ground. If you have a project where there's some incremental story, it can start working today and solve a problem. Then you can start getting it out there, getting feedback. Because Numba today, now Numba is nine years old today, right? The first two, three versions were not great, right? But they solved a problem. And people could try it. We could get some feedback on it.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  4. Yeah, so there isn't much, actually. You don't, it's kind of magical in the sense that it just looks at the type of the objects and then does type inference to determine any other intermediate variables it needs. And then it was also because we had a use case that

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  5. For loops, scalar arithmetic, you know, typed, you know, really typed language, a type subset. That was the key. So you didn't have to spell all the types out because when you call a function, so Python is typed. It's just dynamically typed. So you don't tell it with a types are, but when it runs, every time an object runs, there's a type for the variables. You know what it is. And so the design goals of Numba were to make it possible to write functions that could be compiled and have them use for numpy arrays. Like they needed to support NumPy arrays.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  6. And the first version is like this works, and it produces code that's fast. This is cool for, you know, obviously a reduced subset of Python. I didn't support all of the Python language. There had been efforts to speed up Python in the past, but those efforts were, I would say, not from the array computing perspective, not from the perspective of wanting to produce a vectorized improvement, they were from the perspective of speeding up the runtime of Python, which is fundamentally hard because Python allows for some Constructs that aren't you can't speed up like it's this generic variable so I from the start did not try to replicate Python's semantics entirely. I said I'm going to take a subset of the Python syntax and let people write syntax in Python, but it's kind of a new language really

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  7. But so we're trying to do something. We were trying to change the world. Peter and I are super ambitious. We wanted to make array computing and we had ideas for really what's still the energy right now. How do you do at scale data science? And we had a bunch of ideas there. But one of them, I had just talked to people about LLVM and I was like, there's a way to do this. I heard about my friend Dave Beasley at a compiler course. So I was looking at compilers and I realized, oh, this is what you do. And so I wrote a version of Numba that just basically mapped Python bytecode to LVM.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  8. Equal zero, return one, otherwise do sine x over x. The challenge is you don't want that loop peg one in Python, so you want to compile version of that, but the vectorize in NumPy would just give you a Python function. So it would take the array of numbers and at every call do a loop back into Python. So it was very slow. It gave you the appearance of a UFunk, but it was very slow. So I always wanted a vectorized that would take that Python scalar function and produce a UFunc working on native code. In fact, I had somebody work on that with PyPy, see if PyPy could be used to produce a UFunk like that early on in 2009 or something like that, 2010. It didn't work that well. It was kind of pretty bulky. But in 2012, Peter and I just started Anaconda. We had, I just learned to race money. That's a different topic, but I'd learned to, you know, raise money from friends, family, and fools, as they say. It's a good line.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  9. Great. Yeah. Yes, that's what the argument. And the reality was people would write high-level code and use compiled code, but there's still user story, use cases where you want to write Python, but then have it still be fast. You still need to write a for loop. Like before Numba, it was always don't write a for loop. Write it in a vectorized way, put it in an array. And often that can make a memory trade-off. Quite often you can do it, but then you maybe use more memory because you have to build this array of data that you don't necessarily need all the time. Numba was, it started from a desire to have kind of a vectorized that worked. A vectorized was a tool in NumPy. It was released. You give it a Python function and it gave you a universal function, a u funct that would work on arrays. So get the function that just worked on a scalar. Like you could make the classic case was a simple function that an if-then statement in it. So sine x over x function, sync function.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  10. The open source ecosystem is not, it's not there. Currently, one of the problems we're solving is hiring people all over the world because it's a global effort. And I've had the chance to work and I've loved the chance. I've never been to Iran, but I once had a conference where I was able to talk to people there and talk to folks in Pakistan. Never been there, but we had a call and there are people there, like just scientists and normal people. And there's a certain amount of humanizing, right? That gets away from the, like we often get the memes of society that bubble up and get discussed, but the memes are not even an accurate reflection of the reality of what people are.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  11. Agreed, I think. Agreed. There's an old adage that nations that trade together don't go to war together. I've often thought about nations that code together. Because one thing I love about open source is it's global. It's multinational. Like there aren't national boundaries. One of the challenges with business and open source is the fact that well business is national. Like businesses are entities that are recognized in legal jurisdictions and have laws that are respected in those jurisdictions and hiring and yet

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  12. Could be added in NumPy. But one of the challenges again, how do you fund this? Like I said, one of the tragedies, I think, is that I never had the chance to, I was never paid to work on Umpi, right? So I've always just done in my spare time, always taken from one thing, taken from another thing to do it. And at the time, I mean, today it would be the wrong day I'm today, like pay me to work on Umpi now would not be a good use of effort. But we are finally at Quan Site Labs. I'm actually paying people to work on Numpi and SciPy, which is, I'm thrilled with. I'm excited by. I wanted to do that. That's why I wanted to do from day one. It just took me a while to figure out a mechanism to do that.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  13. Yes, there's a project called Labeled Arrays. Like very early it was recognized that, oh, we're indexing NumPy with just numbers, all the columns, and particularly the dimensions. I mean, if you have an image, you don't necessarily need to label each column a row, but if you have a lot of images or you have another dimension, you at least like to label the dimension as this is x, this is y, this is z, or this is give us some human meaning or some domain-specific meaning. That was one of the impetuses for pandas, actually just, oh, we do need to label these things. And label array was an attempt to add that lighter weight version of that. And there's been, like, that's an example of something I think NumPy could add.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  14. Right. Do you really understand the notion of a hash map and how the dictionary is implemented? But you're right. Dictionaries are good examples of an abstraction that's powerful. And I agree with you. I agree. I love dictionaries too. It took me a while to understand that once you do, you realize, oh, they're everywhere. And Python uses them everywhere too. Like it's actually constructed, one of the foundational things is dictionaries and it does everything with dictionaries. So it is. It's powerful. Order dictionaries came later, but it is very, very powerful. It took me a little while coming from just the array programming entirely to understand these other objects like dictionaries and lists and tuples and binary trees. I guess I wasn't a computer scientist. I started arrays first. And so I was very array-centric. And you realize, oh, these others do have purposes and value, actually. I agree.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  15. Takes about two hours if you have many machines, maybe you can get it down to one hour. But to compile all those libraries, it takes about a while. You don't want to do that at runtime. You don't want to do that all the time. You want to have this pre-compiled binary available that you're then just linking into. So there's real questions about the whole source code is running binary code is more than source code. It's creating object code. It's the linker. It's the loader. It's the how does that interpret it inside of the virtual memory space? There's a lot of details there that actually I didn't understand for a long time until I read books on the topic and it led to the more you know the better off you are and you can do more details but sometimes it helps with abstractions too.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  16. But then we would get 100 times faster over that using just compilation. And what we do is compile the loop from out of the interpreter to machine code. And then that's always been the power of Python is this extensibility so that you can, because people say, oh, Python's so slow. Well, sure, if you do all your logic in the runtime of the Python interpreter, yeah. But the power is that you don't have to. You write all the logic, which you do at the high level is just high-level logic. And the actual calls you're making could be on gigabyte arrays of data, and that's all done at compiled speeds. And the fact that integration is, one, can happen, but two, is separable. That's one of the language like Julia says we're going to be all in one. You can do all of it together. And then there's the jury's out. Is that possible? I tend to think that you're going to, there's separate concerns there. You want to pre-compile, in fact, generally you will want to pre-compile some of your loops. Like SciPy is a compilation step to install sci-fi.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  17. Exactly. In fact, that's where some of the edge cases boundaries are that, well, they're still there, and this is where array scalars are particular. So array scalers are particularly bad in the sense that they were written so that you could optimize the math on them, but that hasn't happened. And so their default is to coerce the erase get there to a zero-dimensional array and then use the numpy machinery. That's what, and you could specialize, but it doesn't happen all the time. So in fact, when we first wrote Numba, we do comparisons and say, look, it's a thousand X speed up. We were lying a little bit in the sense that, well, first do the 40x slowdown of using a race scaler is inside of a loop. Because if you used to use Python scalars, you'd already be 10 times faster. Yeah.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  18. They don't have to worry about the fact that, oh, this could be an object with many pieces. The UFunk machinery is also generic in the sense that typecasting and broadcasting, broadcasting's idea of I'm going to go, I have a zero-dimensional array, I have a scalar with a four-dimensional array, and I add them. Oh, I have to kind of concourse the shape of this guy to make it work against the whole four-dimensional array. So it's the idea of I can do a one-dimensional array against a two-dimensional array and have it make sense.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  19. So, what happens? The Python scaler gets broadcast to a zero dimensional array, and then it goes through the whole same machinery as if it were a 10,000-dimensional array. And then it kind of unpacks the element and then does the addition. That's not to mention the function it calls, in the case of square root, is just the CLIB square root. In some cases, like Python's power, there's some optimizations they're doing that can be faster than just calling the CLIB square root.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  20. And just automatically paralyze that problem. That's what, and so functions in Numpire called universal functions, u functs. So square root is an example of a u func. There are others, sine, cosine, add, subtract. In fact, one of those first libraries to sci-py was something called special, where I added Bessel functions. And all these special functions that come up in physics, and I added them as u functs so they could work on arrays. So I understood u funks very, very well from day one inside of numeric. That was one of the things we tried to make better in NumPy was how do they work? Can they do broadcasting? What does broadcasting mean? But one of the problems is, okay, what do I do with a Python scalar?

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  21. The power of arrays is really that you can write functions using all of it. It has implicit looping. So you don't worry about I write this n-dimensional for loop with four loops, four four statements. You just say, oh, big four-dimensional array, I'm going to do this operation, this plus, this minus, this reduction. And you get this, it's called vectorization in other areas, but you can basically think at a high level and get massive amounts of computation done. With the added benefit of, oh, it can be paralyzed easily. It can be put in parallel. You don't have to think about that. In fact, it's worse to go decompose your write the for loops and then try to infer parallelism from for loops. That's actually harder problem than to take the array problem.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  22. No, I was a Latech user myself. And so I have a lot of respect. And he did more than that, of course. Yeah, someone I really appreciate in the computer science space. Yeah, I don't think that's appropriate. There's a lot of little things like that where people actually, if you understood it, you go, yeah, of course that's the case. And the other part I didn't mention, and Numba was a thing we wrote early on, and I was really excited by Numba because it's something we wanted, it was a compiler for Python syntax. And I wanted it from the beginning of writing NumPy because of this function question.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  23. Like for somebody like if you're trying to optimize your path, I mean, I agree, premature optimization creates all kinds of challenges, right? Because now, but you may have to do it.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  24. And so you're really taking lists of thousands at a time and doing work on it. Yeah, you could be faster just using Python straight up Python.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  25. So, on that point, if you use a NumPy math function on a scalar, it's going to be slower than using a Python function on that scalar. But because the math object in NumPy is more complicated. Because you can also call that math object on an array. And so effectively, it goes through a similar machine. There aren't enough of the, which you would do in, you could do, like checks and fast paths. So yeah, if you're basically doing a list, if you run over a list, in fact, for problems that are less than a thousand, even maybe 10,000 is probably, if you're going more than 10,000, that's where you definitely need to be using arrays. But if you're less than that, and for reading, if you're doing a reading process and essentially it's not compute bound, it's IO bound.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  26. Yes, correct. No, exactly. Maybe this is an essential part of it. Because I do think about that in terms of I currently have an incubator for open source startups. What I'm trying to do right now is create the environment I wished had existed when I was leaving academia with NumPy and trying to figure out what to do. I'm trying to create those opportunities and environments. And that's what drives me still is how do I make the world easier for the open source entrepreneur?

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  27. It had more people, so more volunteer labor, but it was still fun in the sense that at least Guido had a job. And I've learned some of the behind the scenes on that now since talking to people who lived through it. And maybe not on air, we can talk about some of that. But it's interesting to see. But Guito had a job. But his full-time job wasn't just work on Python. He had other things to do It is wild, isn't it?

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  28. Exactly So it really, the challenge was it was, but it also illustrated a truism that when you have inertia, when you have a pot, when you have a group of people using something, it's really hard to move them away from it. You can't just change the world on them. And Python 3, you know, made some, I think it fixed some things Guito had always hated. I don't think he didn't like the fact print was a statement. Wanted to make it a function. But in some sense, that's a bit of gratuitous change to the language. You could argue, and people have, but one of the challenges was that there wasn't enough features and too many just changes without features. And so that empathy for the end user as to why they would switch wasn't there. I think also it illustrated just the funding realities. Like Python wasn't funded. It was also a project with a bunch of volunteer labor.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  29. To make it worth anybody using it, right? And then three, four started to be, oh, yeah, I want that. And then three, five as the matrix multiply operator. And now it's like, okay, we got to use that.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  30. Yeah, tons of lessons. Well, I mentioned here earlier that NumPy was written in 2005. It was in 2005 that I actually went to Guido to talk about getting NumPy into Python 3. Like my strategy was to, oh, we were moving to Python 3. Let's have that be. And it seems funny in retrospect because like, wait, Python 3, that was in 2020, right? When we finally ended support for Python 2, or at least 2017. The reason it took a long time, a lot of time, I think it was because one of the things is there wasn't much to like about Python 3. 3.0, 3.1. It really wasn't until 3.3. Like I consider Python 3.3 to be Python 3.0. It wasn't until Python 3.3 that I felt there was enough stuff in it.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  31. There's a part of us that will enemy, you know, friend enemy. And we see, yeah, it's like, why are we wiring on the enemy front? So, why are we pushing that? Why are we promoting that so deeply?

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  32. And there's often very few. Like, I was playing a role in that boundary and working everything to try to keep up with even what Gita was saying. I'm a C programmer, but not a computer scientist. I was an engineer and physicist and mathematician. And I didn't always understand what they were talking about and why they would have opinions the way they did. So you had to listen and try to understand. Then you also have to explain your point of view in a way they can understand. And that takes a lot of work. And that communication is always the challenge. And it's just what we're describing here about the negativity is just another form of that. How do we come together? And it does appear we're wired anyway to at least have a

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  33. I totally agree. Totally agree. And I think that's very, and so that happens in the space. But Python has done a reasonable job in the past, but here is a situation where I think it's starting to get this pressure where it didn't. I didn't know enough about what happened. I've talked to several people about it, and I know most of the steering committee members today one person nominated me for that role, but it's the wrong role for me right now, right? I have a lot of respect for the Python developer space and the Python developers. I also understand the gap between computer science developers and array programming developers or science developers. And in fact, Python succeeds in the array space, the more it has people in that boundary.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  34. And maybe for other, you know, maybe that doesn't happen for everybody, for whatever reason, their past or their experience of people, they sometimes have bad. So they immediately attribute to you bad intentions. You're like, where did this come from? I mean, I'm definitely open to criticism, but I think you're misinterpreting the whole point. Because I would get that. Certainly when I started Anaconda, I've been, sometimes I say to people, I know I'm care enough about entrepreneurship to make some open source people uncomfortable. And I care enough about open source to make investors uncomfortable. So I sort of create, you create kind of doubters on both sides.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  35. You mentioned the letter I wrote in Umpire at the time. That was a hard time. I mean, you know, there's been really hard times. It was hard. You get criticized, right? And you get pushed, and you get not everybody loves what you do. Like, anytime you do anything that has impact at all, you're not universally loved, right? You get some real critics. And that's an important energy because it's impossible for you to do everything right. You need people to be pushing. But sometimes people can get mean. People can I prefer to give people the benefit of the doubt. I don't immediately assume they have bad intentions.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  36. Right, and without it, I would have been lost, but he was willing to at least try to write this post. And so he's been motivated early on with Python. There's a computer science for everybody. He kind of had this early on desire to, oh, maybe we should be pushing programming to more people. So he had this populist notion, I guess, or populist. Engaging with contributors sufficiently to, because when somebody engaged with you and wants to contribute to you, if you ignore them, they go away. So building that early contributor base requires real engagement with other people. And he would do that.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  37. It's a lot better they did. And also, Antoine Petro and Stefan Craw actually fixed the memory view object because I wrote the underlying infrastructure in C, but the Python exposure was terrible until they came in and fixed it, partly because I was already NumPy and NumPy was the Python exposure. I didn't really care about if you didn't have NumPy installed. Anyway, Guido opened up ideas, technologically brilliant, like really I really got a lot of respect from him when I saw what he did with the type class merger thing that was actually tricky, right? And then willing to share, willing to share his ideas. So the other thing early on in 1998, I said, I start wrote my first extension module. The reason I could is because he'd wrote in this blog post on how to do reference counting.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  38. And he'd defer. One place where he didn't enough was we missed a matrix multiply operator, like that finally got added to Python. But about 10 years later than it should have. But the reason was because nobody, it takes a lot of effort. And I learned this while I was writing NumPy. I also wrote tools to Python. I became a Python dev and I added some pieces to Python, like the memory view object. I wanted the structure of NumPy into Python. So we didn't get NumPy into Python, but we got the basic structure of it into Python. So you could build on it. Nobody did for a while, but eventually he database authors started to.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  39. That was good. And over the years for Guido, I learned, so he was open. Like he was willing to listen to people's ideas, right? And over the years, now generally, you know, I'm not saying universally that's been true, but generally that's been true. So he's willing to listen to defer like on the scientific side, he would just kind of defer. He didn't really always understand what we were doing.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  40. Yeah, yeah, a lot, actually. I've been a fan of Guidos. You know, we had a chance to talk some, I wouldn't say we talk all the time, not only at all. But we talk enough to I respect his, in fact, when I first started NumPy, one of the first things I did was I asked Guido for a meeting with him and Paul Dubois in San Mateo. And I went and met him for lunch. And basically to say maybe we can actually part of the strategy for NumPy was to get it into Python 3 and maybe be part of Python. And so we talked about that. That's cool and about that approach, right?

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  41. Well, he was kind of saying he'd retire, but it's literally been five years since I last sat out and really talked to Guido, right? Guido is a technology expert, right? So I came, I was excited because I'd finally figured out the type system for NumPy. I wanted to kind of talk about that with him. And I kind of overwhelmed him.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  42. Yes, I think they're doing well. I really like some of the stuff they've been doing. They're still working and they've, you know, they've hired Guido now and they've hired a lot of Python developers.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  43. Right. And the offer was coming from someone two levels down from him. Right. And if it came from Scott Guthrie, so I got a chance to meet Scott Guthrie, great guy, I like him. If it offered to come from him, probably would be at Microsoft right now.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  44. Right. I mean, I didn't succeed in the early days of getting enough financial contribution in Umpi so that they could work on it. I couldn't work on it full time. I had to just gotcha an hour here, an hour there. And I basically not liked that. I've wanted to be able to do something about that for a long time and try to figure out how, well, there's lots of ways. Possibly one could say, you know, we had an offer from Microsoft early days of Anaconda, 2014, the offer to come by us, right? The problem was the right people at Microsoft didn't offer to buy us. And they were still, it was really, we were like a second, they had really bought, they just bought R, the R company called, it was not R studio, but it was another R company that was emergent. And it was kind of a, well, we should also get a Python play, but they were really doubling down on R, right? And so it was like, it was where you

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  45. Exactly, which has been some of the challenge I've faced in the sense that I would look at some of the experiments, like NumPy, the fact that we have the split is a factor of I wasn't able to collect more money towards NumPy development.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  46. Whereas Google and TensorFlow, they're really eager to have user community users. People use it and build the infrastructure, but it's much more wild. Like it's harder to become a contributor to TensorFlow itself.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  47. Fortunately, you know, they adopted Keras as their, and Keras is better. And so Keras, TensorFlow is reasonable. But they bolted it on. Facebook did too. Like Facebook had their own C++ library for doing inference, and they also had the same reaction they had to do this. One big difference is Facebook maybe because of the way it's situated in part of FAIR, part of the research library, TensorFlow is definitely used. And they couldn't just open it up and let the community change what that is because I guess they were worried about disrupting their operations. Facebook's been much more open to having community input on the structure itself.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  48. But I went to a talk given at Majorca in Spain, and great guy. I came and gave a talk and I said, you should never show that API again at a Pi Data conference. That's terrible. You're taking this beautiful system you've created, and you're corrupting all these poor Python people, forcing them to write code like that or thinking they should.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  49. It's nice to have come together. Exactly. I agree. And I think, but it was interesting to hear the stories. I mean, TensorFlow came out of a C++ library. Jeff Dean wrote, I think. There was basically how they were doing inference, right? And then they realized, oh, we could do this TensorFlow Then, what was interesting to me was the fact that both Google and Facebook did not, it's not like they supported Python or NumPy initially. They just realized they had to. They came to this world and then all the users were like, hey, where's that NumPy interface? And they kind of came late to it and then they had these bolt ons TensorFlow's bolt on, I don't mean to offend it, but it was so bad that it's the first time that I usually saw, I mean,

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source

  50. It's a lot worse. Now, there's a lot more people, so perhaps the industry can sustain more stacks, right? There's a lot of money, but it makes it a lot less efficient. I mean, this. But I've also learned to appreciate it's okay to have some competition, it's okay to have different implementations, but it's better if you can at least refactor some parts. I mean, you're going to have to be more efficient if you can refactor parts.

    2021-09-23 · Lex Fridman Podcast · #224 – Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming · IDENTIFIED FROM THE TRANSCRIPT · source