back to index

Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming | Lex Fridman Podcast #224


small model | large model

link |
00:00:00.000
The following is a conversation with Travis Oliphant, one of the most impactful programmers
link |
00:00:05.400
and data scientists ever.
link |
00:00:08.000
He created NumPy, SciPy, and Anaconda.
link |
00:00:12.880
NumPy formed the foundation of tensor based machine learning in Python, SciPy formed
link |
00:00:18.080
the foundation of scientific programming in Python, and Anaconda, specifically with Konda,
link |
00:00:24.040
made Python more accessible to a much larger audience.
link |
00:00:27.640
Travis's life work across a large number of programming and entrepreneurial efforts
link |
00:00:33.560
has and will continue to have immeasurable impact on millions of lives by empowering
link |
00:00:39.080
scientists and engineers in big companies, small companies, and open source communities
link |
00:00:45.360
to take on difficult problems and solve them with the power of programming.
link |
00:00:50.480
Plus, he's a truly kind human being, which is something that when combined with vision
link |
00:00:55.960
and ambition makes for a great leader and a great person to chat with.
link |
00:01:00.720
To support this podcast, please check out our sponsors in the description.
link |
00:01:05.080
This is the Lex Friedman podcast, and here is my conversation with Travis Oliphant.
link |
00:01:11.720
What was the first computer program you've ever written?
link |
00:01:14.600
Do you remember?
link |
00:01:15.600
Whoa, that's a good question.
link |
00:01:16.600
I think it was in fourth grade, just a simple loop in basic.
link |
00:01:21.240
Basic.
link |
00:01:22.240
It was written on Atari 400, I think, or maybe it was Atari 800.
link |
00:01:26.880
It was part of a class, and we just were just basic loops to print things out.
link |
00:01:32.160
Did you use go to statements?
link |
00:01:34.440
Yes.
link |
00:01:35.440
Yes, we used go to statements.
link |
00:01:37.400
I remember in the early days, that's when I first realized there's principles to programming
link |
00:01:43.200
when I was told that don't use go to statements, those are bad software engineering.
link |
00:01:48.360
It goes against what great, beautiful code is.
link |
00:01:51.800
I was like, oh, okay, there's rules to this game.
link |
00:01:54.760
I didn't see that until high school when I took an AP computer science course.
link |
00:01:58.240
I did a lot of other kinds of just programming and TI, but finally, when I took an AP computer
link |
00:02:03.480
science course in Pascal, that was Pascal.
link |
00:02:07.560
That's when I, oh, there are these principles.
link |
00:02:09.920
Not C or C++?
link |
00:02:10.920
No, I didn't take C until the next year in college, I had a course in C, but I haven't
link |
00:02:17.040
done much in Pascal, just that AP computer science course.
link |
00:02:21.400
Now, sorry for the romanticized question, but when did you first fall in love with programming?
link |
00:02:26.880
Oh, man, good question.
link |
00:02:27.880
I think actually when I was 10, my dad got us a TI Timex in Claire, and he was excited
link |
00:02:35.120
about the spreadsheet capability, but I made him get the basic, the add ons so we could
link |
00:02:40.280
actually program in basic, and just being able to write instructions and have the computer
link |
00:02:44.960
do something.
link |
00:02:45.960
Then we got a TI 994A when I was about 12, and I would just, it had sprites and graphics
link |
00:02:52.360
and music you could actually program to do music.
link |
00:02:55.480
That's when I really sort of fell in love with programming.
link |
00:02:58.720
So this is a full, like a real computer with like, with memory and storage and processors
link |
00:03:04.560
so we're not going to say TI.
link |
00:03:06.080
Yeah, the Timex in Claire was one of the very first, it was a cheap, cheap, like, I think
link |
00:03:10.240
it was, well, it was still expensive, but it was 2K of memory.
link |
00:03:14.480
We got the 16K add on pack, but yeah, it had memory and you could program it.
link |
00:03:19.040
You had the, in order to store your programs, you had to attach a tape drive.
link |
00:03:22.520
Remember that old, the sound that would play when you converted the modems would convert
link |
00:03:28.840
digital bits to audio files, tape drive.
link |
00:03:32.040
Still remember that sound, but that was the storage.
link |
00:03:34.920
And what was the programming language, do you remember?
link |
00:03:36.480
It was basic.
link |
00:03:37.480
It was basic.
link |
00:03:38.480
And then they had a VisiCalc.
link |
00:03:39.480
And so a little bit of spreadsheet program in VisiCalc, but mostly just some basic.
link |
00:03:42.800
Do you remember what kind of things drew you to programming?
link |
00:03:46.440
Was it working with data?
link |
00:03:48.840
Was it video games and video games?
link |
00:03:50.880
Math.
link |
00:03:51.880
Math.
link |
00:03:52.880
Mathy stuff.
link |
00:03:53.880
Yeah, I've always loved math and a lot of people think they don't like math because
link |
00:03:58.280
I think when they're exposed to it early, they, it's about memory.
link |
00:04:01.320
You know, when you're exposed to math early, you have a good short term memory, you remember
link |
00:04:04.560
timetables.
link |
00:04:06.080
And I do have a reasonably, I mean, not perfect, but a reasonably long little short term memory
link |
00:04:11.280
buffer.
link |
00:04:12.640
And so I did great at timetables and said, oh, I get a math, but I started to really
link |
00:04:16.560
like math, just the problem solving aspect.
link |
00:04:20.400
And so computing was problem solving applied.
link |
00:04:25.120
And so that's always kind of been the, the draw kind of coupled with the mathematics.
link |
00:04:30.640
Did you ever see the computer as like an extension of your mind, like something able
link |
00:04:35.840
to achieve?
link |
00:04:36.840
Not till later.
link |
00:04:37.840
Okay.
link |
00:04:38.840
Yeah.
link |
00:04:39.840
Not then.
link |
00:04:40.840
You could play with it and you can, you could play with math puzzles and yeah, it was, it
link |
00:04:44.000
was too rudimentary early on, like it was sort of, yeah, it was too, it was a lot of
link |
00:04:48.680
work to actually take a thought you'd have and actually get it implemented.
link |
00:04:53.200
And that's still work, but it's getting easier.
link |
00:04:56.240
And so yeah, I would say that's definitely what's attracting me to Python is that that
link |
00:04:59.840
was more real, right?
link |
00:05:02.080
I could think in Python, speaking a foreign language, I only speak another language fluently
link |
00:05:07.680
besides English, which is Spanish, and I remember the day when I would dream in Spanish and
link |
00:05:11.800
you start to think in that language.
link |
00:05:13.440
And then you actually, I do definitely believe that language limits or expands your thinking.
link |
00:05:19.680
There's some languages that actually lead you to certain thought processes.
link |
00:05:23.600
Yeah.
link |
00:05:24.600
Like, so I speak Russian fluently and that's certainly a language that leads you down certain
link |
00:05:31.960
thought processes.
link |
00:05:32.960
Is that right?
link |
00:05:33.960
There's a, there's a history of the two world wars of the millions of people starving to
link |
00:05:42.600
death or near to death throughout his history of suffering, of injustice, like this promise
link |
00:05:48.560
sold to the people and then the carpet or whatever swept from under them and it's like
link |
00:05:54.560
broken promises and all of that pain and melancholy is in the language, the sad songs, the sad
link |
00:06:01.400
hopeful songs, the over romanticized, like, I love you, I hate you, the sort of the swings
link |
00:06:08.200
between all the various spectrums of emotion.
link |
00:06:11.560
So that's all within the language, the way it's twisted, poetry, there's a strong culture
link |
00:06:17.880
of rhyming poetry, so like the bards, like the, there's a musicality to the language
link |
00:06:24.200
too.
link |
00:06:25.200
Did Dostoevsky write in Russian?
link |
00:06:27.000
Yeah.
link |
00:06:28.000
Like Dostoevsky, Tostoevsky, all the, all the, all the, the ones that I know about which
link |
00:06:33.840
are translated and I'm curious how the translations.
link |
00:06:36.440
So Dostoevsky did not use the musicality of the language too much, so they actually
link |
00:06:43.200
translate pretty well because it's so philosophically dense that the story does a lot of the work,
link |
00:06:48.560
but there's a bunch of things that are untranslatable.
link |
00:06:51.440
Certainly the poetry is not translatable.
link |
00:06:53.600
I actually have a few conversations coming up offline and also in this podcast with people
link |
00:06:59.920
who have translated Dostoevsky and that's for people who worked, who work in this field
link |
00:07:06.320
know how difficult that is.
link |
00:07:07.760
Sometimes you can spend, you know, months thinking about a single sentence, right?
link |
00:07:12.840
In context, like, because there's just a magic captured by that sentence and how do you translate
link |
00:07:17.840
just in the right way because those words can be, can be really powerful.
link |
00:07:22.720
There's a famous line, beauty will save the world from Dostoevsky.
link |
00:07:27.200
You know, there's so many ways to translate that and you're right, the language gives
link |
00:07:31.680
you the tools with which to tell the story, but it also leads your mind down certain trajectories
link |
00:07:37.160
and paths to where over time, as you think in that language, you become a different human
link |
00:07:42.200
being.
link |
00:07:43.200
Yes.
link |
00:07:44.200
Yeah.
link |
00:07:45.200
Yeah, that's a fascinating reality, I think.
link |
00:07:46.200
I know people have explored that, but it's, I guess, rediscovered.
link |
00:07:49.200
Well, we don't, we live in our own like little pockets, like this is the sad thing is I feel
link |
00:07:55.360
like, unfortunately, given time and given getting older, I'll never know the China, the Chinese
link |
00:08:02.760
world because I don't truly know the language, same with Japanese, I don't truly know Japanese
link |
00:08:08.160
and Portuguese and Brazil, that whole South American continent, like, yeah, I'll go to
link |
00:08:13.160
Brazil and Argentina, but will I truly understand the people, if I don't understand the language?
link |
00:08:18.840
It's sad because I wonder how much, how many geniuses we're missing because so much of
link |
00:08:27.440
the scientific world, so much of the technical world is in English and so much of it might
link |
00:08:32.360
be lost because they're, they just, we don't have the common language.
link |
00:08:36.040
I completely agree.
link |
00:08:37.040
I'm very much in that vein of, there's a lot of genius out there that we miss and it's
link |
00:08:42.080
sort of, we're sort of fortunate when it, when it bubbles up into something that we
link |
00:08:46.800
can understand or process, there's a lot we miss, so I tend to lean towards really loving
link |
00:08:52.160
democratization or things that empower people or, you know, very resistant to sort of authoritarian
link |
00:08:58.880
structures.
link |
00:08:59.880
Fundamentally, for that reason, it, well, several reasons, but it just hurts us, we're
link |
00:09:04.920
worse off.
link |
00:09:05.920
So speaking of languages that empower you, so Python was the first language for me that
link |
00:09:12.000
I could, I really enjoyed thinking in, as you said.
link |
00:09:16.560
Sounds like you shared my experience too.
link |
00:09:18.560
So when did you first, do you remember when you first kind of connected with Python, maybe
link |
00:09:22.040
even fell in love with Python?
link |
00:09:23.760
It's a good question.
link |
00:09:24.760
It was a process that took about a year.
link |
00:09:26.440
I first encountered Python in 1997.
link |
00:09:29.440
I was a graduate student studying biomedical engineering at the Mayo Clinic and I had previously,
link |
00:09:34.600
I'd been involved in taking information from satellites.
link |
00:09:39.280
I was an electrical engineering student used to taking information and trying to get something
link |
00:09:43.560
out of it, doing some data processing information out of it.
link |
00:09:45.920
And I'd done that in MATLAB, I'd done that in Perl, I'd done that in, you know, scripting
link |
00:09:51.400
on a VMS, there's actually a VAX VMS system and they had their own little scripting tools
link |
00:09:56.280
around Fortran, done a lot of that.
link |
00:09:58.920
And then as a graduate student, I was looking for something and encounter Python and because
link |
00:10:05.000
Python had an array, had two things that made me not filter it away because I was filtering
link |
00:10:09.760
a bunch of stuff.
link |
00:10:10.760
I was Yorick, I looked at Yorick, I looked at a few other languages throughout there
link |
00:10:14.400
at the time in 1997, but it had arrays, there's a library called Numeric that had just been
link |
00:10:19.800
written in 95, like not very, not too much earlier.
link |
00:10:23.800
By an MIT alum, Jim Hugenin, you know, and I went back and read the mailing list to see
link |
00:10:29.280
the history of how it grew and there was a very interesting, it's fascinating to do that
link |
00:10:32.040
actually to see how this emergent cooperation, unstructured cooperation happens in the open
link |
00:10:38.480
source world that led to a lot of this collective programming, which is something maybe we might
link |
00:10:44.280
get into a little later, but what that looks like.
link |
00:10:46.320
What gap did Numeric fill?
link |
00:10:47.800
Numeric filled the gap of having an array object.
link |
00:10:50.360
There was no array object.
link |
00:10:52.320
There was a one dimensional byte concept, but there was no n dimensional, two, three, four
link |
00:10:58.240
dimensional tensor they call it now.
link |
00:11:00.600
I'm still in the category that a tensor is another thing and it's just an nv array, we
link |
00:11:04.600
should call it, but kind of lost that battle.
link |
00:11:08.360
There's many battles in this world, some which will win, some we lose.
link |
00:11:12.080
That's exactly right.
link |
00:11:13.640
So and, but it was, it had no math to it.
link |
00:11:17.200
So Numeric had math and a basic way to think in arrays.
link |
00:11:20.840
So I was looking for that and it had complex numbers, a lot of programming languages.
link |
00:11:26.600
And you can see it because, you know, if you're just a computer scientist, you think, ah,
link |
00:11:30.760
complex numbers just too, too float.
link |
00:11:32.120
So you can, people can build that on, but in practice, a complex number as a, as one
link |
00:11:37.680
of the significant algebras that helps connect a lot of physical and mathematical ideas,
link |
00:11:42.320
particularly to FFT for an actual engineer.
link |
00:11:45.760
And it's a really important concept and not having it means you have to develop it several
link |
00:11:51.160
times and those times may not share an approach.
link |
00:11:54.400
One of the common things in programming, one of the things programming enables is abstractions.
link |
00:11:59.160
But when you have shared abstractions, it's even better.
link |
00:12:01.040
It sort of gets to the level of language of actually we all think of this the same way,
link |
00:12:05.600
which is both powerful and dangerous, right?
link |
00:12:08.200
It's powerful and that we now can quickly make bigger and higher level things on top
link |
00:12:13.560
of those abstractions dangerous because it also limits us as to the things we left, maybe
link |
00:12:17.680
left behind in producing an abstraction, which is at the heart of programming today
link |
00:12:21.800
and actually building around the programming world.
link |
00:12:24.200
So I think it's a fascinating philosophical topic.
link |
00:12:26.360
Yeah, they will continue for many years, I think, as we build more and more and more
link |
00:12:30.400
abstractions.
link |
00:12:31.400
Yes.
link |
00:12:32.400
I often think about, you know, we have, we have a world that's built on these abstractions
link |
00:12:34.920
that were they the only ones possible?
link |
00:12:36.920
Yeah.
link |
00:12:37.920
There's a lot, but they led to, you know, it's very hard to do it differently.
link |
00:12:41.800
Yeah.
link |
00:12:42.800
Like there's an inertia that's very hard to, you know, push out, push away from.
link |
00:12:47.360
There's, that has implications for things like, you know, the Julia language, which
link |
00:12:50.840
you have heard of, I'm sure.
link |
00:12:52.880
And I've met the creators and I like Julia.
link |
00:12:55.760
It's a really cool language, but they've struggled to kind of against the, just the
link |
00:12:59.560
tide of like this inertia of people using Python and, and, you know, there's strategies
link |
00:13:04.960
to approach that.
link |
00:13:05.960
But nonetheless, it's a, it's a phenomenon and sometimes, so I love complex numbers and
link |
00:13:09.600
I love to raise.
link |
00:13:10.600
So I, I looked at Python and then I had the experience.
link |
00:13:13.480
I did some stuff in Python and I was just doing my PhD.
link |
00:13:16.440
So I was out, my focus was on, I was actually doing a combination of MRI and ultrasound and
link |
00:13:22.240
looking at a phenomenon called elastography, which is you push waves into the body and
link |
00:13:27.360
observe those waves, like you can actually measure them.
link |
00:13:30.400
And then you do mathematical inversion to see what the elasticity is.
link |
00:13:35.320
And so that's the problem I was solving is how to do that with both ultrasound and MRI.
link |
00:13:39.760
I needed some tool to do that with.
link |
00:13:41.440
So I was starting to use Python in 97, in 98, I went back, looked at what I'd written
link |
00:13:47.320
and realized I could still understand it, which is not the experience I'd had when doing
link |
00:13:51.600
Pearl in 95, right?
link |
00:13:53.640
I'd done the same thing.
link |
00:13:55.040
And then I looked back and I, I'd forgotten what I was even saying.
link |
00:13:57.840
Now, you know, I'm not saying it.
link |
00:13:59.520
So I, that, that may, hey, this may work.
link |
00:14:01.800
I like this.
link |
00:14:02.800
This may be something I can retain without becoming an expert per se.
link |
00:14:07.720
And so that led me to go, I'm going to push more into this.
link |
00:14:10.640
And then that 98 was kind of the, when I started to fall in love with Python, I would say.
link |
00:14:18.440
A few peculiar things about Python.
link |
00:14:21.000
So maybe compared to Pearl, compared to some of the other languages.
link |
00:14:24.720
So there's no braces.
link |
00:14:26.400
Yeah.
link |
00:14:27.400
Yeah.
link |
00:14:28.400
So space is used, indentation, I should say, is used as part of the language.
link |
00:14:34.120
Yeah.
link |
00:14:35.120
Right.
link |
00:14:36.120
So did you, I mean, that's quite a leap.
link |
00:14:39.280
Were you comfortable with that leap?
link |
00:14:41.240
Or were you just very open minded?
link |
00:14:42.760
It's a good question.
link |
00:14:43.760
I was open minded.
link |
00:14:44.960
So it, I was cognizant of the concern.
link |
00:14:48.160
And it definitely has, it has specific challenges, you know, cut and pasting, for example, your
link |
00:14:54.080
cut and pasting code.
link |
00:14:55.600
And if your editors aren't supportive of that, if you're putting it into a terminal, and
link |
00:14:59.200
particularly in the past when terminals didn't necessarily have the intelligence to manage
link |
00:15:02.760
it now.
link |
00:15:03.760
Now, now I Python and Jupyter notebooks handle it just fine.
link |
00:15:06.000
So there's really no problem.
link |
00:15:07.000
But in the past, it creates some challenges, formatting challenges.
link |
00:15:10.320
Also mixed tabs and spaces, if your, if editors weren't, you weren't clear on what was happening,
link |
00:15:15.480
you would have these issues.
link |
00:15:16.480
So there were really concrete reasons about it that I heard and understood.
link |
00:15:20.400
I never really encountered a problem with it personally.
link |
00:15:24.080
Like it was occasional annoyances, but I really liked the fact that it didn't have all this
link |
00:15:29.240
extra characters, right?
link |
00:15:31.200
That these extra characters didn't show up in my visual field when I was just trying
link |
00:15:35.400
to process understanding a snippet of code.
link |
00:15:37.800
Yeah, there's a cleanness to it.
link |
00:15:39.400
But I mean, the idea is supposed to be that Pearl also has a cleanness to it because of
link |
00:15:43.680
the minimalism of like how many characters it takes to express a certain thing.
link |
00:15:48.080
So it's very compact.
link |
00:15:49.080
Yeah.
link |
00:15:50.080
So you realize with that compactness comes, there's a culture that prizes compactness.
link |
00:15:57.320
And so the code gets more and more compact and less and less readable to a point where
link |
00:16:01.080
it's like, like to be a good programmer in Pearl, you write code that's basically unreadable.
link |
00:16:07.280
Right.
link |
00:16:08.280
There's a culture like.
link |
00:16:09.280
Correct.
link |
00:16:10.280
And you're proud of it.
link |
00:16:11.280
Yeah.
link |
00:16:12.280
You're proud of it.
link |
00:16:13.280
Right.
link |
00:16:14.280
Exactly.
link |
00:16:15.280
And it's like feels good.
link |
00:16:16.280
And it's really selective.
link |
00:16:17.280
Yeah.
link |
00:16:18.280
And it's hard in Pearl to understand it.
link |
00:16:20.480
Whereas Python was allowed you not to have to be an expert, you don't have to take all
link |
00:16:23.920
this brain energy.
link |
00:16:24.920
You could leverage what I say, you could leverage your English language center, which you're
link |
00:16:28.800
using all the time.
link |
00:16:29.800
I've wondered about other languages, particularly non Latin based languages, you know, Latin
link |
00:16:34.960
based languages with the characters are at least similar.
link |
00:16:37.080
I think people have an easier time, but I don't know what it's like to be a Japanese or a
link |
00:16:41.520
Chinese person trying to learn a different, different syntax.
link |
00:16:46.920
Like what would computer programming look like in a, in that, I haven't looked at that
link |
00:16:50.440
at all, but it certainly doesn't, you know, leveraging your, your Chinese language center.
link |
00:16:54.240
I'm not sure Python or any program names does that, but that was a big deal.
link |
00:16:58.120
The fact that it was accessible, I could be a scientist.
link |
00:17:00.360
What I really liked is many programming languages really demand a lot of you and you can get
link |
00:17:04.280
a lot, you know, you do a lot if you learn it, but Python enables you to do a lot without
link |
00:17:09.040
demanding a lot of you.
link |
00:17:11.440
There's a, there's nuance to that statement, but it certainly was, it's more accessible.
link |
00:17:15.400
So more people could actually, as a, as a scientist, as somebody or engineer who was
link |
00:17:20.040
trying to solve another problem besides point programming, I could still use this language
link |
00:17:24.880
and get things done and, and be happy about it.
link |
00:17:27.200
And I was also comfortable in C at that time.
link |
00:17:30.160
And MATLAB you did a little bit of that.
link |
00:17:31.160
And MATLAB I did a lot before that, exactly.
link |
00:17:33.240
So I was comfortable in those three languages were really the tools I used during my studies
link |
00:17:38.680
and schooling.
link |
00:17:39.680
Um, but to your point about language helping you think, one of the big things about MATLAB
link |
00:17:44.080
is it was, and APL before it, I don't know if you're a, you remember APL, APL is actually
link |
00:17:49.400
the predecessor of array based programming, which I think is really an underappreciated,
link |
00:17:54.240
if I talked to people who are just steeped in computer programming and computer science,
link |
00:17:57.720
like most of the people that Microsoft has hired in the past, for example, you know, Microsoft
link |
00:18:01.560
is a company generally did not understand array based programming like culturally they
link |
00:18:05.960
understand it.
link |
00:18:06.960
So they kept missing the boat, kept missing the understanding of what this, what this was.
link |
00:18:11.680
We've gotten better, but there's still a whole culture of folks that doesn't programming.
link |
00:18:15.760
That's the, you know, that's, that's systems programming or web programming or lists and
link |
00:18:19.920
maps and you know, what about an end dimensional array?
link |
00:18:22.400
Oh yeah.
link |
00:18:23.400
That's just an implementation detail.
link |
00:18:24.880
Well, you can think that, but then actually if you have that as a construct, you actually
link |
00:18:29.040
think differently.
link |
00:18:30.040
APL was the first language to understand that and it was in the sixties, right?
link |
00:18:33.520
The challenge of APL is APL had very dense, not only glyphs, like new characters, new
link |
00:18:38.880
glyphs, they even had a new keyboard because to produce those glyphs, this is back in the
link |
00:18:43.000
early days of computing when, you know, the qwerty keyboard maybe wasn't as established
link |
00:18:47.920
like, well, we can have a new keyboard, no big deal, but it was a big deal and it didn't
link |
00:18:52.200
catch on and the language APL very much like Pearl is people would pride themselves on
link |
00:18:57.520
how much could they write the game of life in 30 characters of APL, APL has characters
link |
00:19:04.040
that mean summation and they have adverbs, you know, they would have adjectives and
link |
00:19:08.800
these things called adverbs, which are like methods, like reduction, it would be an adverb
link |
00:19:13.280
on an ad operator, right?
link |
00:19:16.440
But using these tools, you could construct and then you start to think at that level,
link |
00:19:20.960
you think in end dimensions is something I like to say and you start to think differently
link |
00:19:24.080
about data at that point, you know, now you're, it really helps.
link |
00:19:27.360
Yeah, I mean, outside of programming, if you really internalize linear algebra as a course,
link |
00:19:33.680
I mean, it's philosophically allows you to think of the world differently.
link |
00:19:37.320
It's almost like liberating.
link |
00:19:38.320
You don't have to, you don't have to think about the individual numbers in the end dimensional
link |
00:19:43.680
array.
link |
00:19:44.680
You could think of it as an object in itself and all of a sudden this world can open up.
link |
00:19:49.040
You're saying MATLAB and APL were like the early, I don't know if many languages got
link |
00:19:54.080
that right ever.
link |
00:19:55.080
No, no, no, they didn't still, even still, I would say, I mean, NumPy is a, as an inheritor
link |
00:20:01.760
of the traditions that I would say APLJ was another version that was what it did is not
link |
00:20:07.720
have the glyphs just have short characters, but still a Latin keyboard could type them.
link |
00:20:11.840
And then numeric inherited from that in terms of, let's add arrays plus broadcasting plus
link |
00:20:17.840
methods, reduction, even some of the language like rank is a concept that's in, that was
link |
00:20:22.560
in Python is still in Python for the number of dimensions, right?
link |
00:20:27.640
That's different than say the rank of a matrix, which people think of as well.
link |
00:20:31.240
So it's, it came from that tradition, but NumPy is a very pragmatic, practical tool.
link |
00:20:38.200
NumPy inherited from numeric and we can get to where NumPy came from, which is the current
link |
00:20:41.640
array, at least current as of 2015, 2017, now there's a ton of them over the past two
link |
00:20:48.240
or three years.
link |
00:20:49.240
We can get into that too.
link |
00:20:50.400
So if we just sort of linger on the early days of what was your favorite feature of
link |
00:20:55.720
Python?
link |
00:20:56.720
Do you remember like what?
link |
00:20:57.720
Yeah.
link |
00:20:58.720
I think it's an interesting to linger on like the, what, what really makes you connect
link |
00:21:05.440
with a language?
link |
00:21:06.440
I'm not sure it's obvious to introspect that.
link |
00:21:09.320
No, it isn't.
link |
00:21:10.320
And I've thought about that.
link |
00:21:11.320
It's just some length.
link |
00:21:12.320
I'm not, I think definitely the fact that I could read it later, that I could use it
link |
00:21:17.440
productively without becoming an expert.
link |
00:21:19.360
And you, other languages I had to put more effort into.
link |
00:21:21.560
Right.
link |
00:21:22.560
That's like an empirical observation.
link |
00:21:24.040
Like you're not analyzing any one aspect of language.
link |
00:21:26.520
It just seems time after time, when you look back, it's somehow readable.
link |
00:21:30.640
It's somehow readable.
link |
00:21:31.640
And then it was sort of, I could take executable English and translate it to Python more easily.
link |
00:21:36.760
Like I didn't have to go, there was no translation layer as an engineer or as a scientist.
link |
00:21:41.560
I could think about what I wanted to do.
link |
00:21:43.320
And then the syntax wasn't that far behind it.
link |
00:21:46.000
Yeah.
link |
00:21:47.000
Right.
link |
00:21:48.000
Now there are some, there are some warts there still.
link |
00:21:49.240
It wasn't perfect.
link |
00:21:50.240
Like there's some areas where I'm like, it'd be better if this were different or if this
link |
00:21:53.000
were different.
link |
00:21:54.600
Some of those things got out of the language too.
link |
00:21:56.600
I was really grateful for some of the early pioneers in the Python ecosystem back because
link |
00:22:00.520
Python got written in 91 is when the first version came out.
link |
00:22:03.200
But Guido was very open to users.
link |
00:22:06.600
And one of the sets of users were people like Jim Huguenin and David Asher and Paul Dubois
link |
00:22:11.160
and Conrad Hinson.
link |
00:22:13.520
These were people that were on the main list.
link |
00:22:15.040
And they were just asking for things like, hey, we really should have complex numbers
link |
00:22:18.240
in this language.
link |
00:22:19.240
So let's, you know, there's a J, there's a one J, right?
link |
00:22:22.560
And the fact that they went the engineering route of J is interesting.
link |
00:22:25.680
I don't think that's entirely favorite engineers.
link |
00:22:28.560
I think it's because I is so often used as the index of a for loop.
link |
00:22:32.000
I think that's actually why.
link |
00:22:34.200
Probably.
link |
00:22:35.200
I mean, there's a pragmatic aspect.
link |
00:22:36.800
But the complex numbers were there.
link |
00:22:38.280
I love that.
link |
00:22:39.280
The fact that I could write in the array constructs and that reduction was there.
link |
00:22:43.040
Very simple to write summations and broadcasting was there.
link |
00:22:46.560
I could do addition of whole arrays.
link |
00:22:49.560
So that was cool.
link |
00:22:50.560
That was something that I loved about it.
link |
00:22:52.640
I don't know what to start talking to you about because you've been, you've created
link |
00:22:56.280
so many incredible projects that basically change the whole landscape of programming.
link |
00:23:00.280
But okay, let's start with, let's go chronologically with SciPy.
link |
00:23:06.200
You created SciPy over two decades ago now.
link |
00:23:09.040
Yes.
link |
00:23:10.040
Right.
link |
00:23:11.040
Yes.
link |
00:23:12.040
I love to talk about SciPy.
link |
00:23:13.040
SciPy was really my baby.
link |
00:23:14.040
What is it?
link |
00:23:15.040
Yeah.
link |
00:23:16.040
What was its goal?
link |
00:23:17.040
What is its goal?
link |
00:23:18.040
How does it work?
link |
00:23:19.040
Yeah.
link |
00:23:20.040
Well, practically, here I am using Python to do stuff that I previously used Matlab
link |
00:23:24.200
to use.
link |
00:23:25.200
And I was using Numeric, which is an array library that made a lot of it possible.
link |
00:23:28.400
But there's things that were missing.
link |
00:23:30.000
Like I didn't have an ordinary differential equation solver I could just call.
link |
00:23:33.400
I didn't have integration.
link |
00:23:34.800
Yeah, I wanted to integrate this function.
link |
00:23:37.200
Okay.
link |
00:23:38.200
Well, I don't have just a function I can call to do that.
link |
00:23:40.640
These are things I remember being critical things that I was missing.
link |
00:23:43.960
Optimization.
link |
00:23:44.960
I just want to pass a function to an optimizer and have it tell me what the optimum value
link |
00:23:48.600
is.
link |
00:23:50.280
Those things like, well, why don't we just write a library that adds these tools?
link |
00:23:54.440
And I started to post on the main list and there had previously been, you know, people
link |
00:23:57.520
have discussed.
link |
00:23:58.520
I remember Conrad Hinson saying, wouldn't it be great if we had this optimizer library
link |
00:24:00.880
or David Asch would say this stuff and I'm, you know, I'm a ambitious, ambitious is the
link |
00:24:06.440
wrong word, an eager and probably more time than sense.
link |
00:24:11.320
I was, you know, a poor graduate student.
link |
00:24:13.600
My wife thinks I'm working on my PhD and I am, but part of the PhD that I loved was
link |
00:24:17.280
the fact that it's exploratory, but you're not just, you know, taking orders fulfilling
link |
00:24:22.200
a list of things to do.
link |
00:24:23.560
You're trying to figure out what to do.
link |
00:24:25.840
And so I thought, well, you know, I'm writing tools for my own use in a PhD.
link |
00:24:29.240
So I'll just start this project.
link |
00:24:32.200
And so in 99, 98 was when I first started to write libraries for Python, but when I fell
link |
00:24:37.240
in love with Python 98, I said, Oh, well, there's just a few things missing.
link |
00:24:39.800
Like, Oh, I need a reader to read daikon files that was in medical imaging and daikon was
link |
00:24:44.040
a format that I want to be able to load that into Python.
link |
00:24:46.640
Okay.
link |
00:24:47.640
How do I write a reader for that?
link |
00:24:48.640
So I wrote something called, it was an IO package, right?
link |
00:24:52.000
And that was my very first extension module, which is C. So I wrote C code to extend Python
link |
00:24:57.000
so that the positive in Python, I could write things more easily that, that combination
link |
00:25:01.000
kind of hooked me.
link |
00:25:02.000
It was the idea that I could, here's this powerful tool I can use as a scripting language
link |
00:25:05.680
and a high level language to think about, but that I can extend easily, easily in this
link |
00:25:10.520
in C that easily for me, because I knew enough C.
link |
00:25:13.960
And then Guido had written a link, I mean, the only, the hard part of extending Python
link |
00:25:17.200
was something called the way memory management networks, and you have to reference counting.
link |
00:25:21.240
And so there's, there's a tracking of reference counting you have to do manually.
link |
00:25:25.680
And if you don't, you have, you have memory leaks.
link |
00:25:27.720
And so that's hard, plus then C, you know, it's just much more, you have to put more
link |
00:25:31.520
effort into it.
link |
00:25:32.520
It's not just I have to now think about pointers and I have to think about stuff that is different.
link |
00:25:37.680
I have to kind of, you're like putting a new cartridge in your brain, like, okay, I'm
link |
00:25:41.560
thinking about MRI, now I'm thinking about programming and, and they're distinct modules
link |
00:25:45.240
you end up having to think about.
link |
00:25:46.720
So it's harder when I was just in Python, I could just think about MRI and high level
link |
00:25:50.040
writing.
link |
00:25:51.040
But I could do that and that kind of, I liked it.
link |
00:25:54.000
I found that to be enjoyable and fun.
link |
00:25:55.880
And so I ended up, oh, well, let me just add a bunch of stuff to Python to do integration.
link |
00:26:00.120
Well, and the cool thing is, is that, you know, the power of the internet, I just looking
link |
00:26:03.520
around and I found, oh, there's this NetLib, which has hundreds of 4chan routines that people
link |
00:26:09.200
are written in the 60s and the 70s and the 80s and 4chan 77, fortunately, it wasn't 4chan
link |
00:26:14.640
60s, it had been imported to 4chan 77.
link |
00:26:18.240
And 4chan 77 is actually a really great language.
link |
00:26:21.040
4chan 90 probably is my favorite 4chan because it's also, it's got complex numbers, got arrays
link |
00:26:26.800
and it's pretty high level.
link |
00:26:27.800
Now, the problem with it is you'd never want to write a program in 4chan 90 or 4chan 77,
link |
00:26:31.880
but it's totally fine to write a sub routine in, right?
link |
00:26:35.040
And so, and then 4chan kind of got a little off course when they tried to compete with
link |
00:26:38.360
C++, but at the time, I just want libraries that do something like, oh, here's an order
link |
00:26:42.880
infrastructure equation, here's integration, here's runge cut integration, already done.
link |
00:26:47.320
I don't have to think about that algorithm, I mean, you could, but it's nice to have somebody
link |
00:26:50.360
who's already done one and tested it.
link |
00:26:52.040
And so, I sort of started this journey in 98, really, look back at the main list, there's
link |
00:26:56.080
sort of this, this productive era of me writing an extension module to connect runge cut integration
link |
00:27:03.000
to Python and making an ordinary additional equation solver and then releasing that as
link |
00:27:08.440
a package, so we could call ODE pack, I think I called it then quad pack, you know, I just
link |
00:27:12.960
made these packages, eventually that became multi pack because they're originally modular,
link |
00:27:17.360
you can install them separately, but a massive problem in Python was actually just getting
link |
00:27:21.640
your stuff installed.
link |
00:27:23.480
At the time, releasing software for me, like today it's, people think, what does that mean?
link |
00:27:27.680
Well, then it meant some poorly written webpage, I had some bad webpage up and I put a tar
link |
00:27:32.680
ball, just a GZip tar ball of source code, that was the release.
link |
00:27:37.400
But okay, can we just stand that because that, the community aspect of creating the package
link |
00:27:44.240
and sharing that, that's rare, that to have, to both have the, at that time, so like the
link |
00:27:51.320
rust.
link |
00:27:52.320
Yeah, it was pretty early, yeah.
link |
00:27:53.320
Well, not rare, maybe you can correct me on this, but it seems like in the scientific
link |
00:27:59.080
community, so many people, you were basically solving the problems you needed to solve,
link |
00:28:04.160
to process the particular application, the data that you need, and to also have the mind
link |
00:28:10.920
that I'm going to make this usable for others, that's...
link |
00:28:15.360
I would say I was inspired, I'd been inspired by Linux, been inspired by, you know, Linus
link |
00:28:20.240
and him making his code available, and I was starting to use Linux at the time, and I went,
link |
00:28:23.600
this is cool.
link |
00:28:24.600
So I'd kind of been previously primed that way, and generally, I was into science because
link |
00:28:29.400
I like the sharing notion, I like the idea of, hey, let's, if collectively we build
link |
00:28:33.880
knowledge and share it, we can all be better off.
link |
00:28:35.720
Okay, so you want to energize by that idea?
link |
00:28:37.520
So I was energized by that idea already, right, and I can't deny that I was, I'm sort of had
link |
00:28:41.720
this very, I liked that part of science, that part of sharing, and then all of a sudden,
link |
00:28:46.360
oh wait, here's something, and here's something I could do, and then I slowly over years learned
link |
00:28:51.720
how to share better so that you could actually engage more people faster.
link |
00:28:55.280
One of the key things was actually giving people a binary they could install, right,
link |
00:28:59.160
so that wasn't just your source code, good luck.
link |
00:29:01.880
Compile this and then...
link |
00:29:02.880
It's compiled, ready to install, you just, you know, so, in fact, a lot of the journey
link |
00:29:06.720
from 98, even through 2012 when I started Anaconda was about that, like it's why, you
link |
00:29:11.800
know, it's really the key as to why a scientist with dreams of doing MRI research ended up
link |
00:29:18.200
starting a software company that installs software.
link |
00:29:22.240
I work with a few folks now that don't program, like on the creative side, the video side,
link |
00:29:28.600
the audio side, and because my whole life is running on scripts, I have to try to get
link |
00:29:33.200
them, I have now the task of teaching them how to do Python enough to run the scripts,
link |
00:29:39.480
and so I've been actually facing this, whether it's on the condor, some, with the task of
link |
00:29:44.200
how do I minimally explain, basically to my mom, how to write a Python script, and it's
link |
00:29:49.520
an interesting challenge.
link |
00:29:50.520
It's a to do item for me to figure out, like, what is the minimal amount of information
link |
00:29:55.280
I have to teach, what are the tools you use, the one you enjoy it, to your effect of it.
link |
00:30:00.800
And they're related.
link |
00:30:01.800
Those are two related questions.
link |
00:30:02.800
And then the debugging, like the iterative process of running the script to figure out
link |
00:30:06.840
what the error is, maybe even for some people to do the fix yourself.
link |
00:30:11.680
So do you compile it, like how do you distribute that code to them?
link |
00:30:15.560
And it's interesting because I think it's exactly what you're talking about, if you
link |
00:30:20.760
increase the circle of empathy, the circle of people that are able to use your programs,
link |
00:30:29.160
you increase its effectiveness and its power.
link |
00:30:33.040
And so you have to think, can I write scripts, can I write programs that can be used by medical
link |
00:30:39.680
engineers, by all kinds of people that don't know programming, and actually maybe plant
link |
00:30:45.320
the seed, have them catch the bug of programming so that they start on their journey.
link |
00:30:50.400
That's a huge responsibility.
link |
00:30:51.400
And ultimately it has to do with the Amazon one click buy, like how frictionless can you
link |
00:30:57.240
make the early steps?
link |
00:30:59.120
Frictionless is actually really key to go in any community is every, any friction point,
link |
00:31:02.760
you're just going to lose, you're going to lose some people, right?
link |
00:31:05.280
Now, sometimes you may want to intentionally do that, if you're early enough on that you
link |
00:31:10.160
need a lot of help, you need people who have the skills, you might actually, it's helpful,
link |
00:31:14.560
you don't necessarily have too many users as opposed to contributors if you're early
link |
00:31:19.360
on.
link |
00:31:20.360
Anyway, there's a sci fi start in 98, but it really emerged as this collection of modules
link |
00:31:25.680
that I was just putting on the net, people were downloading, and you know, I think I
link |
00:31:30.280
got 100 users by the end of that year, but the fact that I got 100 users and more than
link |
00:31:35.040
that, people started to email me with fixes, like, and that was actually intoxicating,
link |
00:31:41.040
right?
link |
00:31:42.040
That was the, that was the, you know, here I'm writing papers and I'm giving conferences
link |
00:31:45.040
and I get people would say hello, but yeah, good job, but mostly it was, you're reviewed
link |
00:31:48.960
with it's competitive, right?
link |
00:31:51.600
You publish a paper and people were like, oh, it wasn't my paper, you know, it was starting
link |
00:31:56.400
to see that sense of academic life where it was so much, I thought it was a cooperative
link |
00:32:01.040
effort, but it sounds like we're here just to one up each other.
link |
00:32:05.200
And you know, that's not true across the board, but a lot of that's there, but here
link |
00:32:09.000
in this world, I was getting responses from people all over the world.
link |
00:32:13.520
You know, I remember P.R.
link |
00:32:14.520
Peterson in Estonia, right, was one of the first people, and he sent me back this make
link |
00:32:18.280
file because, you know, the first thing it is, yeah, you're building stinks and here's
link |
00:32:21.720
a better make file.
link |
00:32:22.720
Now, it was a complex make file, I don't think I never understood that make file actually,
link |
00:32:26.720
but it worked and it did a lot more, and so I said, thanks, this is cool.
link |
00:32:31.080
And that was my first kind of engagement with community development.
link |
00:32:35.240
But you know, the process was he sent me a patch file, I had to upload a new tar ball,
link |
00:32:39.960
and I just found I really love that.
link |
00:32:41.640
And the style back then was here's a main list is very, it wasn't as, there's certainly
link |
00:32:46.000
more of the tools that are available today, it was very early on, but I really started
link |
00:32:49.680
to, that's the whole year, I think I did about seven packages that year, right?
link |
00:32:54.600
And then by the end of the year, I collected them into a thing called multi pack.
link |
00:32:57.880
So 99, there was this thing called multi pack, and that's when a high school student, always
link |
00:33:01.960
a high school student at the time, getting Robert Kern, took that package and made a
link |
00:33:07.400
Windows installer, right?
link |
00:33:09.880
And then of course, a massive increase of usage.
link |
00:33:12.760
So by the way, most of this development was under Linux.
link |
00:33:15.800
Yes.
link |
00:33:16.800
Yes, it was on Linux.
link |
00:33:17.800
I was a Linux developer doing it on a new box.
link |
00:33:20.200
I mean, at the time, I was actually getting into, I had a new hard drive, just some kernel
link |
00:33:24.520
programming to make the hard drive work, I mean, not programming, but modification to
link |
00:33:28.280
the kernel so I could actually hard drive working.
link |
00:33:30.640
I love that aspect of it.
link |
00:33:32.280
I was also in, at school, I was building a cluster, I took Mac computers, and you put
link |
00:33:38.680
Yellow Dog Linux on them.
link |
00:33:40.120
At the Mayo Clinic, they were just, all these Macs that were older, they were just getting
link |
00:33:44.320
rid of, and so I kind of got permission to go grab them together, I put about 24 of them
link |
00:33:47.640
together in a cluster, in a cabinet, and put Yellow Dog Linux on them all, and I wrote
link |
00:33:52.240
a C++ program to do MRI simulation.
link |
00:33:56.320
That was what I was doing at the same time for my day job, so to speak.
link |
00:34:01.480
So I was loving the whole process, and at the same time, I was, oh, I need an ordinary
link |
00:34:05.560
differential equation.
link |
00:34:06.560
That's why ordinary differential equations were key, was because that's the heart of
link |
00:34:09.000
a block equation for simulating MRI is an ODE solver, and so that's, I actually did that,
link |
00:34:15.160
it doesn't happen at the same time.
link |
00:34:17.000
That's why, kind of, what you're working on and what you're interested in, they're
link |
00:34:20.120
coinciding.
link |
00:34:21.120
I was definitely scratching my own itch, in terms of building stuff, which helped in
link |
00:34:25.720
the sense that I was using it for me, so at least I had one user.
link |
00:34:28.080
I had one person who was like, well, no, this is better, I like this interface better, and
link |
00:34:31.840
I had the experience of Matlab to guide some of what those APIs might look like, but you
link |
00:34:36.800
know, you're just doing yourself, you're building all this stuff.
link |
00:34:39.080
But the Windows installer, it was the first time I realized, oh, yeah, the binary installer
link |
00:34:42.240
really helps people.
link |
00:34:43.840
And so that led to spending more time on that side of things.
link |
00:34:49.160
So around 2000, so I graduated my PhD in 2000, end of year, end of 2000, so 99 doing a lot
link |
00:34:56.080
of work there, 98 doing a lot of work there, 99 kind of spending more time on my PhD, helping
link |
00:35:01.000
people use the tools, thinking about where do I want to go from here.
link |
00:35:04.160
There was a company, there was a guy actually, Eric Jones and Travis Vott, they were two
link |
00:35:08.560
friends who founded a company called Enthought, it's here in Austin, still here.
link |
00:35:13.760
And they, Eric contacted me at the time when I was a graduate student still, and he said,
link |
00:35:19.920
hey, why don't you come down, we want to build a company, you know, we're thinking of, you
link |
00:35:23.920
know, a scientific company and we want to take what you're doing and kind of add it
link |
00:35:28.120
to some stuff that he'd done, he'd written some tools, and then Piero Peterson had done
link |
00:35:32.320
F2Py, let's come together and build, pull this all together and call it SciPy.
link |
00:35:36.840
So that's the origin of the SciPy brand, it came from, you know, multi pack and a whole
link |
00:35:41.560
bunch of modules I'd written, plus a few things from some other folks, and then pull
link |
00:35:44.920
together in a single installer.
link |
00:35:47.880
SciPy was really a distribution of Python masquerading as a library.
link |
00:35:51.360
How did you think of all SciPy in context of Python, in context of numeric, like what?
link |
00:35:56.120
We saw SciPy as a way to make an R&D environment for Python, like use Python, dependent on
link |
00:36:02.680
numeric, so numeric was the array library we depended on, and then from there extend
link |
00:36:06.960
it with a bunch of modules that allowed for, and at the time, the original vision of SciPy
link |
00:36:11.440
was to have plotting, was to have, you know, replant, you know, the replant environment
link |
00:36:16.080
and kind of a whole, really a whole data environment that you could then install and get going
link |
00:36:20.880
with.
link |
00:36:21.880
And that was kind of the thinking, it didn't really evolve that way, right?
link |
00:36:25.320
It sort of had a, but one, it's really hard to do massive scale projects with open source
link |
00:36:32.480
collectives.
link |
00:36:33.480
Actually, there's sort of an intrinsic cooperation limit as to which, you know, too many cooks
link |
00:36:39.680
in the kitchen, you know, you can do amazing infrastructure work, when it comes down to
link |
00:36:43.280
bringing it all together into a single deliverable, that actually requires a little more product
link |
00:36:48.640
management that is not, that doesn't really emerge from the same dynamic.
link |
00:36:54.120
So it struggled, you know, struggled to get almost too many voices, it's hard to have
link |
00:36:58.320
everybody agree, you know, consensus doesn't really work at that scale, you end up with
link |
00:37:02.440
politics, you know, with the same kind of things that's happened in large organizations
link |
00:37:06.120
trying to decide on what to do together.
link |
00:37:09.560
The consensus building was still, was challenging at scale, as more people came in, right?
link |
00:37:14.080
Early on, it's fine, because there's nobody there, and so it works, but then as you get
link |
00:37:17.120
more successful, the more people use it, all of a sudden, oh, there's this scale at which
link |
00:37:21.400
this doesn't work anymore, and we have to come up with different approaches.
link |
00:37:24.120
So SciFi came out officially in 2001, was the first release, most of the time.
link |
00:37:28.920
I remember the days of getting that release ready, it was a Windows installer, and there
link |
00:37:32.840
were bugs on how, you know, the Windows compiler handled complex numbers, and you were chasing
link |
00:37:37.480
segmentation faults, and it was, it's a lot of work, there's a lot of effort had nothing
link |
00:37:42.880
to do with my area of study, and at the same time, I had just gotten an offer, so he wondered
link |
00:37:48.080
if I wanted to come down and help him start that, you know, start that company with his
link |
00:37:51.120
friend, and at the time I was like, I was intrigued, but I was squaring a path, an academic
link |
00:37:55.880
path, and I just got an offer to go and teach at my alma mater, so I took that tenure track
link |
00:38:01.120
position, and SciFi, and kind of, then I started working on SciFi as a professor, too.
link |
00:38:06.640
Okay.
link |
00:38:07.640
So that's, I left, I've got the Mayo Clinic graduate, wrote my thesis using SciFi, wrote,
link |
00:38:12.160
you know, there's images that were created, now the plotting tool I used was something
link |
00:38:17.320
from Yorick, actually, it was a plotting PLT, kind of a plotting language that I used.
link |
00:38:22.760
Yorick is a programming language.
link |
00:38:24.000
It was a programming language, it had a plotting tool, Dislin, it had integration to Dislin,
link |
00:38:28.960
I ended up using Dislin, plus some of the plotting from Yorick, linked to from Python.
link |
00:38:33.960
But it was a, people don't plot that way now, but this was before, and SciFi was trying
link |
00:38:39.320
to add plotting, right?
link |
00:38:41.560
It didn't have much success, really the success of plotting came from John Hunter, who had
link |
00:38:45.760
a similar experience to my experience, my kind of Maverick experience as a person just
link |
00:38:49.760
trying to get stuff done, and kind of having more time than money, maybe, right?
link |
00:38:53.680
And John Hunter created what?
link |
00:38:55.480
Mapplotlib.
link |
00:38:56.480
He's a creator of Mapplotlib.
link |
00:38:57.480
Yeah, so John Hunter was, you know, he wasn't a student at the time, but he was working
link |
00:39:00.920
in Quantfield, and he said, we need better plotting.
link |
00:39:03.600
So he just went out and said, cool, I'll make a new project, and we'll call it Mapplotlib.
link |
00:39:06.640
And he released in 2001, about the same time that SciFi came out.
link |
00:39:10.040
And it was separate library, separate install, use numeric, SciFi, use numeric.
link |
00:39:15.840
And so SciFi, you know, in 2001, we released SciFi, and then Enthoc created a conference
link |
00:39:21.200
called SciFi, which was brought people together to talk about the space.
link |
00:39:25.160
And that conference is still ongoing, it's one of the favorite conferences of a lot of
link |
00:39:28.120
people because it's, you know, it's changed over the years.
link |
00:39:30.920
But early on, it was, you know, a collection of 50 people who care about scientists mostly,
link |
00:39:36.200
you know, practicing scientists who want to care about coding and doing it well and not
link |
00:39:40.560
using MATLAB.
link |
00:39:41.560
And I remember being driven by, you know, I like MATLAB, but I didn't like the fact
link |
00:39:45.200
that, like, so I'm not opposed to proprietary software.
link |
00:39:48.080
I'm actually not an open source zealot.
link |
00:39:50.240
I love open source for the, what it brings, but I also see the role for proprietary software.
link |
00:39:54.480
But what I didn't like was the fact that I would develop code and publish it, and then
link |
00:39:58.840
effectively telling somebody here to run my code, you have to have this proprietary software.
link |
00:40:02.440
Right.
link |
00:40:03.440
And there's also culture around MATLAB as much, because I've talked to a few folks
link |
00:40:07.080
at MathWorks, Greats MATLAB.
link |
00:40:09.920
Yeah.
link |
00:40:10.920
I mean, there's just a culture, they try really hard, but it's just this corporate IBM
link |
00:40:16.000
style culture that's like, or whatever.
link |
00:40:18.440
I don't want to say negative things about IBM or whatever, but there's a, no, it's really
link |
00:40:23.160
that connection.
link |
00:40:24.160
It's something I'm in the middle of right now is the business of open source.
link |
00:40:27.000
And how do you connect the ethos of cooperative development with the necessity of creating
link |
00:40:33.440
profits?
link |
00:40:34.440
Right.
link |
00:40:35.440
And like right now today, you know, I'm still in the middle of that.
link |
00:40:38.200
That's actually the early days of me exploring this question.
link |
00:40:41.720
Because as I was writing SciPy, I mean, as an aside, I also had, so I had three kids
link |
00:40:46.280
at the time.
link |
00:40:47.280
I have six kids now.
link |
00:40:48.280
I got married early, wanted a family.
link |
00:40:50.880
I had three kids, and I remember reading, I read Richard Stallman's post, and I was
link |
00:40:54.720
a fan of Stallman.
link |
00:40:55.720
I would read his work, I liked this collective ideas he would have.
link |
00:40:59.000
Certainly the ideas on IP law, I read a lot of stuff.
link |
00:41:01.800
But then he said, you know, okay, well, how do I make money with this?
link |
00:41:05.800
How do I make a living?
link |
00:41:06.800
How do I pay for my kids?
link |
00:41:07.800
All this stuff was in my mind.
link |
00:41:09.440
Young graduate student making no money thinking I got to get a job.
link |
00:41:12.320
And he said, well, you know, I think just be like me and don't have kids, right?
link |
00:41:15.960
That's just don't, don't.
link |
00:41:17.200
That's his take on, is that his dad?
link |
00:41:18.840
That was the, that was the, what he said in that moment, right?
link |
00:41:20.960
That's the thing I read and I went, okay, this is a train I can't get on.
link |
00:41:25.080
There has to be a way to preserve the culture of open source and still be able to make sufficient
link |
00:41:28.880
money to feed your kids.
link |
00:41:30.360
Yes, exactly.
link |
00:41:31.360
There's got to be, well, so that actually led me to a study of economics, because at
link |
00:41:34.680
the time I was ignorant, and it really was, and I'm actually, I'm embarrassed for educational
link |
00:41:38.920
system that they could let me, and I was valedictorian of my high school class, and I did super well
link |
00:41:43.040
in college, and like academically I did great, right?
link |
00:41:47.680
But the fact that I could do that and then be clueless about this key part of life, it
link |
00:41:52.840
led me to go, there's a problem.
link |
00:41:54.480
Like I should have learned this in fifth grade, I should have learned this in eighth
link |
00:41:58.040
grade, like everybody should come out with a basic knowledge of economics.
link |
00:42:01.800
You're an interesting example, because you've created tools that change the lives of probably
link |
00:42:06.200
millions of people, and the fact that you don't understand at the time of the creation
link |
00:42:10.680
of those tools, the basics economics of how to build up a giant system is a problem.
link |
00:42:15.040
Yeah, it's a problem.
link |
00:42:16.040
And so, during my PhD, at the same time, this is back in 98, 99, at the same time, I was
link |
00:42:20.800
in a library, I was reading books on capitalism, I was reading books on Marxism, I was reading
link |
00:42:24.960
books on, you know, what is this thing, what does it mean?
link |
00:42:29.800
And I encountered a, basically what I, I encountered a set of writings from people that said they
link |
00:42:34.000
were the inheritors of Adam Smith, but Adam Smith for the first time, right?
link |
00:42:37.280
Which is the wealth of nations and kind of this notion of emergent, emergent societies,
link |
00:42:42.480
and realized, oh, there's this whole world out here of people.
link |
00:42:47.040
And the challenge of economics is also political, like, because economics, you know, people,
link |
00:42:53.560
different parties running for office, they'll, they want their economic friends, they want
link |
00:42:58.400
their economists to back them up, right, or to be their magicians, like the magicians
link |
00:43:03.640
in Pharaoh's court, right, the people that are kind of say, hey, this is, you should
link |
00:43:06.440
listen to me, because I've got the expert who says this.
link |
00:43:09.520
And so, it gets really muddled, right?
link |
00:43:11.800
I was looking at, as a scientist going, what is this space, what does this mean, how does
link |
00:43:16.000
Paris get fed, how does, how does money, how does it work?
link |
00:43:19.120
And I found a lot of writings I really loved.
link |
00:43:21.280
I found some things that I really loved, and I learned from that, it was writings from
link |
00:43:24.800
people like Von Missas, he wrote a, he wrote a paper in 1920 that still should be read
link |
00:43:29.040
more than it is.
link |
00:43:30.040
It's got, I mean, it was the economic calculation problem of the socialist commonwealth.
link |
00:43:34.160
It was basically in response to the Bolshevik Revolution in 1917.
link |
00:43:36.960
And his basic argument was, it's not going to work to not have private property.
link |
00:43:41.840
You're not going to be able to come up with prices.
link |
00:43:43.400
The bureaucrats aren't going to be able to determine how to allocate resources without
link |
00:43:46.760
a price system.
link |
00:43:47.760
And a price system emerges from people making trades.
link |
00:43:51.760
And they can only make trades if they have authority over the thing they're trading.
link |
00:43:55.560
And that, that creates information flow that you just don't have if you try to top down
link |
00:44:00.720
it.
link |
00:44:01.720
Right.
link |
00:44:02.720
Right.
link |
00:44:03.720
It's like, huh, that's a really good point.
link |
00:44:04.720
Yeah.
link |
00:44:05.720
The prices have a signal that's used, and it's important to have that signal when you're
link |
00:44:09.640
trying to build a community of productive people like you would in the software engineering
link |
00:44:13.520
space.
link |
00:44:14.520
Yeah.
link |
00:44:15.520
The prices are actually an important signaling mechanism, right?
link |
00:44:17.920
And that money is just a bartering tool.
link |
00:44:20.720
Right.
link |
00:44:21.720
So this is the first time I've encountered any of this concept, right?
link |
00:44:23.880
And the fact that, oh, this is actually really critical.
link |
00:44:26.640
Like it's so critical to our prosperity and that we're, we're dangerously not learning
link |
00:44:33.600
about this, not teaching our children about this.
link |
00:44:35.840
So you had the three kids, they had to make some hard decisions.
link |
00:44:38.200
They had to make some money, right, had to figure it out.
link |
00:44:39.920
But I didn't really care.
link |
00:44:40.920
I mean, I was never, I've never been driven by money.
link |
00:44:42.600
Just need it.
link |
00:44:43.600
Yeah.
link |
00:44:44.600
Right.
link |
00:44:45.600
You need to eat.
link |
00:44:46.600
So what, how did that resolve itself in terms of side by?
link |
00:44:49.160
So I would say it didn't really resolve itself.
link |
00:44:51.360
It sort of started a journey that I'm continuing on.
link |
00:44:53.200
I'm still on, I would say.
link |
00:44:54.200
I don't think it resolved itself, but I will say I went in wide, eyes wide open.
link |
00:44:59.520
Like I knew that there were problems with, you know, giving stuff away and creating the,
link |
00:45:05.320
the market externalities, that the fact that, yeah, people might use it and I might not
link |
00:45:10.120
get paid for it and I'll have to figure something else out to get paid.
link |
00:45:12.680
Like at least I can say I'm not bitter that a lot of people have used stuff that I've
link |
00:45:16.840
written and I haven't necessarily benefited economically from it.
link |
00:45:19.840
Like I've heard other people be, you know, bitter about that when they write or they
link |
00:45:22.920
talk, they go, oh, I should have got more value out of this.
link |
00:45:25.160
And I'm also, I want to create systems that let people like me who might have these desires
link |
00:45:31.000
to do things, let them benefit so that actually creates more of the same.
link |
00:45:34.880
Not to turn on your bitterness module, but there's some aspect, I wish there was mechanisms
link |
00:45:40.320
for me to reward whoever created side pie and non pie because it brought so much joy
link |
00:45:44.480
into my life.
link |
00:45:45.480
I appreciate that.
link |
00:45:46.480
And I, the tip dark notion was there.
link |
00:45:48.240
I appreciate that.
link |
00:45:49.240
And I think there should be a very, there should be a machine less mechanism.
link |
00:45:52.600
I totally agree.
link |
00:45:53.600
I would love to talk about some of the ideas I have because I actually came across, I think
link |
00:45:56.440
I've come up with some interesting notions that could work, but they'll require anything
link |
00:46:01.040
that will work takes time to emerge.
link |
00:46:03.200
Right.
link |
00:46:04.200
And I don't just turn overnight.
link |
00:46:05.200
That's definitely one thing I've also understood and learned is any fixes.
link |
00:46:09.320
That's why it's kind of funny.
link |
00:46:10.320
We often give credit to, you know, oh, this president gets elected and, oh, look how great
link |
00:46:13.560
things have done.
link |
00:46:14.560
And I saw that when, when I had a transition in a condo, when a new CEO came in, right?
link |
00:46:19.560
And it's like the success that's happening.
link |
00:46:22.480
There's an inertia there.
link |
00:46:23.480
Yeah.
link |
00:46:24.480
Right.
link |
00:46:25.480
And sometimes the decision made like 10 years before is the reason why the success is
link |
00:46:28.360
the.
link |
00:46:29.360
Right.
link |
00:46:30.360
Exactly.
link |
00:46:31.360
So we're sort of just one around taking credit for stuff.
link |
00:46:32.360
Credit assignment has like a delay to it.
link |
00:46:34.600
Yes.
link |
00:46:35.600
That makes the credit assignment basically wrong more than right.
link |
00:46:39.360
Wrong more than right.
link |
00:46:40.360
Exactly.
link |
00:46:41.360
And so I'm like, oh, this is, you know, that's the stuff I would, I would read a ton about,
link |
00:46:44.280
you know, early on.
link |
00:46:45.780
So I don't, I feel like I'm with you.
link |
00:46:47.800
Like I want the same thing.
link |
00:46:48.800
I want to be able to, and honestly not for personally, I've been happy.
link |
00:46:51.680
I've been, I've been happy.
link |
00:46:52.680
I feel like I don't have any, I mean, we've been done reasonably okay, but I've had to
link |
00:46:55.920
pursue it.
link |
00:46:57.080
Like that's, that's really what started my trajectory from academia is reading that
link |
00:47:01.840
stuff led me to say, oh, entrepreneurship matters.
link |
00:47:04.840
So I love software, but we need more entrepreneurs and I want to understand that better.
link |
00:47:10.440
So once I kind of had that, that virus infect my brain, it, even though I was on a trajectory
link |
00:47:17.520
to go to a tenure track position at a university and I was there for six years, I was kind
link |
00:47:23.280
of already out the door when I started and we can get into that.
link |
00:47:27.080
Yeah, what can I just ask a quick question on, is there some design principles that were
link |
00:47:32.960
in your mind or on side pie?
link |
00:47:34.880
Like, is there some key ideas that were just like sticking to you that this is, this is
link |
00:47:39.120
the fundamental ideas?
link |
00:47:40.120
Yeah, I would say so.
link |
00:47:41.120
I would think it's basically accessibility to scientists, like give them, give scientists
link |
00:47:45.520
and engineers tools that they don't have to think a lot about programming.
link |
00:47:48.400
So give them really good building blocks, give them functions that they want to call
link |
00:47:51.760
and sort of just the right length of spelling.
link |
00:47:54.840
You know, there's a one tradition in a programming where it's like, you know, make very, very
link |
00:47:59.960
long names, right?
link |
00:48:02.000
And you can see it in some programming languages where the names get, you know, take half the
link |
00:48:05.920
screen and I, and in the fortune world, characters would have to be six, six letters early on,
link |
00:48:12.040
right?
link |
00:48:13.040
And that's way too, too much, too, too little, but I was like, I like to have names that
link |
00:48:16.840
were informative, but short.
link |
00:48:19.000
So even though Python was a different conversation, but documentation is doing so well.
link |
00:48:24.800
There's some work there.
link |
00:48:25.920
So when you look at great scientific libraries and functions, there's, there's a richness
link |
00:48:31.720
of documentation that helps you get into the details.
link |
00:48:34.880
The first glance at a function gives you the intuition of all it needs to do by looking
link |
00:48:39.000
at the headers and so on.
link |
00:48:40.600
But to get the depths of all the complexities involved, all the options involved, documentation
link |
00:48:45.360
does some of the work.
link |
00:48:46.360
Documentation is essential.
link |
00:48:47.360
Yeah.
link |
00:48:48.360
So that was actually, so we thought about several things.
link |
00:48:50.640
One is we wanted plotting.
link |
00:48:52.000
We wanted interactive environment.
link |
00:48:53.600
We wanted good documentation.
link |
00:48:54.920
These were things we knew, we wanted.
link |
00:48:56.800
The reality is those took about 10 years to evolve, right?
link |
00:49:00.600
Given the fact that we didn't have a big budget, it was all volunteer labor.
link |
00:49:03.120
It was sort of when Enthought got created and they started to, you know, try to find projects,
link |
00:49:10.120
people would pay for pieces and they were able to fund some of it, not nearly enough
link |
00:49:14.320
to keep up with what was necessary.
link |
00:49:15.800
And I'm, no, no criticism, just simply the reality.
link |
00:49:18.800
I mean, it's, it's hard to start a business and then do consulting and then also promote
link |
00:49:23.400
an open source project that's still fairly new.
link |
00:49:26.280
Cypher was fairly niche.
link |
00:49:27.880
We stayed connected all while I was a student, sorry, a professor.
link |
00:49:30.880
I went to BYU and started to teach, electrical engineering, all the applied math courses.
link |
00:49:35.040
I loved teaching, single processing, probability theory, electrical magnetism.
link |
00:49:39.080
I was the, if you look at right in my professor, which my kids loved to do, I wasn't, I got
link |
00:49:44.200
some bad reviews because people.
link |
00:49:46.240
What was the criticism?
link |
00:49:48.520
I would speak too high, too high of a level.
link |
00:49:51.000
Like I definitely had a calibration problem coming out of graduate work where I hate to
link |
00:49:55.680
be condescending to people.
link |
00:49:57.080
Like I really have a ton of respect for people fundamentally.
link |
00:49:59.320
Like my fundamental thing is I respect people.
link |
00:50:02.520
Sometimes that can lead to a, I was, I was thinking they were, they, they had more knowledge
link |
00:50:06.640
than they did.
link |
00:50:07.720
And so I would just speak at a very high level, assume they got it.
link |
00:50:11.080
But they need to rise to the standard that you set.
link |
00:50:14.280
I mean, that's one of the, some of the greatest teachers do that.
link |
00:50:16.760
And I agree, and that was kind of what was inspiring me, but, but you know, you also have to, I
link |
00:50:22.600
cannot say I was an art, I was articulate of some of the greatest teachers, right?
link |
00:50:26.280
I was, you know, like one, one classic example, when I first taught at BYU, my very first
link |
00:50:30.880
class, it was overheads, transparencies, overheads, before projectors were really that common.
link |
00:50:35.920
So transparencies, I'm writing my notes out, I go in, rooms half dark, I just blaring through
link |
00:50:41.960
these transparencies.
link |
00:50:42.960
Here it is.
link |
00:50:43.960
Here it is.
link |
00:50:44.960
And I did, gave a quiz after two weeks, nowhere knew anything, nothing I had taught, I had
link |
00:50:50.400
gotten anywhere.
link |
00:50:51.400
And I realized, okay, I'm not, this is not working.
link |
00:50:54.200
So I took, put away the transparencies and I turned around and just started using the
link |
00:50:57.480
chalkboard.
link |
00:50:58.480
And what it did is it slowed me down, right?
link |
00:51:00.960
The chalkboard just slowed me down and gave people time to process and to think and then
link |
00:51:05.080
that made me focus.
link |
00:51:06.080
My writing wasn't great on their chalkboard, but I really loved that part of like the teaching.
link |
00:51:10.600
So that, that entered sci pies world in terms of, we always understood that sci, there's
link |
00:51:13.800
a didactic aspect of sci pie kind of, how do you take the knowledge and then produce
link |
00:51:18.560
it?
link |
00:51:19.560
The challenge we had was the scope.
link |
00:51:21.160
Like ultimately sci pie was everything, right?
link |
00:51:23.560
And so 2001 when it first came out, people were starting to use it.
link |
00:51:26.840
No, this is cool.
link |
00:51:27.840
This is a tool we actually use.
link |
00:51:29.640
At the same time, 2001 timeframe, there was a little bit of like the Hubble Space Telescope,
link |
00:51:34.000
the folks at Hubble has started to say, hey, Python, we're going to use Python for processing
link |
00:51:37.520
images from Hubble.
link |
00:51:38.880
And so Perry Greenfield was a good friend and running that program and he had called me
link |
00:51:43.880
before I left to BYU and said, you know, we want to do this, but numeric actually has
link |
00:51:48.200
some challenges in terms of, you know, it's not, the array doesn't have enough types.
link |
00:51:52.760
We need more operations, you know, broadcast needs to be a little more settled.
link |
00:51:56.720
They wanted record arrays.
link |
00:51:57.720
They wanted, you know, record arrays are like a data frame, but a little bit different,
link |
00:52:01.800
but they want a more structured data.
link |
00:52:03.960
So he had called me even early on then and they said, yeah, would you want to work on
link |
00:52:07.360
something to make this work?
link |
00:52:08.360
And I said, yeah, I'm interested, but I'm going here and we'll see if I have time.
link |
00:52:12.200
So in the meantime, while I was teaching and SIPI was emerging and I had a student, I was
link |
00:52:15.840
constantly while I was teaching trying to figure a way to fund this stuff.
link |
00:52:18.920
So I had a graduate student, my only graduate student, a Chinese fellow, Lu Hongze is his
link |
00:52:25.120
name, great guy.
link |
00:52:26.400
He wrote a bunch of stuff for iterative linear algebra, like got into writing some of the
link |
00:52:31.080
iterative linear algebra tools that are currently there in SIPI and they've gotten better since,
link |
00:52:36.200
but this is in 2005, kept working on SIPI.
link |
00:52:39.440
But Perry has started working on a replacement to Numeric called Numeray and in 2004, a package
link |
00:52:47.160
called and the image, it was an image processing library that was written for Numeray.
link |
00:52:53.320
And it had in it a morphology tool.
link |
00:52:55.160
I don't know if you know what morphology is.
link |
00:52:56.800
It's open dilations.
link |
00:52:57.800
You know, there was sort of this, as a medical imaging student, I knew what it was because
link |
00:53:02.640
it was used in segmentation a lot.
link |
00:53:04.520
And in fact, I'd wanted to do something like that in Python in SIPI, but just had never
link |
00:53:08.720
gotten around to it.
link |
00:53:10.320
So when it came out that it worked only on Numeray and SIPI needed Numeric and so we
link |
00:53:16.680
effectively had the beginning of this split and Numeric and Numeray didn't share data.
link |
00:53:22.560
They were just two, so you could have a gigabyte of Numeray data and gigabyte of Numeric data
link |
00:53:26.480
and they wouldn't share it.
link |
00:53:27.480
And so you had these, then you had these scientific libraries written on top.
link |
00:53:31.280
I got really bugged by that.
link |
00:53:32.920
I got really like, oh man, this is not good.
link |
00:53:35.120
We're not cooperating now.
link |
00:53:36.360
We're sort of redoing each other's work and we're just this young community.
link |
00:53:40.480
So that's what led me, even though I knew it was risky because my, I was on a tenure
link |
00:53:46.400
track position.
link |
00:53:47.400
2004, I got reviewed.
link |
00:53:48.400
They said, hey, things are going okay.
link |
00:53:49.400
You're doing well.
link |
00:53:50.400
Paper's coming out.
link |
00:53:51.400
But you're kind of spending a lot of time on this open source stuff.
link |
00:53:53.520
Maybe do a little less of that and a little more of the paper writing and grant writing,
link |
00:53:57.360
which was naive, but it was definitely the tie, the thinking that still goes on, still
link |
00:54:01.880
goes on.
link |
00:54:03.240
You're basically creating a thing which enables science in the 21st century.
link |
00:54:09.560
Maybe don't emphasize that so much in your tenure.
link |
00:54:12.200
Right.
link |
00:54:13.200
It illustrates some of the challenges.
link |
00:54:15.720
It does.
link |
00:54:16.720
And it's, people mean well, but we've gotten broken in a bunch of ways.
link |
00:54:22.480
Certain things, a programming, understanding the role of software engineering, programming
link |
00:54:26.040
in society is a little bit like, I guess.
link |
00:54:28.360
Exactly.
link |
00:54:29.360
Now I was in an electrical engineering position.
link |
00:54:30.360
Right.
link |
00:54:31.360
Yeah, of course.
link |
00:54:32.360
There.
link |
00:54:33.360
Yeah.
link |
00:54:34.360
They were very focused.
link |
00:54:35.360
And so, good people, and I had a great time.
link |
00:54:37.280
I loved my time.
link |
00:54:38.280
I loved my teaching.
link |
00:54:39.280
I loved all the things I did there.
link |
00:54:40.560
The problem was, this split was happening, this community I loved.
link |
00:54:43.640
I saw people and I went, oh my gosh, this is going to be, this is not great.
link |
00:54:47.840
And so, I happened, fate, I had a class I signed up for, I was trying to build an MRI system.
link |
00:54:54.920
But I had a kind of a radio, a digital radio class, a digital MRI class.
link |
00:55:01.880
And I had people sign up, two people signed up, then they dropped, and so, I had nobody
link |
00:55:05.280
in this class.
link |
00:55:06.280
So, and I didn't have any other courses to teach, and I thought, oh, I've got some time.
link |
00:55:11.160
And I'll just write, I'll just write a merger of numeric and nummery.
link |
00:55:14.920
Like I'll basically take the numeric code base at the features nummery I was adding,
link |
00:55:19.360
and then kind of come up with a single array library that everybody can use.
link |
00:55:22.560
So that's where NumPy came from, was my thinking, hey, I can do this, and who else is going
link |
00:55:27.640
to?
link |
00:55:28.640
Because at that point, I'd been around the community long enough, and I'd written enough
link |
00:55:30.280
C code.
link |
00:55:31.280
I knew, I knew the structures.
link |
00:55:32.680
And I, in fact, my first contribution to numeric had been writing the CAPI documentation that
link |
00:55:38.680
went in the first documentation for NumPy, for numeric, sorry.
link |
00:55:42.200
This is Paul de Bois, David Asher, Conrad Henson and myself.
link |
00:55:45.120
I got credit because I wrote this chapter, which is all the CAPI of numeric, all the
link |
00:55:50.200
C stuff.
link |
00:55:51.200
So I said, ah, probably the one to do it, and nobody else is going to do this.
link |
00:55:54.840
So it's sort of out of a sense of duty and passion, knowing that I don't think my academic,
link |
00:56:01.440
I don't think the department here is going to appreciate this, but it's the right thing
link |
00:56:05.360
to do.
link |
00:56:06.360
Can we just link on that moment because the importance of the way you thought and the
link |
00:56:11.840
action you took, I feel is understated and is rare, and I would love to see so much more
link |
00:56:19.520
of it because what happens as the tools become more popular, there's a split that happens.
link |
00:56:27.520
And it's a truly heroic and impactful action to in those early, in that early split to
link |
00:56:33.560
step up and you, it's like great leaders throughout history, like get what is the brave heart,
link |
00:56:39.720
like get on a horse and, and rile the troops because I think that can have, make a big
link |
00:56:45.360
difference.
link |
00:56:46.360
We have TensorFlow versus PyTorch in the machine learning.
link |
00:56:49.080
We have the same problem today.
link |
00:56:50.400
Yeah.
link |
00:56:51.400
I wonder, it's actually bigger.
link |
00:56:52.520
I wonder if it's possible in the early days to rally the troops.
link |
00:56:58.280
It is possible, especially in the early days.
link |
00:57:00.000
The longer it goes, the harder, right?
link |
00:57:01.560
And the more energy in the factions, the harder, but in the early days, it is possible and it's
link |
00:57:05.920
extremely helpful and there's a willingness there, but, but the, but the challenge is
link |
00:57:10.800
there's usually not a willingness to fund it.
link |
00:57:13.040
There's not a willingness to, you know, like I was literally walking into a field saying
link |
00:57:17.680
I'm going to do this and you know, here I am, like, you know, I have five kids at home
link |
00:57:21.560
now.
link |
00:57:23.960
Pressure builds.
link |
00:57:24.960
Sometimes my wife hears these stories and she's like, you did what?
link |
00:57:27.960
I thought we were going to, I thought you were actually on a path to make sure we had
link |
00:57:32.280
resources and money, but, but again, there's a, there's an aspect, I'm, I'm a very hopeful
link |
00:57:37.320
person.
link |
00:57:38.320
I'm an optimistic person.
link |
00:57:39.320
My nature.
link |
00:57:40.320
I love people.
link |
00:57:41.320
I learned that about myself later on, uh, uh, part of my, uh, my religious beliefs actually
link |
00:57:47.440
lead to that.
link |
00:57:48.440
And it's why I hold them dear because it's actually how I feel about, it's what, it's
link |
00:57:51.760
what leads me to this, to these attitudes, sort of this hopefulness and this sense of,
link |
00:57:55.800
yeah, it may not, it may not work out for me financially or maybe, but that's not the
link |
00:57:59.440
ultimate gain.
link |
00:58:00.440
Like that's a thing, but it's not, you know, that's not the scorecard, uh, for me.
link |
00:58:05.240
And so I just wanted to be helpful and I knew, and partly because these sci pi conferences
link |
00:58:09.160
because of the main list conversations, I knew there was a lot of need for this.
link |
00:58:12.720
Right.
link |
00:58:13.720
And so I had this, it wasn't like I was alone in terms of no feedback.
link |
00:58:16.480
I had these people who knew, but it was crazy.
link |
00:58:19.600
Like people who, to the time said, yeah, we didn't think you'd be able to do it.
link |
00:58:22.040
Yeah.
link |
00:58:23.040
We thought it was crazy.
link |
00:58:24.040
And also instructive, like practically speaking, that you had a cool feature that you were
link |
00:58:29.000
chasing in the morphology, like the, like it's, it's not just like, it's not some visionary
link |
00:58:34.640
thing.
link |
00:58:35.640
I'm going to unite the community.
link |
00:58:37.200
You were like, you were actually practically, this is what one person actually can do, uh,
link |
00:58:42.280
and actually build.
link |
00:58:43.280
Cause that is important cause you can get over your skis.
link |
00:58:46.720
Yeah.
link |
00:58:47.720
You can definitely get over your skis.
link |
00:58:49.200
And I had, in fact, this almost got me over my skis, right?
link |
00:58:52.120
I would say, well, in retrospect, I hate looking back, we can, I can tell you all the flaws
link |
00:58:57.240
with NumPy.
link |
00:58:58.240
Right.
link |
00:58:59.240
We want to go into it.
link |
00:59:00.240
There's lots of stuff that I'm like, oh man, that's embarrassing.
link |
00:59:01.800
That was wrong.
link |
00:59:02.800
I wish I had somebody slot me with a wet fish there.
link |
00:59:04.040
Yeah.
link |
00:59:05.040
Like I needed, like what I'd wished I'd had was somebody with more experience and certainly
link |
00:59:09.920
library writing and array library.
link |
00:59:11.640
Like I wish I had me, I could go back in time and go, do this, do that.
link |
00:59:14.640
There's an important thing.
link |
00:59:15.640
Cause there's things we did that are still there that are problematic that created challenges
link |
00:59:20.360
for later.
link |
00:59:21.360
And, and I didn't know it at the time, didn't understand how important that was.
link |
00:59:24.600
And in many cases, didn't know what to do.
link |
00:59:26.560
Like there was pieces of the design of NumPy.
link |
00:59:29.080
I didn't know what to do until five years ago.
link |
00:59:31.440
Now I know what they should have been, but I didn't know at the time and nobody, and
link |
00:59:34.120
I couldn't get the help.
link |
00:59:35.120
Anyway.
link |
00:59:36.120
So I wrote it.
link |
00:59:37.120
It took about, it took four months to write the first version and then about 14 months
link |
00:59:41.440
to make it usable.
link |
00:59:43.520
But it was, it wasn't, it was that first four months of intense writing, coding, getting
link |
00:59:48.560
something out the door that worked.
link |
00:59:50.680
That was, it was, it was definitely challenging.
link |
00:59:52.520
And then the big thing I did was create a new type object called D type.
link |
00:59:55.720
That was probably the sync, the, the contribution.
link |
00:59:58.960
And then the fact that I added a broad, not just broadcasting, but advanced indexing.
link |
01:00:03.640
So that you could do, um, masked indexing and indirect indexing instead of just slicing
link |
01:00:09.400
in.
link |
01:00:10.400
So for people who don't know, and maybe you can elaborate NumPy, I guess the vision in
link |
01:00:15.960
the narrowest sense is to have this object that represents n dimensional arrays.
link |
01:00:23.480
And like at any level of abstraction you want, but basically it could be a black box that
link |
01:00:28.280
you can investigate in ways that you would naturally want to investigate such objects.
link |
01:00:33.120
Yes.
link |
01:00:34.120
Exactly.
link |
01:00:35.120
So you could do math on it easily.
link |
01:00:36.120
Math on it easily.
link |
01:00:37.120
Yeah.
link |
01:00:38.120
So it had an associated library of math operations.
link |
01:00:39.960
And effectively SciPy became an even larger operate set of math operations.
link |
01:00:45.040
So the key for me was I was going to write NumPy and then move SciPy to depend on NumPy.
link |
01:00:50.440
In fact, early on, one of the initial proposals was that we would just write SciPy and it would
link |
01:00:54.760
have the numeric object inside of it and it'd be SciPy dot array or something.
link |
01:00:59.960
That turned out to be problematic because numeric already had a little mini library of linear
link |
01:01:04.240
algebra and some functions and it had enough momentum, enough users that nobody wanted
link |
01:01:09.840
to...
link |
01:01:10.840
They wanted the backward compatibility.
link |
01:01:11.840
One of the big challenges of NumPy was I had to be backward compatible with both numeric
link |
01:01:15.760
and numeric in order to allow both of those communities to come together.
link |
01:01:19.040
There was a ton of work in creating that backward compatibility that also created echoes in
link |
01:01:24.280
today's object.
link |
01:01:25.560
Like some of the complexity in today's object is actually from that goal of backward compatibility
link |
01:01:30.080
to these other communities, which if you didn't have that, you'd do something different,
link |
01:01:34.720
which is instructive because a lot of things are there.
link |
01:01:36.920
You think, what is that there for?
link |
01:01:38.960
It's like, well, it's a remnant, it's an artifact of its historical existence.
link |
01:01:43.960
By the way, I love the empathy and the lack of ego behind that because I feel...
link |
01:01:49.960
You see that in the split, in the JavaScript frameworks, for example, the arbitrary branching.
link |
01:01:56.920
I think in order to unite people, you have to kind of put your ego aside and truly listen
link |
01:02:01.240
to others.
link |
01:02:02.240
You do.
link |
01:02:03.240
What do you love about Numeric?
link |
01:02:04.960
What do you love about numeric?
link |
01:02:06.680
Actually get a sense.
link |
01:02:07.680
I was talking about languages earlier, sort of empathize to the culture of the people
link |
01:02:11.520
that love something about this particular API, the naming style, or the usage patterns,
link |
01:02:21.360
and truly understand them so that you can create that same draw in the united thing.
link |
01:02:28.680
I completely agree.
link |
01:02:29.680
You have to also have enough passion that you'll do it.
link |
01:02:32.480
It can't be just like a perfunctory, oh yes, I'm really illicit to you, and then I'm not
link |
01:02:37.120
really that excited about it.
link |
01:02:38.520
So it really is an aspect, it's a philosophical, like there's a filia, there's a love of esteeming
link |
01:02:43.760
of others that's actually at the heart of what is sort of a life philosophy for me,
link |
01:02:48.960
right, that I'm constantly pursuing, and that helped, absolutely helped.
link |
01:02:52.960
Makes me wonder in a philosophical, like looking at human civilization as one object, it makes
link |
01:02:57.800
me wonder how we can copy and paste Travis's in the story.
link |
01:03:01.880
Well, in some aspects, maybe.
link |
01:03:03.480
Some aspects, right, right, exactly.
link |
01:03:05.440
Well, it's a good question, how do we teach this, how do we encourage it, how do we lift
link |
01:03:09.840
it?
link |
01:03:10.840
Because so much of the software world, it's giant communities, right, but it seems like
link |
01:03:15.720
so much is moved by little individuals.
link |
01:03:18.240
You talk about Linus Tarvald, it's like, could you have had Linux without him?
link |
01:03:26.160
Could you?
link |
01:03:27.160
Yeah, Guido and Python.
link |
01:03:28.160
Guido and Python.
link |
01:03:29.160
Guido and Python.
link |
01:03:30.160
I mean, in the scipy community in particular, I said we wanted to build this big thing,
link |
01:03:32.920
but ultimately we didn't, what happened is we had Mavericks and champions like John Hunter
link |
01:03:36.600
who created Map.lib, we had Fernando Perez who created iPython, and so we sort of inspired
link |
01:03:41.480
each other, but in the credit, there's sort of a culture of this selfless, giving the
link |
01:03:46.320
stewardship mentality, as opposed to ownership mentality, but stewardship and community focused,
link |
01:03:54.280
community focused, but intentional work, like not waiting for everybody else to do the work,
link |
01:03:59.000
but you're doing it for the benefit of others and not worried about what you're going to
link |
01:04:02.080
get.
link |
01:04:03.080
You're not worried about the credit, you're not worried about what you're going to get,
link |
01:04:05.920
you're worried about, I later realized that I have to worry a little about credit, not
link |
01:04:09.120
because I want the credit, because I want people to understand what led to the results.
link |
01:04:13.240
It's not about me, it's I want to understand this is what led to the result, so I think
link |
01:04:18.640
doing, and this is what had no impact on the result, like let's promote, this is just like
link |
01:04:22.920
you said, I want to promote the attributes that help make us better off.
link |
01:04:26.600
How do we make more of West McKinney, like West McKinney was critical to the success
link |
01:04:31.040
of Python because of his creation of pandas, which is the roots of that, we're all the
link |
01:04:35.920
way back in American num array and NumPy, where NumPy created an array of records, West started
link |
01:04:43.640
to use that almost like a data frame, except it's an array of records, and data frame,
link |
01:04:49.080
the challenge is, okay, if you want to augment it at another column, you have to insert, you
link |
01:04:53.800
have to do all this memory movement to insert a column, whereas data frames became, oh, I'm
link |
01:04:57.400
going to have a loose collection of arrays, so it's a record of arrays that is the heart
link |
01:05:03.440
of a data frame.
link |
01:05:04.440
And we thought about that back in the memory days, but West ended up doing the work to
link |
01:05:08.280
build it, and then also the operations that were relevant for data processing.
link |
01:05:12.720
What I noticed is just that each of these little things creates just another tick, another
link |
01:05:16.840
up, so NumPy ultimately took a little while, about six months in, people started joining
link |
01:05:22.080
me, Francesc Alted, Robert Kern, Charles Harris, and these people are many of the unsung
link |
01:05:29.320
heroes, I would say.
link |
01:05:30.520
People who are, they sometimes don't get the credit they deserve, because they were critical
link |
01:05:35.320
both to support, it's hard and you need some support, people need support, and I needed
link |
01:05:40.680
just encouragement, and they were helping, encouraged by contributing.
link |
01:05:44.320
And once, the big thing for me was when John Hunter, he had previously done kind of a simple
link |
01:05:49.960
thing called numerics to kind of, you know, between numeric and nummery, he had a little
link |
01:05:53.680
high level tool that would just select each one for Matplotlib.
link |
01:05:58.000
In 2006, he finally said, we're going to just make NumPy the dependency of Matplotlib.
link |
01:06:03.240
As soon as he did that, and I remember specifically when he did that, I said, okay, we've done
link |
01:06:07.560
it.
link |
01:06:08.560
Like, that was when I knew we had to see success.
link |
01:06:11.480
Before then, it was still, you know, doing sure, but that kind of started a roller coaster
link |
01:06:14.960
and then 2006 to 2009, and then I've been floored by what it's done.
link |
01:06:20.920
Like, I knew it would help, I had no idea how much it would help, right.
link |
01:06:25.800
And it has to do with, again, the language thing, it just, people started to think in
link |
01:06:30.760
terms of NumPy.
link |
01:06:33.320
And that opened up a whole new way of thinking.
link |
01:06:36.680
And part of the story that you kind of mentioned, but maybe you can elaborate, it seems like
link |
01:06:43.960
at some point in this story, Python took over science and data science, and not bigger
link |
01:06:53.080
than that, the scientific community started to think like programmers or started to utilize
link |
01:07:01.800
the tools of computers to do, like at a scale that wasn't done with Fortran, like at this
link |
01:07:07.440
gigantic scale, they started to opening their heart, and then Python was the thing.
link |
01:07:12.000
I mean, there's a few other competitors, I guess, but Python, I think, really, really
link |
01:07:16.240
took over.
link |
01:07:17.240
I agree.
link |
01:07:18.240
There's a lot of stories here that are kind of during this journey, because this is sort
link |
01:07:20.360
of the start of this journey in 2005, 2006.
link |
01:07:23.360
So my tenure committee, I applied for tenure in 2006, 2007, it came back, I split the department.
link |
01:07:29.720
I was very polarizing.
link |
01:07:31.240
I had some huge fans, and then some people said, no way, right.
link |
01:07:34.400
So it was very, I was a polarizing figure in the department.
link |
01:07:36.880
It went all the way up to the university president.
link |
01:07:39.000
Ultimately, my department chair had this way, and they didn't say no, they said, come back
link |
01:07:44.400
in two years and do it again.
link |
01:07:46.400
And I went, at that point, I was like, I had this interest in entrepreneurship, this interest
link |
01:07:53.400
in not the academic circles, not the, like, how do we make industry work?
link |
01:07:59.760
So I do have to give credit to that exploration of economics, because that led me, oh, I had
link |
01:08:05.600
a lot of opinions, I was actually very libertarian at the time.
link |
01:08:09.680
And I still have some libertarian trends, but I'm more of a, I'm more of a collectivist
link |
01:08:14.560
libertarian.
link |
01:08:15.560
So you value broadly, philosophically, freedom?
link |
01:08:19.240
Value broadly, philosophically, freedom, but I also understand the power of communities,
link |
01:08:23.520
like the power of collective behavior.
link |
01:08:26.440
And so what's that balance, right, that makes sense?
link |
01:08:29.920
So by the time I was just, I got to go out and explore this entrepreneurial world.
link |
01:08:33.440
When I left academia, I said, no thanks, called my friend, Eric, here, who had, his company
link |
01:08:39.040
was going, I said, hey, could I join you and start this trend?
link |
01:08:43.280
And he, at that time, they were usually inspired by a lot, they were trying to get clients,
link |
01:08:46.800
and so I came down to Texas.
link |
01:08:48.800
And in Texas is where I sort of, it's my entrepreneur world, right?
link |
01:08:53.360
I left academia and went to entrepreneur world in 2007.
link |
01:08:57.400
So moved here in 2007, kind of took a leap, knew nothing really about business, knew nothing
link |
01:09:01.880
about a lot of stuff there.
link |
01:09:05.240
There's, you know, for a long time, I've kept some connections to a lot of academics, because
link |
01:09:09.200
I still value it.
link |
01:09:10.200
I still love the scientific tradition, I still value the essence and the soul and the heart
link |
01:09:15.160
of what is possible.
link |
01:09:17.680
Don't like a lot of the administration and the kind of, we can go into detail about why
link |
01:09:23.840
and where and how this happens, what are the challenges?
link |
01:09:26.320
I mean, I don't know, but I'm with you, so I'm still affiliated with MIT, I still love
link |
01:09:32.640
MIT, because there's magic there, and there's people I talk to, like researchers, faculty,
link |
01:09:40.600
in those conversations and the white board and just the conversation, that's magic there.
link |
01:09:46.320
All the other stuff, the administration, all that kind of stuff, seems to, you don't want
link |
01:09:52.960
to say too harshly criticized sort of bureaucracies, but there's a lag that seems to get in the
link |
01:09:59.160
way of the magic.
link |
01:10:01.080
And I don't, I'm still have a lot of hope that that can change, because I don't often
link |
01:10:07.920
see that particular type of magic elsewhere in the industry.
link |
01:10:12.920
So like we need that, and we need that flame going, and it's the same thing as exactly
link |
01:10:18.600
as you said, it has the same kind of elements like the open source community does.
link |
01:10:23.840
But then if you, like the reason I stepped away, the reason I'm here, just like you did
link |
01:10:29.200
in Austin is like, if I want to build one robot, I'll stay at MIT, but if I want to
link |
01:10:33.840
build millions and make money enough to work and explore the magic of that, then you can't.
link |
01:10:41.120
And I think that dance is...
link |
01:10:43.520
The translational dance has been lost a bit, and there's a lot of reasons for that.
link |
01:10:48.800
I'm certainly not an expert on this stuff, I can opine like anybody else, but I realized
link |
01:10:53.960
that I wanted to explore entrepreneurship, and really figure out, and it's been a driving
link |
01:10:58.600
passion for 20 years, 20, 25 years, how do we connect capital markets and company, because
link |
01:11:06.600
again, I fell in love with the notion, oh, profit seeking on its own is not a bad thing.
link |
01:11:11.240
It's actually a coordination mechanism for allocating resources that in an emergent way,
link |
01:11:18.000
that respects everybody's opinions.
link |
01:11:20.760
So this is actually powerful.
link |
01:11:22.400
So I say all the time, when I make a company and we do something that makes profit, what
link |
01:11:27.360
we're saying is, hey, we're collecting of the world's resources and voluntarily people
link |
01:11:30.640
are asking us to do something that they like, and that's a huge deal.
link |
01:11:34.080
And so I really liked that energy, so that's what I came to do and to learn and to try
link |
01:11:37.840
to figure out.
link |
01:11:38.840
I've been kind of stumbling through for the past 14 years.
link |
01:11:41.560
And that's 2007.
link |
01:11:42.560
2007, yeah.
link |
01:11:43.560
And so you were still working on an opine.
link |
01:11:45.040
So no pie was just emerging, right?
link |
01:11:46.760
Just emerging.
link |
01:11:47.760
One of the things I'd done, it's worth mentioning because it emphasized the exploratory nature
link |
01:11:52.400
of my thinking at the time.
link |
01:11:53.400
I said, well, I don't know how to fund this thing.
link |
01:11:55.200
I've got a graduate student I'm paying for, and I've got no funding for him.
link |
01:11:58.000
And I had done some fundraising from the public to try to get public fundraising from my lab.
link |
01:12:02.800
I didn't really want to go out and just do the fundraising circuit the way it's traditionally
link |
01:12:06.280
done.
link |
01:12:07.280
So I wrote a book, and I said, I'm going to write a book, and I'm going to charge for
link |
01:12:10.800
it.
link |
01:12:11.800
It was called Guide to NumPy.
link |
01:12:12.800
And so ultimately NumPy became documentation driven development because I basically wrote
link |
01:12:16.720
the book and made sure the stuff worked, so the book would work.
link |
01:12:19.880
So it really helped actually make NumPy become a thing.
link |
01:12:23.160
So writing that book, and it was not a page turner, Guide to NumPy is not a book you pick
link |
01:12:29.400
up and go, oh, this is great, over the fire.
link |
01:12:31.640
But it's where you could find the details, like how did all this work?
link |
01:12:34.840
And a lot of people love that book.
link |
01:12:36.600
And so a lot of people ended up, but I said, look, I need to, so I'm going to charge for
link |
01:12:40.800
it.
link |
01:12:41.800
And I got some flak for that, not that much.
link |
01:12:43.880
Just probably five angry messages, people yelling at me saying I was a bad guy for charging
link |
01:12:50.880
for this book.
link |
01:12:51.880
It was one of them which is dumb.
link |
01:12:52.880
I'm just kidding.
link |
01:12:53.880
No, I haven't really had any interaction with him personally, like I said.
link |
01:12:58.640
But there were a few, but I'm just surprisingly not, there were actually a lot of people
link |
01:13:02.320
like, no, it's fine.
link |
01:13:03.320
You can charge for a book.
link |
01:13:04.320
That's no big deal.
link |
01:13:05.320
That's the way you can try to make money around open source.
link |
01:13:08.600
So what I did, what I did in an interesting way, I said, well, you know, kind of my idea
link |
01:13:12.360
is around IP law and stuff.
link |
01:13:14.280
I love the idea.
link |
01:13:15.280
You can share something.
link |
01:13:16.280
You can spread it.
link |
01:13:17.280
Like once it's, the fact that you have a thing and copying is free, but the creation
link |
01:13:20.920
is not free.
link |
01:13:21.920
So how do we, how do you fund the creation and allow the copying, right?
link |
01:13:25.400
And the software is a little more complicated than that because creation is actually a continuous
link |
01:13:28.560
thing.
link |
01:13:29.560
You know, it's not like you build a widget that's done, it's sort of a process of emerging
link |
01:13:32.600
and continuing to create.
link |
01:13:34.760
But I wrote the book and had this market determined price thing.
link |
01:13:37.480
I said, look, I need, I think I said 250,000.
link |
01:13:39.600
If I make 250,000 from this book, it's, it'll, I'll make it free.
link |
01:13:44.440
So as soon as I get that much money, or I said five years, right?
link |
01:13:48.160
So there's a time limit.
link |
01:13:49.160
Like forever.
link |
01:13:50.160
Cool.
link |
01:13:51.160
I didn't know this story.
link |
01:13:52.160
Yeah.
link |
01:13:53.160
So I released it on this.
link |
01:13:54.160
And it's actually interesting because one of the people who also thought that was interesting
link |
01:13:56.960
ended up being Chris White, who was the director of DARPA project that we got funding
link |
01:14:01.960
through at Anaconda, and the reason he even called us back is because he remembered my
link |
01:14:05.360
name from this book and he thought that was interesting.
link |
01:14:08.240
And so even though we hadn't gone to the demo days, we applied and the people said, yeah,
link |
01:14:12.760
nobody ever gets this without coming to the demo day first.
link |
01:14:15.160
It's the first time I've seen it, but it's because I knew, you know, Chris had done this
link |
01:14:18.840
and had this interaction.
link |
01:14:19.840
So it did have impact.
link |
01:14:21.680
I was actually really, really pleased by the result.
link |
01:14:23.880
I mean, I ended up, I ended up in three years, I mean, 90,000.
link |
01:14:27.480
So sold 30,000 copies by myself.
link |
01:14:29.480
I just put it up on, you know, used PayPal and sold it.
link |
01:14:33.120
And those are my first tastes of kind of, okay, this can work to some degree.
link |
01:14:38.480
And I, you know, all over the world, right?
link |
01:14:40.520
From Germany to Japan to, it was actually, it did work.
link |
01:14:44.600
And so I appreciated the fact that PayPal existed and had a way to make, to get the money.
link |
01:14:49.200
The distribution was simple.
link |
01:14:51.280
This is pre Amazon book stuff.
link |
01:14:53.600
So it was just publishing a website.
link |
01:14:55.320
It was the popularity of sci fi emerging and getting company usage.
link |
01:14:58.920
I ended up not letting it go the five years and not trying to make the full amount because,
link |
01:15:03.400
you know, a year and a half later, I was at Enthought.
link |
01:15:05.280
I had left academia as an Enthought and I kind of had a full time job.
link |
01:15:07.840
And then actually what happened is the documentation people, there's a group that said, hey, we
link |
01:15:10.880
want to do documentation for sci fi as a collective.
link |
01:15:13.840
And they were essentially needing the stuff in the book.
link |
01:15:18.080
Right.
link |
01:15:19.080
And so they kind of asked, hey, can we just use the stuff in your book?
link |
01:15:21.840
And at that point I said, yeah, I'll just open it up.
link |
01:15:24.240
So that's, but it has served its purpose.
link |
01:15:27.360
And the money that I made actually funded my grad student.
link |
01:15:31.040
Like it was actually, you know, I paid him $25,000 a year out of that money.
link |
01:15:35.280
The funny thing is if you do a very similar kind of experiment now with NumPy or something
link |
01:15:39.640
like it, you could probably make a lot more.
link |
01:15:42.440
It's probably true.
link |
01:15:44.000
Because of the tooling and the community building.
link |
01:15:46.200
Yeah, I agree.
link |
01:15:47.200
Like the, and social media, there's just a virality to that kind of idea.
link |
01:15:51.400
I agree.
link |
01:15:52.400
There'd be things to do.
link |
01:15:53.400
I've thought about that.
link |
01:15:54.400
I really had thought about a couple of books or a couple of things that could be done there.
link |
01:15:57.480
And I just haven't, right?
link |
01:15:59.120
I even, I tried to hire a ghostwriter this year too to speak if I could help, but it
link |
01:16:03.640
didn't.
link |
01:16:04.640
Part of my problem is this, I've been so excited by a number of things that stemmed
link |
01:16:08.480
in from that.
link |
01:16:09.480
Like, so I came here, worked at and thought for four years, graciously, you know, Eric
link |
01:16:14.000
made me president and we started to work closely together.
link |
01:16:16.320
We actually helped him buy out his partner.
link |
01:16:19.520
It didn't end great.
link |
01:16:20.800
Like unfortunately Eric and I aren't friends now.
link |
01:16:24.520
I still respect him.
link |
01:16:25.520
I have a lot, you know, I wish we were, but he didn't like the fact that Peter and I
link |
01:16:30.120
started Anaconda.
link |
01:16:31.120
Right?
link |
01:16:32.120
That was not, I mean, so there's two sides of that story, so I'm not going to go into
link |
01:16:36.840
it, right?
link |
01:16:37.840
Sure.
link |
01:16:38.840
But you, as human beings and you wish you still could be friends.
link |
01:16:42.320
I do.
link |
01:16:43.320
I do.
link |
01:16:44.320
It saddens me.
link |
01:16:45.320
I mean, that's a story of great minds building great companies.
link |
01:16:51.600
Somehow it's sad that when there's that kind of...
link |
01:16:55.240
And I hold him in esteem.
link |
01:16:57.360
I'm grateful for him.
link |
01:16:58.360
I think they're doing, you know, their thoughts still exist.
link |
01:17:00.360
They're doing great work helping scientists.
link |
01:17:02.560
They still run the SciPy conference.
link |
01:17:05.160
They're in the, they have an R&D platform they're selling now that's a tool that you
link |
01:17:08.760
can go get today, right?
link |
01:17:10.200
So they've been, Enthought has played a role in the SciPy, in supporting the community
link |
01:17:16.440
around SciPy, I would say.
link |
01:17:18.320
They ended up not being able to, they ended up building a tool suite to write GUI applications.
link |
01:17:24.200
Like that's where they could actually make that the business could work.
link |
01:17:26.840
And so the supporting SciPy and NumPy itself wasn't as possible.
link |
01:17:30.680
Like they didn't, they try.
link |
01:17:31.680
I mean, it was not just because, it was just because the business aspect.
link |
01:17:34.560
So, and then I wanted to build a company that could do, that could get venture funding,
link |
01:17:38.240
right?
link |
01:17:39.240
Better for worse.
link |
01:17:40.240
I mean, that's a longer story.
link |
01:17:41.240
We could talk a lot about that, but.
link |
01:17:42.520
And that's, that's where Anaconda came to be.
link |
01:17:44.320
That's where Anaconda came to be.
link |
01:17:45.320
So let me, let me ask you, it's a little bit for fun because you built this amazing thing.
link |
01:17:50.240
And so let's, let's talk about like an old warrior looking over old battles.
link |
01:17:56.560
You've, you know, there's a sad letter in 2012 that you wrote to the NumPy mailing list
link |
01:18:04.280
the knowledge that you're leaving NumPy and some of the things you've listed and some,
link |
01:18:09.320
some of the things you regret or not regret necessarily, but some things to think about.
link |
01:18:14.560
If you could go back and you could fix stuff about NumPy or both sort of in a personal
link |
01:18:20.320
level, but also like looking forward, what kind of things would you like to see changed?
link |
01:18:24.640
Good questions.
link |
01:18:25.640
So I think there's technical questions and social questions right there.
link |
01:18:29.920
First of all, you know, I wrote NumPy as a service and I spent a lot of time doing it
link |
01:18:34.920
and then other people came help make it happen.
link |
01:18:37.000
NumPy succeeded because of the work of a lot of people, right?
link |
01:18:39.920
So it's, it's important to be able to understand that I'm grateful for the opportunity at the
link |
01:18:43.920
role I had, I could play and grateful that things I did had an impact, but they only
link |
01:18:47.880
had the impact they had because the other people that came to the, to the story.
link |
01:18:52.280
And so they were essential, but the way data types were handled, the way data types we
link |
01:18:56.480
had array scalars, for example, that are really just a substitute for a type concept, right?
link |
01:19:04.080
So we had array scalars or actual Python objects so that there's for every, for a 32 bit float
link |
01:19:09.480
or a 16 bit float or a 16 bit integer, Python doesn't have a natural, it's just a one integer
link |
01:19:15.760
has one float.
link |
01:19:16.760
Well, what about these lower precision types, these larger precision types?
link |
01:19:21.680
So we had them in NumPy so that you could have a collection of them, but then have an object
link |
01:19:26.160
in Python that was one of them.
link |
01:19:28.880
And there's questions about like in retrospect, I wouldn't have created those of an improved
link |
01:19:33.240
the type system and like made the type system actually a Python type system, as opposed
link |
01:19:38.400
to currently it's a Python one level type system.
link |
01:19:41.200
I don't know if you know the difference between Python one, Python two, it's kind of technical
link |
01:19:44.200
kind of depth, but Python two, one of its big things that Guido did, it was really brilliant.
link |
01:19:48.080
It was he actually Python one, all classes, new objects were, were one.
link |
01:19:55.040
So he was a user wrote a class.
link |
01:19:56.920
It was an instance of a single Python type called the, called the class type, right?
link |
01:20:02.080
In Python two, he used a meta typing hook to actually go, oh, we can extend this and have
link |
01:20:08.280
users write classes that are new types.
link |
01:20:10.360
So he was able to have your user classes be actual types and the Python type system got
link |
01:20:14.480
a lot more rich.
link |
01:20:16.440
I barely understood that at the time that NumPy was written.
link |
01:20:19.200
And so I essentially in Python and NumPy created a type system that was Python one era.
link |
01:20:24.480
It was every, every D type is an instance of the same type, as opposed to having new
link |
01:20:30.560
D types be really just Python types with additional metadata.
link |
01:20:34.040
What's the cost of that?
link |
01:20:35.520
Is it efficiencies or usability?
link |
01:20:37.240
It's usability primarily.
link |
01:20:39.000
The cost isn't really efficiency.
link |
01:20:41.400
It's the fact that it's clumsy to create new types.
link |
01:20:45.200
It's hard.
link |
01:20:46.200
And then one of the challenges you want to create new types, you want to quaternion type
link |
01:20:49.440
or you want to add a new, you know, posit type or you want to.
link |
01:20:54.280
So it's hard.
link |
01:20:55.280
Now in the, and now if we had done that well, when NumPy came on the scene where we could
link |
01:21:00.640
actually compile Python code, it would integrate with that type system much cleaner.
link |
01:21:05.240
And now all of a sudden you could do gradual typing more easily.
link |
01:21:08.520
You could actually have Python when you add NumPy plus better typing, could actually be
link |
01:21:12.480
a, you'd smooth out a lot of rough edges.
link |
01:21:16.800
But there's already, there's like, but are you talking about from the perspective of
link |
01:21:20.960
developers within NumPy or users of NumPy?
link |
01:21:24.040
Developers of new, not really users of NumPy so much.
link |
01:21:27.200
It's the development of NumPy.
link |
01:21:28.640
So you're thinking about like how to design NumPy so that it's contributors.
link |
01:21:33.480
Yeah.
link |
01:21:34.480
The contributors, it's easier.
link |
01:21:36.480
It's easier.
link |
01:21:37.480
It's less work to make it better and to keep it maintained.
link |
01:21:39.920
And where that's impacted things, for example, is the GPU, like all of a sudden GPUs start
link |
01:21:44.600
getting added and we don't have them in NumPy.
link |
01:21:48.440
Like NumPy should just work on GPUs.
link |
01:21:50.600
The fact that we have to, you'd have to download a whole other object called Koopi to have arrays
link |
01:21:54.080
on GPUs is just an artifact of history.
link |
01:21:57.080
Like there's no, there's no fundamental reason for it.
link |
01:21:59.280
Well, that's really interesting if we could sort of go on that tangent briefly is you have
link |
01:22:04.400
PyTorch and other library like TensorFlow that basically tried to mimic NumPy.
link |
01:22:10.840
Yeah.
link |
01:22:11.840
Like you've created a sort of platonic form of multi dimension.
link |
01:22:16.520
Yeah.
link |
01:22:17.520
Yeah.
link |
01:22:18.520
Exactly.
link |
01:22:19.520
Well, and the problem was they didn't realize that.
link |
01:22:20.520
There were a lot of edges.
link |
01:22:21.520
They were like, well, we should cut those out before we present it.
link |
01:22:24.280
So I mean, I wonder if you can comment, is there like a difference between their implementations?
link |
01:22:29.480
Do you wish that they were all using NumPy over, like in this abstraction on GPU?
link |
01:22:34.360
And sorry to interrupt it, that there's GPUs, ASICs.
link |
01:22:38.400
There might be other neuromorphic computing.
link |
01:22:40.200
There might be other kind of, or the aliens will come with a new kind of computer, like
link |
01:22:44.120
an abstraction that NumPy should just operate nicely over the things that are more and more
link |
01:22:50.160
and smarter and smarter with this multi dimensional arrays.
link |
01:22:54.360
Yeah.
link |
01:22:55.360
Yeah.
link |
01:22:56.360
There's several comments there.
link |
01:22:57.360
We are working on something now called data dash apis.org, data dash api.org.
link |
01:23:01.560
You can go there today.
link |
01:23:02.720
And it's our answer.
link |
01:23:04.560
It's my answer.
link |
01:23:05.560
You know, it's not just me.
link |
01:23:06.560
It's me and Rolf and Athen and Aaron and a lot of companies are helping us at Quonsite
link |
01:23:11.520
Labs.
link |
01:23:12.520
It's not unifying all the arrays, it's creating an API that is unified.
link |
01:23:17.320
So we do care about this and we're trying to work through it.
link |
01:23:20.840
I actually had the chance to go and meet with the TensorFlow team and the PyTorch team and
link |
01:23:25.560
talk to them after exiting Anaconda, just talking about, because the first year after
link |
01:23:31.640
leaving Anaconda in 2018, I became deeply aware of this and realized that, oh, the split
link |
01:23:36.840
in the array community that exists today makes what I was concerned about in 2005 pretty
link |
01:23:41.920
parochial.
link |
01:23:44.440
It's a lot worse.
link |
01:23:45.440
Right?
link |
01:23:46.440
It's a lot worse than people, so perhaps the industry can sustain more stacks, right?
link |
01:23:50.960
There's a lot of money, but it makes it a lot less efficient.
link |
01:23:54.160
I mean, I've also learned to appreciate, it's okay to have some competitions, okay to have
link |
01:23:58.920
different implementations, but it's better if you can at least refactor some parts.
link |
01:24:03.640
I mean, you're going to have more efficient if you can refactor parts.
link |
01:24:07.160
It's nice to have competition over things, over what it's nice to have competition.
link |
01:24:11.440
They're innovative.
link |
01:24:12.440
Yeah, innovative.
link |
01:24:13.440
And then maybe on the infrastructure, whatever, however you define infrastructure, maybe it's
link |
01:24:19.720
nice to have competition together.
link |
01:24:21.440
Exactly.
link |
01:24:22.440
I agree.
link |
01:24:23.440
And I think, but it was interesting to hear the stories.
link |
01:24:24.600
I mean, TensorFlow came out of the C++ library.
link |
01:24:29.160
Jeff Dean wrote, I think, that was basically how they were doing inference, right?
link |
01:24:33.640
And then they realized, oh, we could do this TensorFlow thing.
link |
01:24:36.600
That C++ library, then what was interesting to me was the fact that both Google and Facebook
link |
01:24:42.120
did not, it's not like they supported Python or NumPy initially, they just realized they
link |
01:24:45.880
had to.
link |
01:24:46.880
They came to this world and then all the users were like, hey, where's the NumPy interface?
link |
01:24:50.560
Oh, and then they kind of came late to it and then they had these bolt ons.
link |
01:24:54.920
TensorFlow's bolt on, I don't mean to offend, but it was so bad.
link |
01:24:59.160
It's the first time that I'm usually, I mean, one of the challenges I have is I don't criticize
link |
01:25:04.840
enough because in the sense that I don't give people input enough.
link |
01:25:10.000
I think it's universally agreed upon that the bolt ons on TensorFlow work.
link |
01:25:13.600
But I went to it.
link |
01:25:14.600
It was a talk given at a Py...
link |
01:25:15.640
My Orca in Spain and a guy, great guy, came and gave a talk and I said, you should never
link |
01:25:20.360
show that IPI again at a PyData conference.
link |
01:25:23.320
That was terrible.
link |
01:25:25.640
You're taking this beautiful system we've created and you're corrupting all these poor
link |
01:25:28.360
Python people, forcing them to write code like that or thinking they should.
link |
01:25:32.880
Fortunately, they adopted Keras as their, and Keras is better.
link |
01:25:36.920
And so Keras, TensorFlow is fine, is reasonable, but they bolted it on.
link |
01:25:43.000
Facebook did too.
link |
01:25:44.000
Facebook had their own C++ library for doing inference and they also had the same reaction.
link |
01:25:50.120
They had to do this.
link |
01:25:51.320
One big difference is Facebook, maybe because of the way it's situated in part of FAIR, part
link |
01:25:55.360
of their research library, TensorFlow is definitely used and they couldn't just open it up and
link |
01:26:00.720
let the community change what that is because I guess they were worried about disrupting
link |
01:26:05.240
their operations.
link |
01:26:07.160
Facebook's been much more open to having community input on the structure itself, whereas Google
link |
01:26:13.440
and TensorFlow, they're really eager to have community users.
link |
01:26:16.160
People use it and build the infrastructure, but it's much more walled.
link |
01:26:19.240
It's harder to become a contributor to TensorFlow itself.
link |
01:26:21.760
And it's also, this is a very difficult question to answer and don't mean to be throwing shade
link |
01:26:26.440
at anybody, but you have to wonder, it's the Microsoft question of when you have a tool
link |
01:26:31.720
like PyTorch or TensorFlow, how much are you tending to the hackers and how much are you
link |
01:26:36.920
tending to the big corporate clients?
link |
01:26:39.280
Correct.
link |
01:26:40.280
Correct.
link |
01:26:41.280
Do you tend to the millions of people that are giving you almost no money, or do you tend
link |
01:26:46.920
to the few that are giving you a ton of money?
link |
01:26:50.320
I tend to stand with the people.
link |
01:26:54.480
I feel like if you nurture the hackers, you will make the right decisions in the long
link |
01:26:59.760
term that will make the companies happy.
link |
01:27:02.000
I lean that way too.
link |
01:27:03.000
I totally agree.
link |
01:27:04.000
But then you have to find the right dance.
link |
01:27:05.640
But it's a balance, because you can lean to the hackers and run out of money.
link |
01:27:09.160
Yeah, exactly.
link |
01:27:10.160
Exactly.
link |
01:27:11.160
Which has been some of the challenge I've faced in the sense that I would look at some
link |
01:27:16.360
of the experiments, like NumPy, the fact that we have this split is a factor of I wasn't
link |
01:27:20.520
able to collect more money towards NumPy development, right?
link |
01:27:23.560
I mean, it didn't succeed in the early days of getting enough financial contribution to
link |
01:27:29.120
NumPy, so they didn't really work on it, right?
link |
01:27:31.240
I couldn't work on it full time.
link |
01:27:32.440
I had to just catch an hour here, an hour there, and I basically not like that.
link |
01:27:38.160
I've wanted to be able to do something about that for a long time and try to figure out
link |
01:27:41.280
how, well, there's lots of ways, I mean, possibly one could say, you know, we had an offer from
link |
01:27:45.480
Microsoft at early days of Anaconda, 2014, they offered to come buy us, right?
link |
01:27:51.240
The problem was the right people at Microsoft didn't offer to buy us, and they were still,
link |
01:27:55.320
it was really, we were like a second, they had really bought, they had just bought R,
link |
01:27:59.760
the R company called, it was not R Studio, but it was another R company that was emergent,
link |
01:28:05.960
and it was kind of a, well, we should also get a Python play, but they were really double
link |
01:28:10.400
it down on R, right?
link |
01:28:11.840
And so it was like...
link |
01:28:12.840
It was where you would go to die, so it wasn't, it was before Saatcha was there.
link |
01:28:17.560
Saatcha had just started.
link |
01:28:18.560
Just started.
link |
01:28:19.560
Right?
link |
01:28:20.560
And the offer was coming from someone two levels down from him.
link |
01:28:23.200
Got you.
link |
01:28:24.200
So it would come from Scott Guthrie, so I got a chance to meet Scott Guthrie, great
link |
01:28:28.520
guy, I like him.
link |
01:28:29.920
If it offered to come from him, probably would be at Microsoft right now.
link |
01:28:33.360
That'd be fascinating.
link |
01:28:34.360
And that would be really nice, actually, especially given what Microsoft has since done for the
link |
01:28:38.960
open source community and all those things.
link |
01:28:40.440
Yes, I think they're doing well.
link |
01:28:41.680
I really like some of the stuff they've been doing.
link |
01:28:43.920
They're still working, and they've hired Guido now, and they've hired a lot of Python developers.
link |
01:28:47.920
Wait, Guido's not at Microsoft?
link |
01:28:49.920
Yeah.
link |
01:28:50.920
I need to...
link |
01:28:51.920
He retired, then he came out of retirement, and he's working on...
link |
01:28:55.520
I was just talking to him, and he didn't mention this part.
link |
01:28:58.040
Well...
link |
01:28:59.040
I should have better to get this further, because I know he loved Dropbox, but I wasn't
link |
01:29:03.120
sure what he was doing, or what he was up to.
link |
01:29:05.240
Well, he was kind of saying he'd retire, but it's literally been five years since I last
link |
01:29:10.640
sat down and really talked to Guido, right?
link |
01:29:13.880
Guido's a technology expert, right?
link |
01:29:16.760
So I came, I was excited because I'd finally figured out the type system for NumPy.
link |
01:29:20.720
I wanted to kind of talk about that with him, and I kind of overwhelmed him.
link |
01:29:23.680
Could you stay in that...
link |
01:29:25.320
Just for a brief moment, because you're a fascinating person in the history of programming.
link |
01:29:29.520
He is a fascinating person.
link |
01:29:31.440
What have you learned from Guido about programming, about life?
link |
01:29:37.440
Yeah, yeah.
link |
01:29:38.440
A lot, actually.
link |
01:29:39.440
I've been a fan of Guido's.
link |
01:29:41.360
We have a chance to talk.
link |
01:29:42.560
Some, I wouldn't say we talk all the time, not really at all, but we've talked enough
link |
01:29:47.240
to...
link |
01:29:48.240
In fact, when I first started NumPy, one of the first things I did was I asked Guido
link |
01:29:52.080
for a meeting with him and Paul de Bois in San Mateo, and I went and met him for lunch.
link |
01:29:57.280
Basically, to say, maybe we can actually...
link |
01:29:59.400
Part of the strategy for NumPy was to get it into Python 3, and maybe be part of Python.
link |
01:30:04.240
So we talked about that, and about that approach, right?
link |
01:30:06.880
That's a cool conversation.
link |
01:30:07.880
I would have loved to be a fly in the water.
link |
01:30:09.280
That was good.
link |
01:30:10.280
Over the years for Guido, I learned...
link |
01:30:13.720
So he was open.
link |
01:30:15.680
He was willing to listen to people's ideas, right, and over the years.
link |
01:30:19.840
Now, generally, I'm not saying universally that's been true, but generally that's been
link |
01:30:24.160
true.
link |
01:30:25.160
So he's willing to listen.
link |
01:30:26.160
He's willing to defer.
link |
01:30:27.400
Like on the scientific side, he would just defer.
link |
01:30:29.120
He didn't really always understand what we were doing, and he'd defer.
link |
01:30:33.000
One place where he didn't enough was we missed a matrix multiply operator.
link |
01:30:37.880
Like that finally got added to Python, but about 10 years later than it should have.
link |
01:30:42.360
The reason was because nobody... it takes a lot of effort, and I learned this while
link |
01:30:46.960
I was writing NumPy.
link |
01:30:48.120
I also wrote tools to...
link |
01:30:49.120
I became a Python dev, and I added some pieces to Python, like the memory view object.
link |
01:30:53.400
I wanted the structure of NumPy into Python.
link |
01:30:55.800
So we didn't get NumPy into Python, but we got the basic structure of it into Python,
link |
01:30:59.880
so you could build on it.
link |
01:31:01.240
Nobody did for a while, but eventually, database authors started to, and it's a lot better.
link |
01:31:05.840
They did.
link |
01:31:06.840
And also, Antoine Petrot and Stefan Krau actually fixed the memory view object, because I wrote
link |
01:31:11.480
the underlying infrastructure in C, but the Python exposure was terrible until they came
link |
01:31:16.000
in and fixed it, partly because I was writing NumPy, and NumPy was the Python exposure.
link |
01:31:19.920
I didn't really care about if you didn't have NumPy installed.
link |
01:31:22.840
Anyway, Guido opened up ideas, technologically brilliant.
link |
01:31:26.920
I really got a lot of respect from when I saw what he did with this type class merger
link |
01:31:33.160
thing.
link |
01:31:34.160
It was actually tricky, and then willing to share.
link |
01:31:37.200
Willing to share his ideas.
link |
01:31:38.600
So the other thing, early on in 1998, I said I start wrote my first extension module.
link |
01:31:42.320
The reason I could is because he wrote this blog post on how to do reference counting.
link |
01:31:47.480
And without it, I would have been lost.
link |
01:31:50.120
But he was willing to at least try to write this post.
link |
01:31:53.320
And so he's been motivated, early on with Python, there's a computer science for everybody.
link |
01:31:57.800
We're going to have this early on desire to, oh, maybe we should be pushing programming
link |
01:32:01.480
to more people.
link |
01:32:02.480
So he had this populist notion, I guess, or populist sense.
link |
01:32:05.800
So there's a certain skill, and I've seen it in other people, too, of engaging with
link |
01:32:12.040
contributors sufficiently to, because when somebody engages with you and wants to contribute
link |
01:32:16.200
to you, if you ignore them, they go away.
link |
01:32:18.480
So building that early contributor base requires real engagement with other people, and he
link |
01:32:23.480
would do that.
link |
01:32:24.480
Can you also comment on this tragic stepping down from his position as the benevolent
link |
01:32:31.080
dictator for life over the war's, you know, the walrus operator, the walrus operator was
link |
01:32:38.080
the last battle.
link |
01:32:39.080
I don't know if that's the cause of it, but there's this, for people who don't know,
link |
01:32:43.720
you can look up, there's the walrus operator, which is, looks like a colon and equal sign.
link |
01:32:49.600
Yeah, colon, equal sign.
link |
01:32:51.120
And it actually does maybe the thing that you, that an equal sign should be doing.
link |
01:32:57.640
Yeah.
link |
01:32:58.640
Maybe.
link |
01:32:59.640
Right.
link |
01:33:00.640
It's just historically, an equal sign means something else, it just means a Simon.
link |
01:33:05.440
So he stepped down over this, what do you think about the pressure of leadership?
link |
01:33:09.760
It's something that you mentioned, the letter I wrote in Empire of the Time, that was a
link |
01:33:14.000
hard time actually, I mean, you know, there's been really hard times, it was hard, you know,
link |
01:33:19.720
you get criticized, right?
link |
01:33:20.960
And you get pushed, and you get, not everybody loves what you do, like anytime you do anything
link |
01:33:25.000
that has impact at all, you're not universally loved, right?
link |
01:33:28.640
You get some real critics, and that's an important energy because it's impossible for you to
link |
01:33:34.280
do everything right.
link |
01:33:35.280
You need people to be pushing, but sometimes people can get mean, right?
link |
01:33:39.560
People can, I prefer to give people the benefit of the doubt, I don't immediately assume they
link |
01:33:44.040
have bad intentions.
link |
01:33:46.000
And maybe for other, you know, maybe that doesn't happen for everybody, they, for whatever
link |
01:33:49.360
reason, their past, their experience of people, they sometimes have bad intentions, so they
link |
01:33:53.280
immediately attribute to you bad intentions, they're like, where did this come from?
link |
01:33:56.240
And I definitely open to criticism, but I think you're misinterpreting the whole point.
link |
01:34:00.680
Because I would get that, you know, sort of when I started Anaconda, you know, I've been,
link |
01:34:06.000
sometimes I say to people, I know I'm, I care enough about entrepreneurship to make some
link |
01:34:10.160
open source people uncomfortable, and I care enough about open source to make investors
link |
01:34:14.400
uncomfortable.
link |
01:34:15.400
So I sort of, you know, create, you create kind of doubters on both sides.
link |
01:34:20.040
So when you have, and this is just a plea to the listener and the public, I've noticed
link |
01:34:26.640
this too, that there's a tendency in social media makes this worse, when you don't have
link |
01:34:33.560
perfect information about the situation, you tend to fill the gaps with the worst possible,
link |
01:34:39.400
or at least a bad story that fills those gaps.
link |
01:34:43.480
And I think it's good to live life, maybe not fully naively, but filling in the gaps
link |
01:34:49.720
with the, with the good, with the best, with the positive, with the hopeful explanation
link |
01:34:56.400
of why you see this.
link |
01:34:57.400
So if you see somebody like you trying to make money on a book about NumPy, there's
link |
01:35:02.400
a million stories around that that are positive.
link |
01:35:05.040
And those are good to think about, to project positive intent on the people.
link |
01:35:10.880
Because for many reasons, usually because people are good, and they do have good intent.
link |
01:35:15.680
And also when you project that positive intent, people will step up to that.
link |
01:35:18.840
It's a great point.
link |
01:35:19.840
It has this kind of viral nature to it.
link |
01:35:24.440
And of course, what Twitter early on figured out on Facebook is that they can make a lot
link |
01:35:29.400
of money and engagement from the negative.
link |
01:35:32.360
Yes.
link |
01:35:33.360
And so like there's this, we're fighting this mechanism, which is challenging.
link |
01:35:36.560
It's like easier.
link |
01:35:37.680
It's just easier to be.
link |
01:35:38.760
To be negative.
link |
01:35:39.760
And then for some reason, something in our mind really enjoys sharing that and getting,
link |
01:35:44.240
getting all excited about the negativity.
link |
01:35:46.280
We do.
link |
01:35:47.280
Yeah.
link |
01:35:48.280
It's a great mechanism perhaps that we're, we're going to eat and if we don't.
link |
01:35:51.000
Yeah.
link |
01:35:52.000
Exactly.
link |
01:35:53.000
For us to be effective as a group of people in a software engineering project, you have
link |
01:35:54.720
to project positive intent, I think.
link |
01:35:56.840
I totally agree.
link |
01:35:57.840
Totally agree.
link |
01:35:58.840
And I think that's very, and so that happens in this, in the space, but Python has done
link |
01:36:02.640
a reasonable job in the past, but here's a situation where I think it's, it started
link |
01:36:05.840
to get this pressure where it didn't.
link |
01:36:07.840
I was, I really didn't, I didn't know enough about what happened.
link |
01:36:10.440
I've, you know, talked to several people about it.
link |
01:36:12.160
And I know most of the steering committee members today, one, one person nominated me
link |
01:36:17.160
for that role, but it's the wrong role for me right now, right?
link |
01:36:20.880
I have a lot of respect for the Python developer space and the Python developers.
link |
01:36:25.440
I also understand the gap between computer science Python developers and array programming
link |
01:36:30.000
developers or science developers.
link |
01:36:31.280
And in fact, Python succeeds in the array space.
link |
01:36:34.640
The more it has people in that boundary and there's often very few, like I was playing
link |
01:36:38.560
a role in that boundary and, you know, working like everything to try to keep up with the,
link |
01:36:43.760
with the, what, even what Gita was saying.
link |
01:36:45.600
Like I'm a C programmer, but not a computer scientist, like I was a engineer and physicist
link |
01:36:51.280
and mathematician and I don't, I didn't always understand what they were talking about and
link |
01:36:56.520
why they would have opinions the way they did.
link |
01:36:58.480
So you know, you have to listen and try to understand, then you also have to explain
link |
01:37:01.400
your point of view in a way they can understand.
link |
01:37:03.640
And that takes a lot of work and that, that communication is always the challenge.
link |
01:37:07.960
And it's just what we're describing here about the negativity is just another form
link |
01:37:10.640
of that.
link |
01:37:11.640
Like how do we come together?
link |
01:37:12.640
And it does appear we were wired anyway to at least have a, there's a part of us that
link |
01:37:16.680
will enemy, you know, friend, enemy and, and we see, yeah, it's like, why are we wiring
link |
01:37:21.920
on the enemy front?
link |
01:37:22.920
Yeah.
link |
01:37:23.920
So, so why are we pushing that?
link |
01:37:24.920
Why are we promoting that so deeply?
link |
01:37:26.960
Assume friend until proven otherwise.
link |
01:37:28.760
Yes.
link |
01:37:29.760
Yes.
link |
01:37:30.760
So because you have such a fascinating mind and all this, let me just ask you these questions.
link |
01:37:34.120
So one interesting side on the Python history is the move from Python two to Python three.
link |
01:37:41.040
You mentioned move from Python one to Python two, but the move from Python two to Python
link |
01:37:46.440
three is a little bit interesting because it took a very long time.
link |
01:37:50.720
It broke in quite a small way, backward compatibility, but even that small way seemed to have been
link |
01:37:56.920
very painful for people.
link |
01:37:58.760
Is there a lessons you draw from, from how long it took and how painful it seemed to
link |
01:38:05.240
be?
link |
01:38:06.240
Yeah, tons of lessons.
link |
01:38:07.240
I mentioned here earlier that NumPy was written in 2005.
link |
01:38:11.920
It was in 2005 that I actually went to Guido to talk about getting NumPy into Python three.
link |
01:38:17.320
Like my strategy was to, oh, we were moving to Python three.
link |
01:38:20.120
Let's have that be.
link |
01:38:21.120
And it seems funny in retrospect because like, wait, Python three, that was in 2020, right,
link |
01:38:25.520
when we finally ended support for Python two or at least 2017.
link |
01:38:29.080
The reason it took a long time, a lot of time, I think it was because one of the things is
link |
01:38:33.240
there wasn't much to like about Python three, 3.0, 3.1, it really wasn't until 3.3, like
link |
01:38:40.440
I consider Python 3.3 to be Python 3.0, but it wasn't until Python 3.3 that I felt there's
link |
01:38:45.240
enough stuff in it to make it worth anybody using it, right?
link |
01:38:49.840
And then 3.4 started to be, oh, yeah, I want that.
link |
01:38:52.640
And then 3.5 as the matrix move play operator, and now it's like, okay, we got to use that.
link |
01:38:56.680
Plus the libraries that started leveraging some of the features of Python three.
link |
01:39:00.120
Exactly.
link |
01:39:01.120
Yeah.
link |
01:39:02.120
And then there was, it was, but it also illustrated a truism that, you know, it's, when you have
link |
01:39:07.760
inertia, when you have a group of people using something, it's really hard to move them away
link |
01:39:11.480
from it.
link |
01:39:12.480
You can't just change the world on them.
link |
01:39:14.040
And Python three, you know, it made some, I think it fixed some things, Guido had always
link |
01:39:16.840
hated it.
link |
01:39:17.840
I don't think he didn't like the fact that print was a statement.
link |
01:39:18.840
He wanted to make it a function.
link |
01:39:19.840
But in some sense, that's a bit of gratuitous change to the language.
link |
01:39:24.240
And you could argue, and there's people have, but there was, one of the challenges was there
link |
01:39:30.240
wasn't enough features and too many just changes without features.
link |
01:39:35.240
And so the empathy for the end user as to why they would switch wasn't, wasn't there.
link |
01:39:40.440
I think also it illustrated just the funding realities.
link |
01:39:43.080
Like Python wasn't funded.
link |
01:39:44.560
Like it was also a project with a bunch of volunteer labor, right?
link |
01:39:47.760
It had more people, so more volunteer labor, but it was still, it was fun to the sense
link |
01:39:52.240
that at least Guido had a job.
link |
01:39:53.520
And I've learned some of the behind the scenes on that now since talking to people who have
link |
01:39:57.440
put through it, and maybe not on air, we can talk about some of that, but it's interesting
link |
01:40:02.120
to see, but Guido had a job, but his full time job wasn't just work on Python.
link |
01:40:07.200
Like he had other things to do.
link |
01:40:08.440
It's just wild.
link |
01:40:09.440
It is wild, isn't it?
link |
01:40:11.000
As wild as how few people are funded, and how much impact they have.
link |
01:40:16.440
Maybe that's a feature in our bug.
link |
01:40:17.440
I don't know.
link |
01:40:18.440
Maybe, yes, exactly.
link |
01:40:19.440
At least early on.
link |
01:40:20.440
It's sort of, I know.
link |
01:40:21.440
Yeah.
link |
01:40:22.440
It's like Olympic athletes are often severely underfunded, but maybe that's what brings
link |
01:40:26.240
out the greatness.
link |
01:40:27.240
Correct.
link |
01:40:28.240
Yes, correct.
link |
01:40:29.240
No, exactly.
link |
01:40:30.240
Maybe this is the essential part of it, because I do think about that in terms of, I currently
link |
01:40:34.080
have an incubator for open source startups.
link |
01:40:36.440
What I'm trying to do right now is create the environment I wished it existed when I was
link |
01:40:41.440
leaving academia with NumPy and trying to figure out what to do.
link |
01:40:43.840
I'm trying to create those opportunities and environments.
link |
01:40:47.480
And that's what drives me still, is how do I make the world easier for the open source
link |
01:40:51.320
entrepreneur?
link |
01:40:52.320
Let me stay, I could probably stay in NumPy for a long time, but this is a fun question.
link |
01:41:01.080
So Andre Capati leads the Tesla autopilot team, and he's also one of the most legit programmers.
link |
01:41:09.360
I know.
link |
01:41:11.360
He builds stuff from scratch a lot, and that's how he builds intuition about how a problem
link |
01:41:16.000
works.
link |
01:41:17.000
He builds it from scratch, and I always love that.
link |
01:41:18.480
And the primary language he uses is Python for the intuition building.
link |
01:41:23.240
But he posted something on Twitter saying that they got a significant improvement on
link |
01:41:31.880
some aspect of their data loading, I think, by switching away from NP.square root, so the
link |
01:41:40.120
NumPy's implementation of square root to math.square root, and then somebody else commented that
link |
01:41:44.600
you can get even a much greater improvement by using the vanilla Python square root,
link |
01:41:51.760
which is like...
link |
01:41:52.760
Power 0.5.
link |
01:41:53.760
Power 0.5.
link |
01:41:55.480
And it's fascinating to me, I just wanted to...
link |
01:41:58.760
So that was some shade throwing at some...
link |
01:42:02.120
No, no.
link |
01:42:03.120
And yes, we're talking about...
link |
01:42:04.840
It's a good way to ask the trade off between usability and efficiency broadly in NumPy,
link |
01:42:12.160
but also in these specific weird quirks of a single function.
link |
01:42:17.080
So on that point, if you use a NumPy math function on a scaler, it's going to be slower
link |
01:42:24.960
than using a Python function on that scaler.
link |
01:42:29.280
Because the math object in NumPy is more complicated, because you can also call that
link |
01:42:34.640
math object on an array.
link |
01:42:36.840
And so effectively, it goes through a similar machine where there aren't enough of the...
link |
01:42:41.200
Which you could do, like checks and fast paths.
link |
01:42:46.080
So yeah, if you're basically doing a list, if you run over a list, in fact, for problems
link |
01:42:51.160
that are less than 1,000, even maybe 10,000 is probably the...
link |
01:42:55.520
If you're going more than 10,000, that's where you definitely need to be using arrays.
link |
01:42:58.640
But if you're less than that, and for reading, if you're doing a reading process, and essentially
link |
01:43:03.600
it's not compute bound, it's IO bound, and so you're really taking lists of 1,000 at
link |
01:43:07.960
a time and then doing work on it, yeah, you could be faster just using Python.
link |
01:43:11.160
Straight up Python.
link |
01:43:12.160
See, but also, this is the fundamental questions when you look at the long arc of history.
link |
01:43:21.360
It's very possible that np.square root is much faster.
link |
01:43:25.640
It could be.
link |
01:43:26.640
So in terms of don't worry about it, it's the evils of over optimization or whatever,
link |
01:43:32.520
all the different quotes around that is sometimes obsessing about this particular little quirk
link |
01:43:39.440
is not sufficient.
link |
01:43:41.760
For somebody like, if you're trying to optimize your path, I agree, premature optimization
link |
01:43:47.600
creates all kinds of challenges, right, because now, but you may have to do it.
link |
01:43:51.800
I believe the quote is the root of all evils.
link |
01:43:54.000
The root of all evils, right?
link |
01:43:55.000
I mean, let's give Don Knuth, I think, or let's give Don Knuth somebody else.
link |
01:43:59.160
Well, Don Knuth is kind of like Mark Twain, people just attribute stuff to him, I don't
link |
01:44:02.760
know.
link |
01:44:03.760
And it's fine because he's brilliant.
link |
01:44:04.760
No, I was a latech user myself, and so I have a lot of respect, and he did more than
link |
01:44:10.200
that, of course, but yeah, someone I really appreciate in the computer science space.
link |
01:44:15.360
Yeah, I think that's appropriate.
link |
01:44:17.120
There's a lot of little things like that where people, actually, if you understood it, you
link |
01:44:20.200
go, yeah, of course, that's the case.
link |
01:44:22.720
And the other part I didn't mention, and Numba was a thing we wrote early on, and I was really
link |
01:44:28.240
excited by Numba because it's something we wanted, it was a compiler for Python syntax.
link |
01:44:32.080
I wanted it from the beginning of writing NumPy because of this function question, like
link |
01:44:38.480
taking, the power of arrays is really that you can write functions using all of it.
link |
01:44:45.360
It has implicit looping.
link |
01:44:46.360
Right?
link |
01:44:47.360
So you don't worry about, I write this n dimensional for loop with four loops for four statements.
link |
01:44:51.240
You just say, oh, big four dimensional array, I'm going to do this operation, this plus,
link |
01:44:55.320
this minus, this reduction.
link |
01:44:57.120
And you get this, it's called vectorization in other areas, but you can basically think
link |
01:45:00.720
at a high level and get massive amounts of computation done.
link |
01:45:03.760
With the added benefit of, oh, it can be paralyzed easily, it can be put in parallel, you don't
link |
01:45:09.160
have to think about that.
link |
01:45:10.160
In fact, it's worse to go decompose your, you write the four loops and then try to infer
link |
01:45:15.040
parallelism from four loops.
link |
01:45:16.320
That's actually harder problem than to take the array problem and just automatically parallelize
link |
01:45:21.200
that problem.
link |
01:45:22.200
That's what, and so functions in NumPy are called universal functions, ufunc.
link |
01:45:27.120
So square root is an example of a ufunc.
link |
01:45:29.040
There are others, sine, cosine, add, subtract.
link |
01:45:32.440
In fact, one of those first libraries to PsiPy was something called special where I added
link |
01:45:35.880
vessel functions and all these special functions that come up in physics and I added them as
link |
01:45:40.880
ufunc so they could work on arrays.
link |
01:45:43.040
So I understood ufuncs very, very well from day one inside of numeric.
link |
01:45:45.840
That was one of the things we tried to make better in NumPy was how do they work?
link |
01:45:49.240
Can they do broadcasting?
link |
01:45:50.440
What does broadcasting mean?
link |
01:45:52.120
But one of the problems is, okay, what do I do with a Python scalar?
link |
01:45:57.400
So what happens, the Python scalar gets broadcast to a zero dimensional array and then it goes
link |
01:46:01.720
through the whole same machinery as if it were a 10,000 dimensional array and then it
link |
01:46:06.400
kind of unpacks the element and then does the addition.
link |
01:46:10.040
That's not to mention the function it calls in the case of square root is just the C lab
link |
01:46:14.560
square root, right?
link |
01:46:16.000
In some cases, like Python's power, there's some optimizations they're doing that can
link |
01:46:20.880
be faster than just calling this the C lab square root.
link |
01:46:23.840
In the interpreter or in the C code?
link |
01:46:25.440
No, in the C code.
link |
01:46:26.480
In the Python runtime.
link |
01:46:27.720
In the Python.
link |
01:46:28.720
So they really optimize it and they have the freedom to do that because they don't have
link |
01:46:32.480
to worry about it.
link |
01:46:33.480
It's just a scalar.
link |
01:46:34.480
It's just a scalar, right?
link |
01:46:35.480
They don't have to worry about the fact that, oh, this could be an object with many pieces.
link |
01:46:39.440
The ufunc machine is also generic in sense that typecasting and broadcasting.
link |
01:46:45.040
Broadcasting's idea of I'm going to go, I have a zero dimensional array, I have a scalar
link |
01:46:47.840
with a four dimensional array and I add them.
link |
01:46:50.400
Oh, I have to kind of coerce the shape of this guy to make it work against the whole
link |
01:46:55.880
four dimensional array.
link |
01:46:56.880
So it's the idea of I can do a one dimensional array against a two dimensional array and
link |
01:47:01.080
have it make sense.
link |
01:47:02.080
Well, that's what NumPy does is it challenges you to reformulate, rethink your problem as
link |
01:47:07.240
a multi dimensional array problem versus like move away from scalars completely.
link |
01:47:12.600
Right, exactly.
link |
01:47:13.600
Yeah.
link |
01:47:14.600
Exactly.
link |
01:47:15.600
In fact, that's where some of the edge cases boundaries are is that, well, they're still
link |
01:47:17.960
there and this is where array scalars are particular.
link |
01:47:21.120
So array scalars are particularly bad in the sense that they were written so that you
link |
01:47:24.760
could optimize the math on them, but that hasn't happened, right?
link |
01:47:29.200
And so their default is to you is to coerce the array scalar to a zero dimensional array
link |
01:47:33.640
and then use the NumPy machinery.
link |
01:47:36.240
That's what you could specialize, but it doesn't happen all the time.
link |
01:47:40.080
So in fact, when we first wrote Numba, we do comparisons and say, look, it's a thousand
link |
01:47:43.880
X speed up.
link |
01:47:45.880
We're lying a little bit in the sense that, well, first do the 40 X slowdown of using the
link |
01:47:50.520
array scalars inside of a loop because if you used to use Python scalars, you'd already
link |
01:47:55.160
be 10 times faster.
link |
01:47:56.160
Yeah.
link |
01:47:57.160
But then we would get a hundred times faster over that using just compilation.
link |
01:48:00.400
And what we do is compile the loop from out of the interpreter to machine code.
link |
01:48:04.120
And then that's always been the power of Python is this extensibility so you can, could people
link |
01:48:08.520
say, oh, Python's so slow?
link |
01:48:09.720
Well, sure.
link |
01:48:10.720
If you do all your logic in the runtime of the Python interpreter, yeah.
link |
01:48:14.040
But the power is that you don't have to.
link |
01:48:16.080
You write all the logic which you do in the high level is just high level logic.
link |
01:48:19.960
And the actual calls you're making could be on gigabyte arrays of data.
link |
01:48:24.480
And that's all done at compiled speeds.
link |
01:48:27.000
And the fact that integration is one can happen, but two is separable.
link |
01:48:32.560
That's one of the, the language like Julia says, we're going to be all in one.
link |
01:48:36.440
You can do all of it together.
link |
01:48:37.440
And then there's, the jury's out.
link |
01:48:39.200
Is that possible?
link |
01:48:40.200
I tend to think that you're going to, there's separate concerns there.
link |
01:48:43.440
You want to precompile.
link |
01:48:44.440
In fact, generally you will want to precompile your, some of your loops.
link |
01:48:48.480
Like scipy is a compilation step to install scipy.
link |
01:48:51.260
It takes about two hours.
link |
01:48:52.760
If you have many machines, maybe you can get it down to one hour, but to compile all those
link |
01:48:56.080
libraries takes about, takes a while.
link |
01:48:57.960
You don't want to do that at runtime.
link |
01:48:59.960
You don't want to do that all the time.
link |
01:49:00.960
You want to have this precompiled binary available that you're then just linking into.
link |
01:49:04.480
So there's real questions about the whole, you know, source code code is running binary
link |
01:49:10.520
code is more than source code.
link |
01:49:11.960
It's create an object code.
link |
01:49:13.200
It's the linker.
link |
01:49:14.200
It's the loader.
link |
01:49:15.200
It's the, how does that interpret it inside of a virtual memory space?
link |
01:49:17.680
There's a lot of details there that actually I didn't understand for a long time until
link |
01:49:20.680
I, you know, read books on the topic and it, and it led to the more you know, the better
link |
01:49:25.720
off you are and you can do more details, but sometimes it helps with abstractions too.
link |
01:49:31.440
Well the problem, as we mentioned earlier with abstractions is you kind of sometimes
link |
01:49:35.800
assume that whoever implemented this thing had your case in mind and found the optimal
link |
01:49:43.920
solution.
link |
01:49:44.920
Yes.
link |
01:49:45.920
Or like you assume certain things, I mean, there's a lot of, one of the really powerful
link |
01:49:49.920
things to me early on, I mean, it sounds silly to say, but with Python probably one
link |
01:49:56.120
of the reasons I fell in love with it is dictionaries.
link |
01:49:59.840
Yes.
link |
01:50:01.040
So obviously probably most languages have some mapping concept, some mapping concept,
link |
01:50:06.560
but it felt like it was a first class citizen and it was just my brain was able to think
link |
01:50:10.840
in dictionaries.
link |
01:50:11.840
But then there's the thing that I guess I still use to this day is order dictionaries
link |
01:50:17.360
because that seems like a more natural way to construct dictionaries and from a computer
link |
01:50:22.840
science perspective, the running time cost is not that significant, but there's a lot
link |
01:50:26.520
of things to understand about dictionaries that the abstraction kind of doesn't necessarily
link |
01:50:34.800
incentivize you to understand.
link |
01:50:36.760
Right.
link |
01:50:37.760
You really understand the notion of a hash map and how the dictionary is implemented,
link |
01:50:41.160
but you're right.
link |
01:50:42.440
Dictionaries are a good example of an abstraction that's powerful and I agree with you, I love
link |
01:50:46.880
dictionaries too.
link |
01:50:47.880
It took me a while to understand that once you do you realize, oh, they're everywhere
link |
01:50:50.280
and Python uses them everywhere too.
link |
01:50:53.120
It's actually constructed one of the foundational things as dictionaries and it does everything
link |
01:50:56.240
with dictionaries.
link |
01:50:57.240
Yes.
link |
01:50:58.240
So it is, it's powerful.
link |
01:50:59.240
Order dictionaries came later, but it is very, very powerful.
link |
01:51:02.280
It took me a little while coming from just the array programming entirely to understand
link |
01:51:06.560
these other objects like dictionaries and lists and tuples and binary trees.
link |
01:51:11.400
Like I said, I wasn't a computer scientist, but I studied arrays first and so I was very
link |
01:51:15.840
array centric and you realize, oh, these others don't have purposes and value actually.
link |
01:51:20.560
I agree.
link |
01:51:22.120
There's a friendliness about like one way to think about arrays is arrays are just like
link |
01:51:30.040
full of numbers, but to make them accessible to humans and make them less error prone to
link |
01:51:37.280
human users, sometimes you want to attach names, human interpretable names that are
link |
01:51:43.480
sticky to those arrays.
link |
01:51:44.760
So that's how you start to think about dictionaries is you start to convert numbers into something
link |
01:51:50.960
that's human interpretable and that's actually the tension I've had with NumPy because I've
link |
01:51:56.800
built so much tooling around human interpretability and also protecting me from a year later
link |
01:52:05.600
not making the mistakes by being, I wanted to force myself to use English versus numbers.
link |
01:52:11.280
Yes.
link |
01:52:12.280
So there's a, there's a project called label arrays.
link |
01:52:15.760
Like very early, it was recognized that, oh, we need, we're indexing NumPy with just numbers,
link |
01:52:21.400
all the columns and particularly the dimensions.
link |
01:52:23.640
I mean, if you have an image, you don't necessarily need to label each column a row, but if you
link |
01:52:27.960
have a lot of images or you have another dimension, you'd at least like to label the dimension
link |
01:52:31.600
as this is X, this is Y, this is Z or this is, give us some human meaning or some domain
link |
01:52:35.440
sort of meaning.
link |
01:52:37.000
That was one of the impetuses for pandas actually was just, oh, we do need to label these things
link |
01:52:43.000
and label, label array was an attempt to add that like a lighter weight version of that.
link |
01:52:47.680
And there's been, like that's an example of something I think NumPy could add, could
link |
01:52:51.280
be added to NumPy, but one of the challenges again, how do you fund this?
link |
01:52:55.160
Like, like I said, one of the tragedies I think is that, so I never had the chance to,
link |
01:53:00.200
I was never paid to work on NumPy, right?
link |
01:53:02.440
So I've always just done it my spare time, always taken from one thing, taken from another
link |
01:53:06.480
thing to do it.
link |
01:53:08.000
And at the time, I mean, today, it would be the wrong day of today, like paying me to
link |
01:53:11.440
work on NumPy now would not be a good use of effort, but, but we are finally at Quonsite
link |
01:53:16.000
Labs.
link |
01:53:17.000
I'm actually paying people to work on NumPy and SciPy, which is I'm thrilled with, I'm
link |
01:53:20.480
excited by.
link |
01:53:21.480
I've wanted to do that, that's why I always wanted to do it from day one, it just took
link |
01:53:24.560
me a while to figure out a mechanism to do that.
link |
01:53:27.920
Even like in the university setting, respecting that, like pushing students, young minds, the
link |
01:53:34.600
young graduate students to contribute and then figuring out financial mechanisms that
link |
01:53:41.600
enable them to contribute and then sort of reward them for their innovative scientific
link |
01:53:47.520
journey that that would be nice, but then also there's just a better allocation of resources.
link |
01:53:52.320
Well, you know, it's 20 year anniversary since 9 11.
link |
01:53:55.880
And I was just looking, we spent over $6 trillion in the Middle East after 9 11 in the various
link |
01:54:03.480
efforts there and sort of to put politics and all that aside is just, you think about
link |
01:54:09.120
the education system, all the other ways we could have possibly allocated that money.
link |
01:54:14.400
To me, to take it back, the amount of impact you would have by allocating a little bit
link |
01:54:22.560
of money to the programmers that build the tools that run the world is fascinating.
link |
01:54:30.080
I mean, I don't know, I think again, there is some aspect to being broke as somewhat
link |
01:54:38.960
of a feature, not a bug, that you make sure that you manage that.
link |
01:54:43.200
Right. No, I know.
link |
01:54:45.560
But I don't think that's a big part.
link |
01:54:47.120
So it's like, I think you can have enough money and actually be wealthy while maintaining
link |
01:54:52.720
your values.
link |
01:54:53.720
Agreed.
link |
01:54:54.720
I think.
link |
01:54:55.720
Agreed.
link |
01:54:56.720
There's an old adage that nations that trade together don't go to war together.
link |
01:54:59.440
I've often thought about nations that code together.
link |
01:55:04.120
Because one of the things I love about open source is it's global, it's multinational.
link |
01:55:08.080
There aren't national boundaries.
link |
01:55:09.080
One of the challenges with business and open source is the fact that business is national.
link |
01:55:12.920
Like businesses are entities that are recognized in legal jurisdictions and have laws that
link |
01:55:17.080
are respected in those jurisdictions and hiring and yet the open source ecosystem is not there.
link |
01:55:22.960
Currently, one of the problems we're solving is hiring people all over the world.
link |
01:55:27.320
Because it's a global effort and I've had the chance to work and I've loved the chance.
link |
01:55:31.920
I've never been to Iran, but I once had a conference where I was able to talk to people
link |
01:55:37.720
there and talk to folks in Pakistan and we've been there, but we had a call where there
link |
01:55:44.520
are people there, like just scientists and normal people.
link |
01:55:48.480
There's a certain amount of humanizing that gets away from the...
link |
01:55:54.560
We often get the memes of society that bubble up and get discussed, but the memes are not
link |
01:55:59.640
even an accurate reflection of the reality of what people are.
link |
01:56:02.800
If you look at the major power centers that are leading to something like cyber war in
link |
01:56:08.320
the next few decades, it's the United States, it's Russia and China.
link |
01:56:14.440
Those three countries in particular have incredible developers.
link |
01:56:18.680
If they work together, I think that's one way the politicians can do their stupid bickering,
link |
01:56:23.480
but there's a layer of infrastructure, of humanity.
link |
01:56:27.440
If they collaborate together, that I think can prevent major conflict, which would,
link |
01:56:34.720
I think, most likely happen at the cyber level versus the actual hot war level.
link |
01:56:39.920
You're right.
link |
01:56:40.920
I think that's good prediction.
link |
01:56:43.680
Nations that code together don't go to war together.
link |
01:56:48.000
That's a hope.
link |
01:56:49.000
That's one of the philosophical hopes.
link |
01:56:52.600
You mentioned the project of Numba, which is fascinating.
link |
01:56:58.880
From the early days, there was a pushback on Python that it's not fast.
link |
01:57:05.600
If you want to write something that's fast, you use CC++.
link |
01:57:07.840
If you want to write something that's usable and friendly, but slow, you use Python.
link |
01:57:14.720
What is Numba?
link |
01:57:15.960
What is its goal?
link |
01:57:16.960
How does it work?
link |
01:57:17.960
Great.
link |
01:57:18.960
Yes, that's what the argument.
link |
01:57:19.960
The reality was people would write high level code and use compiled code, but there's still
link |
01:57:23.920
user stories, cases where you want to write Python, but then have it still be fast.
link |
01:57:28.920
You still need to write a for loop.
link |
01:57:31.160
Before Numba, it was always don't write a for loop.
link |
01:57:34.360
Write it in a vectorized way, put it in an array, and often that can make a memory trade
link |
01:57:39.280
off.
link |
01:57:40.280
Quite often you can do it, but then you may use more memory because you have to build
link |
01:57:43.520
this array of data that you don't necessarily need all the time.
link |
01:57:47.920
Numba was, it started from a desire to have a vectorized that worked.
link |
01:57:52.760
A vectorized was a tool in NumPy, it was released, you give it a Python function, and it gave
link |
01:57:58.120
you a universal function, a UFUNC, so it would work on arrays.
link |
01:58:00.840
So you get a function that just worked on a scalar, like the classic case was a simple
link |
01:58:06.280
function that an if then statement in it, so sine x over x function, sync function.
link |
01:58:12.200
If x equals 0, return 1, otherwise do sine x over x.
link |
01:58:16.120
The challenge is you don't want that loop going in Python, so you want a compiled version
link |
01:58:19.720
of that.
link |
01:58:21.600
But the vectorized in NumPy would just give you a Python function.
link |
01:58:24.920
So it would take the array of numbers and at every call do a loop back into Python.
link |
01:58:29.640
So it was very slow.
link |
01:58:30.640
It gave you the appearance of a UFUNC, but it was very slow.
link |
01:58:32.920
So I always wanted a vectorized that would take that Python scalar function and produce
link |
01:58:36.560
a UFUNC working on binary native code.
link |
01:58:39.560
So in fact, I had somebody work on that with PyPy and see if PyPy could be used to produce
link |
01:58:44.240
a UFUNC like that early on in 2009 or something like that, 2010.
link |
01:58:50.600
They didn't work that well.
link |
01:58:51.600
It was kind of pretty bulky.
link |
01:58:52.600
But in 2012, Peter and I had just started Anaconda.
link |
01:58:57.120
We had, I had just, I'd learned to raise money.
link |
01:59:00.880
That's a different topic, but I'd learned to raise money from friends, family, and fools,
link |
01:59:05.160
as they say.
link |
01:59:06.160
That's a good line.
link |
01:59:07.160
Oh, that's a good line.
link |
01:59:10.160
So we were trying to do something.
link |
01:59:13.800
We were trying to change the world.
link |
01:59:14.800
Peter and I are super ambitious.
link |
01:59:15.800
We wanted to make array computing and we had ideas for really what's still, it's still
link |
01:59:19.720
the energy right now.
link |
01:59:20.720
How do you do at scale data science?
link |
01:59:23.600
We had a bunch of ideas there, but one of them, I had just talked to people by LLVM
link |
01:59:27.800
and I was like, there's a way to do this.
link |
01:59:29.960
I just, I went, I heard about my friend Dave Beasley at a compiler course.
link |
01:59:34.000
So I was looking at compilers like, and I realized, oh, this is what you do.
link |
01:59:37.720
And so I wrote a version of Numba that just basically mapped Python bytecode to LLVM.
link |
01:59:45.000
Nice.
link |
01:59:46.000
Right?
link |
01:59:47.000
So, and the first version is like, this works and it produces code that's fast.
link |
01:59:50.880
This is cool for, you know, obviously a reduced subset of Python.
link |
01:59:53.360
I didn't support all of the Python language.
link |
01:59:55.440
There had been efforts to speed up Python in the past, but those efforts were, I would
link |
01:59:59.000
say not from the array computing perspective, not from the perspective of wanting to produce
link |
02:00:02.040
a vectorize improvement.
link |
02:00:03.600
They were from a perspective of speeding up the runtime of Python, which is fundamentally
link |
02:00:07.000
hard because Python allows for some constructs that aren't, you can't speed up.
link |
02:00:12.720
It's generic, you know, when it does this variable.
link |
02:00:15.680
So I, from the start, did not try to replicate Python's semantics entirely.
link |
02:00:20.320
I said, I'm going to take a subset of the Python syntax and let people write syntax
link |
02:00:24.480
in Python, but it's kind of a new language, really.
link |
02:00:27.120
So it's almost like for loops, like focusing on for loops, scalar arithmetic, you know,
link |
02:00:34.080
typed, you know, really typed language, a type subset.
link |
02:00:38.320
That was the key.
link |
02:00:39.320
So, but we wanted to add inference of types, so you didn't have to spell all the types
link |
02:00:43.080
out because when you call a function, so Python is typed, it's just dynamically typed.
link |
02:00:48.120
You don't tell it what the types are, but when it runs, every time an object runs, there's
link |
02:00:52.200
a type for the variables, you know what it is.
link |
02:00:54.640
And so that was the design goals of Numba were to make it possible to write functions that
link |
02:00:59.200
could be compiled and have them use for NumPyRays, like the need to support NumPyRays.
link |
02:01:05.600
And so how does it work?
link |
02:01:07.080
Do you add a comment within Python that tells it to do, like, how do you help out a compiler
link |
02:01:11.760
to know what to do?
link |
02:01:14.320
There isn't much, actually.
link |
02:01:15.920
You don't.
link |
02:01:16.920
It's kind of magical in a sense.
link |
02:01:17.920
It just looks at the type of the objects and then does type inference to determine any
link |
02:01:21.400
of the other variables it needs.
link |
02:01:23.560
And then it was also because we had a use case that could work early, like one of the challenges
link |
02:01:28.920
of any kind of new development is if you have something that to make it work, it was going
link |
02:01:32.680
to take you a long time, it's really hard to get out off the ground.
link |
02:01:35.720
If you have a project where there's some incremental story that can start working today and solve
link |
02:01:41.120
a problem, then you can start getting it out there, getting feedback.
link |
02:01:44.840
Because Numba today, now Numba is nine years old today, right?
link |
02:01:48.200
The first two, three versions were not great, right?
link |
02:01:52.200
But they solved a problem and some people could try it and we could get some feedback
link |
02:01:54.960
on it.
link |
02:01:55.960
Not great.
link |
02:01:56.960
And it was very focused.
link |
02:01:57.960
Very fragile.
link |
02:01:58.960
Oh, the fragility.
link |
02:01:59.960
The subset it would actually compile was small.
link |
02:02:03.120
And so if you wrote Python code and said, so the way it worked is you write a function
link |
02:02:06.760
and you say atJit.
link |
02:02:08.320
Use decorators.
link |
02:02:09.320
So decorator is just these little constructs that you decorate code with an app and then
link |
02:02:13.760
a name.
link |
02:02:15.080
The atJit would take your Python function and actually just compile it and replace the Python
link |
02:02:19.800
function with another function that interacts with this compile function.
link |
02:02:24.200
Got it.
link |
02:02:25.200
So you could do that and we went from Python byte code, then we went to AST.
link |
02:02:29.960
Writing compiler is actually, I learned a lot about why computer science is taught the
link |
02:02:33.280
way it is because compilers can be hard to write.
link |
02:02:36.640
They use tree structures.
link |
02:02:37.640
They use all the concepts of computer science that are needed and it's actually hard to,
link |
02:02:42.800
it's easy to write a compiler and then have it be spaghetti code.
link |
02:02:46.240
The passes become challenging and we ended up with three versions of Numba, right?
link |
02:02:50.120
Numba got written three times.
link |
02:02:53.760
The programming language is number written in.
link |
02:02:55.880
Python.
link |
02:02:56.880
Wait.
link |
02:02:57.880
Okay.
link |
02:02:58.880
Yeah, Python.
link |
02:02:59.880
Really?
link |
02:03:00.880
That's fascinating.
link |
02:03:01.880
Yeah, so Python, but then the whole goal of Numba is to translate Python byte code to
link |
02:03:05.840
LLVM.
link |
02:03:07.560
And so LLVM actually does the code generation.
link |
02:03:09.160
In fact, a lot of times they'd say, yeah, it's super easy to write a compiler if you're
link |
02:03:13.080
not writing the parser, nor the code generator, right?
link |
02:03:16.720
For people who don't know, LLVM is the compiler itself, so you're compiling it.
link |
02:03:20.760
It's really badly named low level virtual machine, which that part of it is not used.
link |
02:03:24.520
It's really low level.
link |
02:03:25.520
First, he doesn't mean that.
link |
02:03:27.520
Yeah.
link |
02:03:28.520
Love, Chris.
link |
02:03:29.520
But the name makes you imply that the virtual machine is what it's all about.
link |
02:03:32.320
It's actually the IR and the library that the code generation, that's the real beauty
link |
02:03:37.240
of it.
link |
02:03:38.240
The fact that what I love about LLVM was the fact that it was a plateau you could collaborate
link |
02:03:42.240
on, right?
link |
02:03:43.800
Instead of the internals of GCC or the internals of the Intel compiler, how do I extend that?
link |
02:03:49.280
It was a place you could collaborate.
link |
02:03:51.800
We were early.
link |
02:03:52.800
I mean, people had started before.
link |
02:03:54.080
It's a slow compiler.
link |
02:03:55.680
It's not a fast compiler.
link |
02:03:57.760
For some kind of JITs, JITs are common in the language because, one, every browser has
link |
02:04:03.520
a JavaScript JIT.
link |
02:04:04.800
It does real time compilation of the JavaScript to machine code.
link |
02:04:09.160
For people who don't know, JIT is just in time compilation.
link |
02:04:11.640
Thank you.
link |
02:04:12.640
Yeah, just in time compilation.
link |
02:04:13.640
They're actually really sophisticated.
link |
02:04:14.640
In fact, I got jealous of how much effort was put into the JavaScript JITs.
link |
02:04:18.560
Yes.
link |
02:04:19.560
Well, it's kind of incredible what they've done with JavaScript JITs.
link |
02:04:22.000
I completely agree.
link |
02:04:23.000
I'm very impressed.
link |
02:04:25.400
Number was an effort to make that happen with Python.
link |
02:04:30.200
We used some of the money we raised from Anaconda to do it, and then we also applied for this
link |
02:04:34.080
DARPA grant and used some of that money to continue the development, and then we used
link |
02:04:38.040
proceeds from service projects we would do.
link |
02:04:40.720
We get consulting projects that we would then use some of the profits to invest in number.
link |
02:04:45.520
We ended up with a team of two or three people working on number.
link |
02:04:48.960
It was a fits and starts, and ultimately, the fact that we had a commercial version
link |
02:04:53.480
of it, also we were writing.
link |
02:04:55.320
Part of the way I was trying to fund numbers, say, let's do the free number, and then we'll
link |
02:04:58.720
have a commercial version of number called number pro.
link |
02:05:00.600
Then what number pro did is it targeted GPUs.
link |
02:05:03.400
We had the very first CUDA JIT and the very first at JIT compiler that in 2013, you could
link |
02:05:11.080
run not just a viewfunk on CPU, but a viewfunk on GPUs, and it would automatically parallelize
link |
02:05:17.200
it and get 1,000 x speed on it.
link |
02:05:19.440
That's an interesting funding mechanism because large companies or larger companies care about
link |
02:05:27.920
speed in just this way, so it's exactly a really good way to fund it.
link |
02:05:32.960
Yeah, there's been a couple of things you know people will pay for.
link |
02:05:35.320
One, they'll pay for really good user interfaces, and so I'm always looking for what are the
link |
02:05:39.920
other things people will pay for that you could actually adapt to the open source infrastructure.
link |
02:05:43.400
One is definitely user interfaces.
link |
02:05:45.600
The second is speed, like a better runtime, faster runtime.
link |
02:05:49.200
And then when you say people, you mean like a small number of people pay a lot of money,
link |
02:05:52.360
but then there's also this other mechanism that a ton of people pay a little bit.
link |
02:05:57.840
First, we mentioned Anaconda, we mentioned friends, family, and fools, so Anaconda is
link |
02:06:05.680
yet another, so there's a company, but there's also a project that is exceptionally impactful
link |
02:06:13.320
in terms of for many reasons, but one of which is bringing a lot more people into the community
link |
02:06:21.520
of folks who use Python.
link |
02:06:23.720
So what is Anaconda?
link |
02:06:27.200
What is its goals?
link |
02:06:29.040
Maybe what is Kanda versus Anaconda?
link |
02:06:31.200
Yeah, I'll tell you a little bit of the history of that, because Anaconda, we wanted to do,
link |
02:06:35.200
we wanted to scale Python, because we, you know, Peter and I had the goal of when we
link |
02:06:39.640
started Anaconda, we actually started as Continuum Analytics was the name of the company that
link |
02:06:43.640
started.
link |
02:06:44.640
It got renamed to Anaconda in 2015, but we said we want to scale analytics.
link |
02:06:49.960
NumPy is great, Pan is emerging, but these need to run at scale with lots of machines.
link |
02:06:55.040
The other thing we wanted to do was make user interfaces that were web, we wanted to make
link |
02:06:59.800
sure the web did not pass by the Python community, that we had a ways to translate your data
link |
02:07:04.640
science to the web.
link |
02:07:06.080
So those are the two kind of technical areas and we thought, oh, we'll build products in
link |
02:07:09.200
this space.
link |
02:07:10.200
And that was the idea.
link |
02:07:12.640
Very quickly in, but of course, the thing I knew how to do was to do consulting to make
link |
02:07:15.960
money and to make sure my family and friends and the whole city invested didn't lose their
link |
02:07:20.960
money.
link |
02:07:21.960
So it's a little different than if you take money from a venture fund, you take money
link |
02:07:24.640
from a venture fund.
link |
02:07:25.640
The venture fund, they want you to go big or go home.
link |
02:07:27.760
They're kind of like expecting 9 out of 10 to fail or 99 out of 100 to fail.
link |
02:07:33.200
It's different, I was at a barbell strategy, I was like, I can't fail.
link |
02:07:37.040
I mean, I may not do super well, but I cannot lose their money.
link |
02:07:40.520
So I'm going to do something I know can return a profit, but I want to have exposure to an
link |
02:07:45.360
upside.
link |
02:07:46.360
So that's what happened in Anaconda.
link |
02:07:48.000
We didn't, there was lots of things we did not well in terms of that structure and I've
link |
02:07:51.460
learned from since to have it better.
link |
02:07:53.920
But we did a really good job of kind of attracting the interest around the area to get good people
link |
02:07:59.960
working and then get funneled some money on some interesting projects.
link |
02:08:03.440
Super excited about what came out of our energy there.
link |
02:08:05.280
Like a lot did.
link |
02:08:06.280
So what are some of the interesting projects?
link |
02:08:08.360
So Dask, Numba, Bokeh, Kanda, there was a data shader, Panel, Holoviz.
link |
02:08:16.280
These are all tools that are extremely relevant in terms of helping you build applications,
link |
02:08:21.560
build tools, build faster code.
link |
02:08:23.680
The Bokeh is applauding.
link |
02:08:25.680
There's a couple I'm beginning.
link |
02:08:26.680
Oh, JupiterLab.
link |
02:08:27.680
JupiterLab came out of this too.
link |
02:08:28.680
That's fascinating.
link |
02:08:29.680
Yeah.
link |
02:08:30.680
Okay.
link |
02:08:31.680
So Bokeh does plotting.
link |
02:08:32.680
Bokeh does plotting.
link |
02:08:33.960
So Bokeh was one of the foundational things to say, I want to do plot in Python, but have
link |
02:08:37.600
the things show up in a web.
link |
02:08:39.000
Right.
link |
02:08:40.000
That's right.
link |
02:08:41.000
That's right.
link |
02:08:42.000
That's right.
link |
02:08:43.000
And plotting to me still, with all due respect to Matplotlib and Bokeh, it feels like still
link |
02:08:47.760
an unsolved problem.
link |
02:08:48.760
Oh, it is.
link |
02:08:49.760
Not a solved problem.
link |
02:08:50.760
It is.
link |
02:08:51.760
It's a big problem.
link |
02:08:52.760
Right.
link |
02:08:53.760
Because you're, I mean, I don't know, it's visualization broadly, right?
link |
02:08:57.760
Yes.
link |
02:08:58.760
So important.
link |
02:08:59.760
I think we've got a pretty good API story around certain use cases of plotting.
link |
02:09:03.520
But there's a difference between static plots versus interactive plots versus, I'm an end
link |
02:09:07.480
user, I just want to write a simple, for, you know, pandas started the idea of here's
link |
02:09:11.480
a data frame on a dot plot, I'm just going to attach plot as a method to my object, which
link |
02:09:16.480
was a little bit controversial, right?
link |
02:09:18.400
But works pretty well actually, because there's a lot less you have to pass in, right?
link |
02:09:23.720
You can just say, here's my object, you know what you are, you tell the visualization what
link |
02:09:28.000
to do.
link |
02:09:29.120
So that, and there's things like that that have not been, you know, super well developed
link |
02:09:33.200
entirely, but Bokeh was focused on interactive plotting.
link |
02:09:36.400
So you could, it's a short path between interactive plotting and application, dashboard application.
link |
02:09:42.800
And there's some incredible work that got done there, right?
link |
02:09:44.760
And it was a hard project because then you're basically doing JavaScript and Python.
link |
02:09:49.520
So we wanted to tackle some of these hard problems and try to just go after them.
link |
02:09:53.440
We got some DARPA funding to help, and it was super helpful.
link |
02:09:55.880
It's a funny story there, we actually did two DARPA proposals, but one we were five
link |
02:09:59.080
minutes late for, and DARPA has a very strict cutoff window.
link |
02:10:03.120
And so I, we had two proposals, one for the Bokeh and one for actually Numba and the other
link |
02:10:08.120
work.
link |
02:10:09.120
Which one were you late for?
link |
02:10:10.960
The foundation on the miracle work.
link |
02:10:13.000
So Bokeh got funded.
link |
02:10:14.000
Oh no.
link |
02:10:15.000
Fortunately, Chris let us use some of the money to fund still some of the other foundational
link |
02:10:18.200
work, but it wasn't as, yeah, his hands were tied, he couldn't do anything about it.
link |
02:10:23.960
That was a whole interesting story.
link |
02:10:25.960
So one of the incredible projects that you worked on is Conda.
link |
02:10:29.320
Yes.
link |
02:10:30.320
So what is Conda?
link |
02:10:31.320
So how that came about?
link |
02:10:32.320
Yeah, Conda, it was early on, like I said, was SciPy.
link |
02:10:35.760
SciPy was a distribution masqueraderies in a library.
link |
02:10:38.040
And you said, you heard me talking about compiler issues and trying to get the stuff shipped
link |
02:10:41.400
and the fact that people can use your libraries if they have it.
link |
02:10:44.760
So for a long time, we'd understood the packaging problem in Python.
link |
02:10:48.000
And one of the first things we did at Continue Analytics, we came out of Conda, was organize
link |
02:10:52.960
the PyData ecosystem in conjunction with NumFocus.
link |
02:10:56.220
We actually started NumFocus with some other folks in the community the same year we started
link |
02:11:01.440
in a content.
link |
02:11:02.440
I said, we're going to build a corporation, but we also got to reify the community aspect
link |
02:11:06.960
and build a nonprofit.
link |
02:11:07.960
So we did both of those.
link |
02:11:08.960
Can we pause real quick and can you say what is PyPy, the Python package index, like this
link |
02:11:15.000
whole story of packaging in Python?
link |
02:11:19.000
Yeah, that's what I'm going to get to actually.
link |
02:11:20.960
This is exactly the journey I'm on.
link |
02:11:22.240
This is sort of explain packaging in Python.
link |
02:11:24.160
I think it's best expressed to the conversation I had with Gito at a conference where I said,
link |
02:11:28.640
so packaging is kind of a problem.
link |
02:11:31.240
And Gito said, I don't ever care about packaging.
link |
02:11:33.800
I don't use it.
link |
02:11:34.800
I don't install new libraries.
link |
02:11:36.280
I'm like, I guess if you're the language creator and if you need something, you just
link |
02:11:39.000
put it in the distribution.
link |
02:11:40.640
Maybe you don't worry about packaging.
link |
02:11:42.600
But Gito has never really cared about packaging, right?
link |
02:11:45.400
And never really cared about the problem of distribution.
link |
02:11:47.640
Somebody else's problem.
link |
02:11:48.640
And that's a fair position to take, I think, as a language creator.
link |
02:11:51.120
In fact, there's a philosophical question about should you have different development
link |
02:11:55.400
packaging managers?
link |
02:11:56.400
Should you have a package manager per language?
link |
02:11:58.400
Is that really the right approach?
link |
02:11:59.760
I think there are some answers of it is appropriate to have development tools.
link |
02:12:04.320
And there's an aspect of development tool that is related to packaging.
link |
02:12:07.760
And every language should have some story there to help their developers create.
link |
02:12:12.200
So you should have language specific development tools that relate to package managers.
link |
02:12:17.160
But then there's a very specific user story around package management that those language
link |
02:12:21.320
specific package managers have to interact with and currently aren't doing a good job
link |
02:12:25.000
of that.
link |
02:12:26.000
That was one of the challenges of not seeing that difference and still exists in the difference
link |
02:12:31.360
today.
link |
02:12:32.360
Kanda always was a user, I'm going to use Python to do data science.
link |
02:12:36.400
I'm going to use Python to do something.
link |
02:12:38.480
How do I get this installed?
link |
02:12:39.480
It was always focused on that.
link |
02:12:41.240
So it didn't have a develop.
link |
02:12:44.160
Classic example is PIP has a PIP develop.
link |
02:12:46.080
It's like, I want to install this into my current development environment today.
link |
02:12:49.680
Now, Kanda doesn't have that concept because it's not part of the story.
link |
02:12:52.920
For people who don't know, PIP is a Python specific package manager.
link |
02:13:03.200
That's exceptionally popular.
link |
02:13:04.760
That's probably like the default thing you learn.
link |
02:13:06.720
It's the default user.
link |
02:13:07.720
So the story there emerged because what happened is in 2012, we had this meeting at the Google
link |
02:13:13.360
Plex and Guido was there to come talk about what we're going to do, how we're going to
link |
02:13:16.200
make things work better, and Wes McKinney, me, Peter, Peter has a great photo of me talking
link |
02:13:21.320
to Guido and he pretends we're talking about this story.
link |
02:13:23.840
Maybe we were.
link |
02:13:24.840
But we did at that meeting talk about it and asked Guido, we need to fix packaging in Python.
link |
02:13:29.720
I'm like, people can't get this stuff.
link |
02:13:30.840
And he said, go fix it yourself.
link |
02:13:32.320
I don't think we're going to do it.
link |
02:13:35.040
All right.
link |
02:13:36.040
The origin story right there.
link |
02:13:37.040
All right.
link |
02:13:38.040
You said, okay.
link |
02:13:39.040
You said to do this ourselves.
link |
02:13:40.040
At the same time, people did start to work on the packaging story in Python.
link |
02:13:44.680
It just took a little longer.
link |
02:13:45.680
So in 2012, kind of motivated by our training courses we were teaching, like very similar
link |
02:13:50.640
to what you just mentioned about your mother, like it was motivated by the same purpose.
link |
02:13:53.960
Like, how do we get this into people's hands and it's this big, long process that takes
link |
02:13:57.400
too expensive?
link |
02:13:58.400
It was actually hurting NumPy development because I would hear people were saying, don't make
link |
02:14:02.640
that change to NumPy because I just spent a week getting my Python environment.
link |
02:14:05.560
And if you change NumPy, you have to reinstall everything and reinstalling such a pain, don't
link |
02:14:10.600
do it.
link |
02:14:11.600
I'm like, wait.
link |
02:14:12.600
Okay.
link |
02:14:13.600
So now we're not making changes to a library because of the installation problem that will
link |
02:14:16.160
cause for end users.
link |
02:14:17.160
Okay.
link |
02:14:18.160
There's a problem with pack.
link |
02:14:19.160
There's a problem with installation.
link |
02:14:20.160
We got to fix this.
link |
02:14:21.160
So we said, we're going to make a distribution of Python and we'd previously done that, previously
link |
02:14:25.080
done that at end thought.
link |
02:14:26.880
I wanted to make one that would give away for free that one could just get like those critical
link |
02:14:30.600
that we just get it, you know, it wasn't tied to a product, it was just you could get
link |
02:14:34.560
it.
link |
02:14:35.560
And then we had constantly thought about, well, do we just leverage RPM?
link |
02:14:39.280
But the challenge had always been, we want a package manager that works on Windows, Mac
link |
02:14:42.400
OS X and Linux the same, right?
link |
02:14:45.200
And it wasn't there.
link |
02:14:46.640
Like you don't have anything like that.
link |
02:14:48.040
And for people who don't know, RPM is operating system specific package.
link |
02:14:54.560
Correct.
link |
02:14:55.560
It's an operating specific.
link |
02:14:56.560
Yes.
link |
02:14:57.560
So do you create the design that question is, do you create an umbrella package manager
link |
02:15:02.160
that cross operating system, yes, that was the decision and a neighboring design questions.
link |
02:15:08.160
Do you also create a package manager that spans multiple programming languages?
link |
02:15:12.080
Correct.
link |
02:15:13.080
Exactly.
link |
02:15:14.080
That was the world we faced.
link |
02:15:15.080
And we decided to go multiple operating systems, multiple and programming language independent
link |
02:15:19.160
because even Python and particularly what was important was sci pi has a bunch of 4chan
link |
02:15:23.640
in it.
link |
02:15:24.640
Right.
link |
02:15:25.640
And scikit learn has links to a bunch of C plus plus.
link |
02:15:27.840
There's a lot of compiled code.
link |
02:15:30.040
And the Python package manager, especially early on, didn't even support that.
link |
02:15:34.440
So in 2000, so we released anaconda, which was just a distribution of libraries, but
link |
02:15:40.040
we started to work on conda in 2012.
link |
02:15:42.680
First version of conda came out in early 2013, summer of 2013.
link |
02:15:46.760
And it was a package manager.
link |
02:15:47.760
So you could say conda install scikit learn.
link |
02:15:49.520
In fact, that was the scikit learn was a fantastic project that emerged.
link |
02:15:54.200
Kind of it was the classic example of the sidekits.
link |
02:15:56.720
I told, talked to me earlier about scipy being too big to be a single library.
link |
02:16:00.920
Well, what the community had done is said, let's make scikits and there's scikit image
link |
02:16:04.960
or scikit learn.
link |
02:16:05.960
There's a lot of scikits.
link |
02:16:07.720
And it was a fantastic move, you know, that the community did.
link |
02:16:10.160
I didn't do it.
link |
02:16:11.160
I was like, okay, that's good idea.
link |
02:16:12.560
I didn't like the name.
link |
02:16:13.560
I didn't like the fact you type scikit image.
link |
02:16:15.480
I was like, that's going to be simpler.
link |
02:16:17.480
SK learn.
link |
02:16:18.480
We got to make that smaller.
link |
02:16:19.480
I like typing all this stuff from imports.
link |
02:16:22.000
So I was kind of a pressure that way, but I love the energy and love the fact that they
link |
02:16:25.320
went out and they did it and DOS people, Jared Milman, and then of course, Gael, and there's
link |
02:16:29.640
people I'm not even naming that scikit learn really emerged this fantastic project.
link |
02:16:34.720
And the documentation around that is also incredible.
link |
02:16:36.720
It was incredible.
link |
02:16:37.720
Exactly.
link |
02:16:38.720
I don't know who did that.
link |
02:16:39.720
But they did a great job.
link |
02:16:40.720
A lot of people in Inria, a lot of people, a lot of European contributors, Andreas, there's
link |
02:16:45.240
some Andreas in the U.S. There's a lot of just people I just adore.
link |
02:16:48.880
I think are amazing people.
link |
02:16:51.480
Awesome use of scipy.
link |
02:16:52.480
I love the fact that they were using scipy effectively because of my love, which is machine
link |
02:16:55.680
learning, but couldn't install it because there's so many, so many dependencies, right?
link |
02:17:02.240
So our use case of condo was cond install scikit learn, right?
link |
02:17:06.640
And it was the best way to install scikit learn in 2013 to really 2018, 17, 18, pip finally
link |
02:17:16.040
caught up.
link |
02:17:17.040
I still think you should cond install scikit learn for the pip install scikit learn, but
link |
02:17:20.520
you can pip install scikit learn.
link |
02:17:22.560
The issue is the package they created was wheels, and pip does not handle the multi vendor
link |
02:17:26.960
approach.
link |
02:17:27.960
They don't handle the fact you have C++ libraries you're depending on.
link |
02:17:30.600
They just stop at the Python boundary.
link |
02:17:32.320
And so what you have to do in the wheel world is you have to vendor.
link |
02:17:36.240
You have to take all of the binary and vendor it.
link |
02:17:38.600
Now if your change happens in early dependency, you have to redo the whole wheel.
link |
02:17:43.280
So TensorFlow is a good example, but you should not pip install TensorFlow.
link |
02:17:47.040
It's a terrible idea if people do it because the popularity of pip, many people think,
link |
02:17:52.000
of course, that's how I install everything in Python.
link |
02:17:54.720
This is one of the big challenges.
link |
02:17:56.920
You take a GitHub repository or just a basic blog post.
link |
02:18:00.800
The number of time pip is mentioned over conda is like 100x to one.
link |
02:18:05.720
Correct.
link |
02:18:06.720
Correct.
link |
02:18:07.720
And that was increasing.
link |
02:18:08.720
It wasn't true early because pip didn't exist.
link |
02:18:10.280
Right.
link |
02:18:11.280
Conda came first.
link |
02:18:12.280
Like the long tail of the internet documentation user generated, so that you think, how do
link |
02:18:17.720
I install, Google, how do I install TensorFlow, you're just not going to see conda in that
link |
02:18:22.080
first page.
link |
02:18:23.080
Correct.
link |
02:18:24.080
Exactly.
link |
02:18:25.080
And today you would have in 2016, 2017.
link |
02:18:29.520
And it's sad because conda solves a lot of usability issues.
link |
02:18:34.280
Correct.
link |
02:18:35.280
Especially super challenging thing.
link |
02:18:36.480
I don't know.
link |
02:18:37.480
One of the big pain points for me was just on the computer vision side, OpenCV installation
link |
02:18:43.520
that...
link |
02:18:44.520
Perfect example.
link |
02:18:45.520
I think conda...
link |
02:18:46.520
I don't know if conda solved that one.
link |
02:18:47.520
Conda has an OpenCV package.
link |
02:18:49.000
I don't know.
link |
02:18:50.000
I certainly know pip has not solved...
link |
02:18:53.480
I mean, there's complexities there because...
link |
02:18:55.680
Right.
link |
02:18:56.680
I actually don't know.
link |
02:18:57.680
I should probably know a good answer for this, but if you compile OpenCV with certain
link |
02:19:03.720
dependencies, you'll be able to do certain things.
link |
02:19:07.600
So there's this kind of flexibility of what options you compile with.
link |
02:19:13.280
And I don't think it's trivial to do that with conda or with...
link |
02:19:17.880
So conda has a notion of variance of a package.
link |
02:19:20.600
You can actually have different compilation versions of a package.
link |
02:19:23.680
So not just the versions different, but oh, this is compiled with these optimizations
link |
02:19:26.240
on.
link |
02:19:27.240
So conda does have an answer.
link |
02:19:28.240
Has those flavors.
link |
02:19:29.240
Has flavors, basically.
link |
02:19:30.240
Well, pip, as far as I know, does not have flavors.
link |
02:19:32.960
You know, pip generally hasn't thought deeply about the binary dependency problem, right?
link |
02:19:38.840
That's why, fundamentally, it doesn't work for the scipy ecosystem.
link |
02:19:43.760
It barely...
link |
02:19:44.760
You can sort of paper over it and duct tape it and it kind of works until it doesn't
link |
02:19:48.000
and it falls apart entirely.
link |
02:19:49.680
So it's been a mixed bag.
link |
02:19:51.680
Like...
link |
02:19:52.680
And I've been having lots of conversations with people over the years because, again,
link |
02:19:56.200
it's an area where if you understand some things, but not all the things, but they've
link |
02:19:59.480
done a great job of community appeal.
link |
02:20:02.280
This is an area where, I think, and a conda, as a company, need to do some things in order
link |
02:20:07.320
to make conda more community centric, right?
link |
02:20:10.560
And this is a...
link |
02:20:11.560
I talk about this all the time.
link |
02:20:13.400
There's a balance between...
link |
02:20:15.160
You have...
link |
02:20:16.160
Every project starts with what I call company backed open source.
link |
02:20:18.400
Even if the company is yourself, this is one person, just doing business as.
link |
02:20:23.520
But ultimately for products to succeed virally and become massive influencers, they have
link |
02:20:28.600
to create...
link |
02:20:29.600
They have to get community people on board.
link |
02:20:30.600
They have to get other people on board.
link |
02:20:32.240
So it has to become community driven and a big part of that is engagement with those
link |
02:20:35.240
people, empowering people, governance around it.
link |
02:20:38.800
And there was...
link |
02:20:39.800
And what happened with conda in the early days, pip emerged, and we did do some good
link |
02:20:43.320
things.
link |
02:20:44.320
Conda Forge.
link |
02:20:45.320
Conda Forge community is sort of the community recipe creation community.
link |
02:20:50.000
But conda itself, I still believe, and Peter is CEO of Anaconda, he's my cofounder.
link |
02:20:55.080
I ran Anaconda until 2017, 2018.
link |
02:20:58.240
Is Peter still in Anaconda?
link |
02:20:59.240
Peter still in Anaconda, right?
link |
02:21:00.240
We're still great friends.
link |
02:21:01.240
We talk all the time.
link |
02:21:02.240
I love him to death.
link |
02:21:03.240
There's a long story there about why and how, and we can cover in some other podcasts,
link |
02:21:08.040
perhaps.
link |
02:21:09.040
It's sort of a more, maybe a more business focused one.
link |
02:21:12.200
But this is one area where I think conda should be more community driven.
link |
02:21:17.880
He should be pushing more to get more community contributors to conda.
link |
02:21:21.320
And Anaconda shouldn't be fighting this battle.
link |
02:21:26.760
It's actually a...
link |
02:21:27.760
It's really a developer.
link |
02:21:28.760
You said help the developers, and then they'll actually move us the right direction.
link |
02:21:32.120
Well, that was the problem I have as many of the cool kids I know don't use conda.
link |
02:21:36.640
And that, to me, is confusing.
link |
02:21:38.920
It is confusing.
link |
02:21:39.920
It's really a matter of, conda has some challenges, first of all.
link |
02:21:43.120
Conda still needs to be improved.
link |
02:21:44.120
There's lots of improvements to be made.
link |
02:21:45.520
And it's that aspect of, wait, who's doing this?
link |
02:21:47.680
And the fact that then the PiPA really stepped up.
link |
02:21:51.400
They were not solving the problem at all.
link |
02:21:53.440
And now they kind of got to where they're solving it for the most part.
link |
02:21:56.560
And then, effectively, you could get conda solved a problem that was there.
link |
02:22:00.280
And it still does.
link |
02:22:01.280
And it's still...
link |
02:22:02.280
There's still great things it can do.
link |
02:22:04.080
But...
link |
02:22:05.080
And we still use it all the time at QuantSite and with other clients.
link |
02:22:08.040
But you can kind of do similar things with Pippin Docker, right?
link |
02:22:12.840
So especially with the web development community, part of it, again, is there's a lot of different
link |
02:22:18.520
kind of developers in the Python ecosystem.
link |
02:22:20.400
And there's still a lack of some clear understanding.
link |
02:22:23.720
I go to the Python conference all the time and there's only a few people in the PiPA
link |
02:22:27.160
who get it.
link |
02:22:28.360
And then others who are just massively trumpeting the power of PIP but just do not understand
link |
02:22:32.440
the problem.
link |
02:22:33.440
Yeah.
link |
02:22:34.440
So one of the obvious things to me from a mom, from a non programmer perspective is the
link |
02:22:38.360
across operating system usability that's much more natural.
link |
02:22:42.760
So they use Windows and just it seems much easier to recommend conda there.
link |
02:22:48.840
But then you should also recommend it across the board.
link |
02:22:51.880
So I'll definitely...
link |
02:22:53.880
But what I recommend now is a hybrid.
link |
02:22:55.280
I do.
link |
02:22:56.280
I mean, I have no problem with PIP.
link |
02:22:57.280
Is it possible to use...
link |
02:22:58.280
Oh, it is.
link |
02:22:59.280
It is.
link |
02:23:00.280
Like build the environment with PIP with conda, build an environment with conda.
link |
02:23:03.400
And then PIP install on top of that.
link |
02:23:04.720
That's fine.
link |
02:23:05.720
Be careful about PIP installing OpenCV or TensorFlow or...
link |
02:23:10.000
Because if somebody's allowed that, it's going to be most surely done in a way that can't
link |
02:23:13.720
be updated that easily.
link |
02:23:15.200
So install like the big packages, the infrastructure with conda and then the weirdos that like
link |
02:23:21.840
the weird like implementation for some head of there's a cool library I used that based
link |
02:23:29.560
on your location and time of day and date tells you the exact position of the sun relative
link |
02:23:36.040
to the earth.
link |
02:23:37.040
Oh, very cool.
link |
02:23:38.040
Yeah.
link |
02:23:39.040
And it's just like a simple library.
link |
02:23:40.040
But it's very precise.
link |
02:23:41.040
And I was like, all right.
link |
02:23:42.040
But that was...
link |
02:23:43.040
That was...
link |
02:23:44.040
And it's PIP...
link |
02:23:45.040
Well, the thing they did really well is Python developers who want to get their stuff published,
link |
02:23:50.680
you have to have a PIP recipe.
link |
02:23:52.080
Yeah.
link |
02:23:53.080
Right?
link |
02:23:54.080
I mean, even if it's...
link |
02:23:55.400
The challenge is...
link |
02:23:56.400
And there's a key thing that needs to be added to PIP.
link |
02:23:59.000
Just simply add to PIP the ability to defer to a system package manager because it's recognized
link |
02:24:04.880
you're not going to solve all the dependency problem.
link |
02:24:07.400
So let like give up and allow the system package to work.
link |
02:24:12.520
That way, Anaconda is installed and it has PIP.
link |
02:24:15.200
It would default to conda to install and stuff.
link |
02:24:17.080
But Red Hat RPM would default to RPM to install more things.
link |
02:24:20.520
Like that's a key, not difficult, but somewhat work.
link |
02:24:24.200
Some work feature needs to be added.
link |
02:24:26.080
That's an example of something like I've known we need to root and do it.
link |
02:24:28.720
I mean, it's where I wish I had more money.
link |
02:24:30.920
I wish I was more successful in the business side, trying to get there.
link |
02:24:34.200
But I wish my family, friends and full community that I know...
link |
02:24:37.320
Was larger.
link |
02:24:38.320
...was larger and had more money because I know tons of things to do effectively with
link |
02:24:43.000
more resources.
link |
02:24:44.760
But I have not yet been successful a channel.
link |
02:24:48.920
Tons of it.
link |
02:24:49.920
I'm happy with what we've done.
link |
02:24:52.040
We've created again at Quonsite what we created to get Anaconda started.
link |
02:24:56.480
We created community to get Anaconda started, done it again with Quonsite.
link |
02:24:59.480
Super excited by that.
link |
02:25:00.480
By the way.
link |
02:25:01.480
It took three years to do it.
link |
02:25:02.480
What is Quonsite?
link |
02:25:03.480
What is its mission?
link |
02:25:04.480
We've talked a few times about different, fascinating aspects of it, but it's like
link |
02:25:08.200
big picture.
link |
02:25:09.200
What is Quonsite?
link |
02:25:10.200
Big picture of Quonsite.
link |
02:25:11.200
Quonsite is it's mission is to connect data to an open economy.
link |
02:25:14.600
So it's basically consulting the pie data ecosystem.
link |
02:25:17.800
It's a consulting company and what I've said when I started it was we're trying to create
link |
02:25:21.600
products, people and technology.
link |
02:25:24.800
So it's divided into two groups and a third one as well.
link |
02:25:28.360
The two groups are a consulting services company that just helps people do data science and
link |
02:25:32.040
data engineering and data management better and more efficiently.
link |
02:25:35.560
Like full stack.
link |
02:25:36.560
Like full stack.
link |
02:25:37.560
Get a science.
link |
02:25:38.560
Full thing.
link |
02:25:39.560
We'll help you build a infrastructure if you're using Jupiter.
link |
02:25:41.560
We do staff augmentation, need more programmers, help you use DAS more effectively, help you
link |
02:25:45.280
use GPUs more effectively.
link |
02:25:46.680
Basically, a lot of people need help.
link |
02:25:48.480
So we do training as well to help people, you know, both immediate help and then get
link |
02:25:53.560
learned from somebody.
link |
02:25:55.960
We've added a bunch of stuff too.
link |
02:25:57.160
We kind of separated some of these other things into another company called Open Teams
link |
02:26:00.040
that we currently started.
link |
02:26:01.280
One of the things I loved about what we did at Anaconda was creating a community innovation
link |
02:26:04.640
team.
link |
02:26:05.640
So I wanted to replicate that.
link |
02:26:06.800
This time, we did a lot of innovation at Anaconda.
link |
02:26:09.360
I wanted to do innovation, but also contribute to the projects that existed.
link |
02:26:13.800
Like create a place where maintainers, so that SciPy and NumPy and all these projects
link |
02:26:19.160
we already started can pay people to work on them and keep them going.
link |
02:26:22.800
So that's labs.
link |
02:26:23.800
QuantSite Labs is a separate organization.
link |
02:26:26.080
It's a nonprofit mission.
link |
02:26:28.160
The profits of QuantSite help fund it.
link |
02:26:29.800
And in fact, every project that we have at QuantSite, a portion of the money, goes directly
link |
02:26:35.200
to QuantSite Labs to help keep it funded.
link |
02:26:37.120
So we've gotten several mechanisms that we keep QuantSite Labs funded.
link |
02:26:39.760
And currently, I'm really excited about labs because it's been a mission for a long time.
link |
02:26:43.920
What kind of projects are within labs?
link |
02:26:45.320
So labs is working to make the software better, like make NumPy better, make SciPy better.
link |
02:26:50.440
It only works on open source.
link |
02:26:52.440
So if somebody wants to, so companies do, we have a thing called a community work order,
link |
02:26:56.920
we call it.
link |
02:26:57.920
If a company says, I want to make Spyder better, okay, cool.
link |
02:27:01.720
You can pay for a month of a developer of Spyder or developer of NumPy or developer of SciPy.
link |
02:27:08.400
You can't tell them what you want them to do.
link |
02:27:09.840
You can give them your priorities and things you wish existed.
link |
02:27:13.000
And they'll work on those priorities with the community to get what the community wants
link |
02:27:17.400
and what emerges with the community wants.
link |
02:27:18.840
Is there some aspect on the consulting side that is helping as we were talking about morphology
link |
02:27:24.080
and so on?
link |
02:27:25.080
Is there a specific application that are particularly like driving, sort of inspiring the need for
link |
02:27:31.080
updates to SciPy?
link |
02:27:32.080
Correct.
link |
02:27:33.080
Absolutely.
link |
02:27:34.080
Absolutely.
link |
02:27:35.080
GPUs are absolutely one of them.
link |
02:27:36.080
GPUs.
link |
02:27:37.080
And new hardware beyond GPUs.
link |
02:27:38.080
Dojo chip.
link |
02:27:39.080
I'm hoping we'll have a chance to work on that perhaps.
link |
02:27:42.480
Things like that are definitely driving it.
link |
02:27:43.800
The other thing is driving is scalable, like speed and scale.
link |
02:27:47.760
How do I write NumPy code or NumPy Lite code if I want it to run across a cluster?
link |
02:27:52.040
Oh, that's Dask or maybe it's Ray.
link |
02:27:54.160
I mean, there's sort of ways to do that now or there's Modin and there's, so pandas code,
link |
02:27:59.840
NumPy code, SciPy code, second learn code that I want to scale.
link |
02:28:03.000
So that's one big area.
link |
02:28:04.920
Have you gotten a chance to chat with Andre and Elon about, because like...
link |
02:28:09.880
No, I would love to, by the way.
link |
02:28:10.880
Okay, great.
link |
02:28:11.880
I'm not very loved to.
link |
02:28:12.880
I just saw their Tesla AI days video.
link |
02:28:14.920
Yeah.
link |
02:28:15.920
Super exciting.
link |
02:28:16.920
So this one of the, you know, I love great engineering, software engineering teams and
link |
02:28:19.880
engineering teams in general and they're doing a lot of incredible stuff with Python.
link |
02:28:23.040
They're like...
link |
02:28:24.040
They are.
link |
02:28:25.040
Revolutionary.
link |
02:28:26.040
So many aspects of the machine learning pipeline.
link |
02:28:28.360
I agree.
link |
02:28:29.360
That's operating in the real world and so much of that is Python.
link |
02:28:31.920
Like you said, the guy running, you know, Andre Kapathi, running autopilot is tweeting
link |
02:28:37.240
about optimization of NumPy versus...
link |
02:28:41.080
I'd love to talk to him.
link |
02:28:42.880
In fact, we have at QuantSite, we've been fortunate enough to work with Facebook on
link |
02:28:46.240
PyTorch directly.
link |
02:28:47.240
So we have about 13 developers at QuantSite.
link |
02:28:50.040
Some of them are in labs working directly on PyTorch.
link |
02:28:52.600
On PyTorch.
link |
02:28:53.600
That's great.
link |
02:28:54.600
So I basically started QuantSite.
link |
02:28:55.600
I went to both TensorFlow and PyTorch and said, hey, I want to help connect what you're
link |
02:28:59.520
doing to the broader SciPy ecosystem because I see what you're doing.
link |
02:29:03.240
We have this bigger mission that we want to make sure we don't lose energy here.
link |
02:29:08.040
And Facebook responded really positively and I didn't get the same reaction.
link |
02:29:12.240
Not yet.
link |
02:29:13.240
Not yet.
link |
02:29:14.240
I love the folks in TensorFlow.
link |
02:29:15.880
I really love the folks in TensorFlow too.
link |
02:29:17.560
They're fantastic.
link |
02:29:18.560
I think it's just how it integrates with their business.
link |
02:29:22.160
Like I said, there's a lot of reasons.
link |
02:29:23.880
Just the timing, the integration with their business, what they're looking for.
link |
02:29:27.200
They're probably looking for more users and I was looking to kind of kept some development
link |
02:29:31.040
effort and they couldn't receive that as easily, I think.
link |
02:29:33.920
So I'm hoping.
link |
02:29:34.920
I'm really hopeful and love the people there.
link |
02:29:37.800
What's the idea behind Open Teams?
link |
02:29:39.840
So Open Teams, I'm super excited about Open Teams because it's one of the, I mentioned
link |
02:29:43.920
my idea for investing directly in open source.
link |
02:29:46.840
So that's a concept called FaroSS.
link |
02:29:48.920
But one of the things we, when we started QuantSite, we knew we would do is we develop
link |
02:29:52.720
products and ideas and new companies might come out.
link |
02:29:55.080
At Anaconda, this was clear, right?
link |
02:29:57.720
At Anaconda, we did so much innovation that like five or six companies could have come
link |
02:30:02.080
out of that.
link |
02:30:03.080
And we just didn't structure it so they could.
link |
02:30:04.880
But in fact, they have.
link |
02:30:05.880
You look at BASC, there's two companies coming out of BASC, Bokeh could be a company.
link |
02:30:10.120
There's like lots of companies that could exist off the work we did there.
link |
02:30:13.240
And so I thought, oh, here's a recipe for an incubation, a concept that we could actually
link |
02:30:18.160
spawn new companies and new innovations.
link |
02:30:20.520
And then the idea has always been, well, money they earn should come back to fund the open
link |
02:30:25.760
source project.
link |
02:30:27.260
So Labs is, I think there should be a lot of things like QuantSite Labs.
link |
02:30:30.720
I think this concept is one that scales.
link |
02:30:32.600
You could have a lot of open source research labs.
link |
02:30:35.360
Along the way, so in 2018, when the bigger idea came how to make open source investor,
link |
02:30:38.440
I said, oh, I need to write it.
link |
02:30:39.600
I need to create a venture fund.
link |
02:30:40.600
So we created a venture fund called QuantSite Initiate at the same time.
link |
02:30:44.560
It's an angel fund, really.
link |
02:30:46.600
We started to learn that process.
link |
02:30:47.920
How do we actually do this?
link |
02:30:48.920
How do we get LPs?
link |
02:30:49.920
How do we go in this direction and build a fund?
link |
02:30:52.560
And I'm like, every venture fund should have an associated open source research lab.
link |
02:30:55.840
There's just no reason.
link |
02:30:56.840
Like our venture fund, the carried interest portion of it goes to the lab.
link |
02:31:01.960
It directly will fund the lab.
link |
02:31:03.360
That's fascinating by the way.
link |
02:31:04.360
So you use the power of the organic formation of teams in the open source community and
link |
02:31:08.600
then naturally that leads to a business that can make a lot of money and then it always
link |
02:31:15.440
maintains and loops back to the open source.
link |
02:31:17.360
Loops back to open source.
link |
02:31:18.360
Exactly.
link |
02:31:19.360
There's a lot of fit.
link |
02:31:20.360
There's absolutely a repeatable pattern there.
link |
02:31:22.560
And it's also beneficial because, oh, I have natural connections to the open source.
link |
02:31:27.360
If I have an open source research lab, they'll all be out there talking to people.
link |
02:31:32.040
And so we've had a chance to talk to a lot of early stage companies and our fund focused
link |
02:31:37.040
on the early stage.
link |
02:31:38.040
So QuantSite has the services, the lab, the fund.
link |
02:31:42.000
In that process, a lot of stuff started to happen.
link |
02:31:44.160
They're like, oh, we started to do recruiting and support and training.
link |
02:31:48.160
And I was starting to build a bigger sales team and marketing team and people besides
link |
02:31:51.680
just developers.
link |
02:31:52.680
And one of the challenges with that is you end up with different cultural aspects.
link |
02:31:56.920
Developers, in any company you go to, you can go look, is this a business led company,
link |
02:32:02.320
developer led company?
link |
02:32:03.320
Do they coexist?
link |
02:32:04.320
Are they, what's the interface between them?
link |
02:32:05.960
There's always a bit of a tension there, like we were talking about before.
link |
02:32:09.080
What is the tension there?
link |
02:32:10.320
With open teams, I thought, wait a minute.
link |
02:32:11.400
We can actually just create this concept of QuantSite plus labs.
link |
02:32:15.720
While it's specific to the Piedata ecosystem, the concept is general for all open source.
link |
02:32:20.920
So open teams emerged as a, oh, we can create a business development company for many, many
link |
02:32:26.440
QuantSites, like thousands of QuantSites.
link |
02:32:28.520
And it can be a marketplace to connect, essentially be the enterprise software company of the
link |
02:32:33.560
future.
link |
02:32:34.560
If you look at what enterprise software wants from the customer side, and during this journey
link |
02:32:38.560
I've had the chance to work and sell to lots of companies, Exxon and Shell and Davey Morgan
link |
02:32:44.600
of America, like the Fortune 100, and talk to a lot of people in procurement and see
link |
02:32:48.400
what are they buying and why are they buying?
link |
02:32:50.520
So I don't know everything, but I've learned a lot about, oh, what are they really looking
link |
02:32:53.600
for?
link |
02:32:54.600
And they're looking for solutions.
link |
02:32:56.520
They're constantly given products from enterprise software.
link |
02:33:01.280
Here's open source, these enterprise software, now I buy it, and then they have to stitch
link |
02:33:03.680
it together into a solution.
link |
02:33:06.080
Open source is fantastic for gluing those solutions together.
link |
02:33:08.920
So whereas they keep getting new platforms they're trying to buy, but most open source,
link |
02:33:13.320
most enterprises want is tools that they can customize that are as inexpensive as they
link |
02:33:18.480
can.
link |
02:33:19.480
Yeah.
link |
02:33:20.480
And so you almost want to maintain the connection to the open source because that's going to
link |
02:33:22.480
be the tools.
link |
02:33:23.480
Yes.
link |
02:33:24.480
So open teams is about solving enterprise software problems.
link |
02:33:26.320
Brilliant.
link |
02:33:27.320
Brilliant idea, by the way.
link |
02:33:28.320
With a connect, but we do it honoring the topology.
link |
02:33:31.000
We don't hire all the people.
link |
02:33:32.560
We are a network connecting the sales energy and the procurement energy, and we were on
link |
02:33:37.240
the business side, get the deals closed, and then have a network of partners like QuantSite
link |
02:33:41.400
and others, who we hand the deals to, right, to actually do the work, and then we have
link |
02:33:45.960
to maintain, I feel like we have to maintain some level of quality control so that the
link |
02:33:49.360
client can rely on open teams to ensure their deliveries.
link |
02:33:52.200
It's not just, here's a lead, go figure that out, but no, we're going to make sure you
link |
02:33:55.480
get what you need.
link |
02:33:56.480
Yeah.
link |
02:33:57.480
By the way, it's such a skill, and I don't know if I have the patience, I will have the
link |
02:34:01.200
patience to talk to the business people, or more specifically, I mean, there's all kinds
link |
02:34:06.280
of flavors of business people, or like marketing people.
link |
02:34:10.880
There's a challenge.
link |
02:34:11.880
I hear what you're saying, because I've had the same challenge, and it's true.
link |
02:34:15.720
There's some times you think, okay, this is way over a lot.
link |
02:34:18.400
Yeah.
link |
02:34:19.400
You have to become an adult, and you have to, because the companies have needs.
link |
02:34:22.360
They have ways to make money, and they also want to learn and grow, and yet it's your
link |
02:34:27.040
job to kind of educate them in the best way, like the value of open source, for example.
link |
02:34:31.080
Right.
link |
02:34:32.080
And I'm really grateful for all my experiences over the past 14 years, understanding that
link |
02:34:35.120
side of it, and still learning, for sure, but not just understanding from companies,
link |
02:34:38.560
but also dealing with marketing professionals, and sales professionals, and people that make
link |
02:34:42.440
a career out of that, and understanding what they're thinking about, and also understanding,
link |
02:34:45.160
well, let's make this better.
link |
02:34:46.880
We can really make a place, like open teams I see as the transmission layer between companies
link |
02:34:51.840
and open source communities, producing enterprise software solutions.
link |
02:34:55.880
Eventually we want to, like today, we're taking on SaaS, and MATLAB, and tools that we know
link |
02:35:00.320
we can replace for folks.
link |
02:35:01.880
Really anytime you have a software tool at an organization where you have to do a lot
link |
02:35:05.400
of customization or make it work for you, like it's not just buying this thing off
link |
02:35:08.540
the shelf and it works.
link |
02:35:09.540
It's like, okay, you buy this system, and then you customize it a lot, usually with
link |
02:35:13.120
expensive consultants, to actually make it work for you.
link |
02:35:17.280
All of those should be replaced by open source foundations, with the same customization.
link |
02:35:20.600
Really, you're doing such important work, such important work in these giant organizations
link |
02:35:25.360
that are doing exactly that, taking some proprietary software and hiring a huge team of consultants
link |
02:35:30.440
that customize it, and then that whole thing gets outdated quick.
link |
02:35:34.040
Correct.
link |
02:35:35.040
Right.
link |
02:35:36.040
I mean, that's brilliant.
link |
02:35:37.040
Right.
link |
02:35:38.040
The solution to that is kind of what Tesla is doing a little bit of, which is basically
link |
02:35:44.560
build up a software engineering team, like build a team from scratch.
link |
02:35:48.200
Build a team from scratch, and companies are doing it well.
link |
02:35:50.000
That's what they're doing right now.
link |
02:35:51.000
Yeah.
link |
02:35:52.000
Right?
link |
02:35:53.000
Exactly.
link |
02:35:54.000
That's okay.
link |
02:35:55.000
And you're creating a pathology for some of that.
link |
02:35:56.000
You're right.
link |
02:35:57.000
You just don't have to do it.
link |
02:35:58.000
That's not the only answer.
link |
02:35:59.000
Right?
link |
02:36:00.000
And so other companies can access this, be more accessible.
link |
02:36:01.000
We really, let's really say, open team is the future of enterprise software.
link |
02:36:03.960
We're still early.
link |
02:36:05.040
This idea just percolated over the past year as we've kind of grown quantized and realized
link |
02:36:08.760
the extensibility of it.
link |
02:36:10.520
We just finished in our seed round to help get more salespeople and then push the messaging
link |
02:36:17.000
correctly.
link |
02:36:18.000
And there's lots of tools we're building to make this easier, like we want to automate
link |
02:36:20.600
the processes.
link |
02:36:21.800
We feel like a lot of the power is the efficiency of the sales process.
link |
02:36:25.280
There's a lot of wasted energy in small teams and the sales energy to get into large companies
link |
02:36:31.520
and make a deal.
link |
02:36:32.520
There's a lot of money spent on that process.
link |
02:36:34.720
Creating the tools and processes for that sales.
link |
02:36:36.640
So make that super seamless so a single company can go, oh, I've got my contract with open
link |
02:36:41.000
teams.
link |
02:36:42.000
We've got a subscription they can get.
link |
02:36:43.000
They can make that procurement seamless.
link |
02:36:45.360
And then the fact they have access to the entire open source ecosystem.
link |
02:36:48.840
And we have a part of our work that's embracing open source ecosystems and making sure we're
link |
02:36:53.800
doing things useful for them.
link |
02:36:55.040
We're serving them.
link |
02:36:56.240
And then companies making sure they're getting solutions they care about.
link |
02:36:59.320
And then figuring out which targets we have.
link |
02:37:03.000
We're not taking on all of open source, all of enterprise software yet.
link |
02:37:06.160
But we're...
link |
02:37:07.160
Well, this feels like the future.
link |
02:37:08.560
The idea and the vision is brilliant.
link |
02:37:10.760
Kasko, why do you think Microsoft bought GitHub and what do you think is the future
link |
02:37:15.680
of GitHub?
link |
02:37:16.680
Great point.
link |
02:37:17.680
Great point.
link |
02:37:18.680
I thought it was a brilliant move.
link |
02:37:19.680
I think they did because Microsoft has always had a developer centric culture, like they
link |
02:37:22.920
always have.
link |
02:37:23.920
Like one of the things Microsoft's always done well is understand that their power is developers,
link |
02:37:27.080
right?
link |
02:37:28.080
And Balmer didn't necessarily make a good meme about how he approached that, but names are
link |
02:37:33.840
broadening that.
link |
02:37:34.840
I think that's why.
link |
02:37:35.840
Because they recognize GitHub is where developers are at, right?
link |
02:37:38.560
And so...
link |
02:37:39.560
But do they have a vision like open teams type of situation, right?
link |
02:37:42.160
I don't think so yet.
link |
02:37:43.160
I mean...
link |
02:37:44.160
Are they just basically throwing money at developers to show their support without a topology?
link |
02:37:50.320
Like you put it like a way to leverage that, like to give developers actual money.
link |
02:37:55.280
Right.
link |
02:37:56.280
I don't think so.
link |
02:37:57.280
It's still...
link |
02:37:58.280
It's an enterprise software company and they make a bunch of money.
link |
02:38:00.480
They make a bunch of games.
link |
02:38:01.480
They're a big company.
link |
02:38:02.640
They sell products.
link |
02:38:03.720
I think part of it is they know there's opportunity to make money from GitHub, right?
link |
02:38:07.960
There's definitely a business there to sell to developers or to sell to people using development.
link |
02:38:13.200
I think there's part of that.
link |
02:38:14.200
I think part of it is also they had definitely wanted to recognize that you need to value
link |
02:38:19.960
open source to get great developers, which is an important concept that was emerging
link |
02:38:23.960
over the past 10 years that paid by data, we were able to convince JPMorgan to support
link |
02:38:30.160
by data because of that fact, right?
link |
02:38:32.080
That was where the money for them putting a couple of hundred thousand into supporting
link |
02:38:34.720
by data for several conferences was they want developers and they realized that developers
link |
02:38:39.000
want to participate in open source.
link |
02:38:40.800
So enterprise software folks don't always understand how their software gets used.
link |
02:38:44.800
Having spent a lot of time on the floors at JPMorgan in Shell and ExxonMobil, you see,
link |
02:38:50.120
oh, these companies have large development teams.
link |
02:38:53.280
And then they're kind of dealing with the what's being delivered to them.
link |
02:38:56.800
So I really feel kind of a privilege that I had a chance to learn some of these people
link |
02:39:00.400
and see what they're doing and even work alongside them as a consultant, using open
link |
02:39:06.880
source and trying to figure out how to make this work inside of our large organization.
link |
02:39:10.160
Some of it is actually for a large organization, some of it is messaging to the world that
link |
02:39:14.800
you care about developers and you care.
link |
02:39:19.120
For example, like at Ford, because I talked to them, the car companies, right?
link |
02:39:24.840
They want to attract, you know, you want to take on Tesla and autopilot.
link |
02:39:28.800
You want to take that, right?
link |
02:39:30.040
And so what do you do there?
link |
02:39:31.840
You show that you're cool, like you try to show off that you care about developers and
link |
02:39:36.680
they have a lot of trouble doing that.
link |
02:39:39.280
And like one way, I think like Ford should have bought GitHub, like just to show off
link |
02:39:43.880
like these old school companies and it's in a lot of different industries.
link |
02:39:48.680
There's probably different ways, it's probably an art to show that you care to developers.
link |
02:39:54.360
And the developers, it's exactly like, for example, just spitballing here, but like
link |
02:40:00.800
Ford or somebody like that could give $100 million to the development of NumPy and like
link |
02:40:10.040
literally look at like the top most popular projects in Python and just say, we're just
link |
02:40:16.320
going to give them money.
link |
02:40:17.320
Right?
link |
02:40:18.320
You want to immediately make you cool?
link |
02:40:20.480
They could actually.
link |
02:40:21.480
Yeah.
link |
02:40:22.480
And in fact, you set up NumFocus to make it easy.
link |
02:40:24.520
But the challenge was is also you have to have some business development.
link |
02:40:28.600
Like it's a bit of a, it's a bit of a seeding problem, right?
link |
02:40:31.440
And you look at how I've talked to the folks at Linux Foundation, know how they're doing
link |
02:40:34.240
it.
link |
02:40:35.240
I know how, and starting NumFocus, because we had two babies in 2012, one was Anaconda,
link |
02:40:40.040
one was NumFocus, right?
link |
02:40:41.040
And they were both important efforts.
link |
02:40:42.760
They had distinct journeys and super grateful that both existed and still grateful both
link |
02:40:47.080
exist.
link |
02:40:49.000
But there's different energies in getting donations as there is getting, this is important
link |
02:40:54.400
to my business.
link |
02:40:55.480
Like I'm selling something that, this is not a, this is, I'm going to make money this
link |
02:40:59.640
way.
link |
02:41:00.640
Like if you can tie it, if you can tie the message to an ROI for the company, it becomes
link |
02:41:04.400
a brainer.
link |
02:41:05.400
That's more effective.
link |
02:41:06.400
It's much more effective, right?
link |
02:41:07.400
So, and there are rational arguments to make.
link |
02:41:09.560
I've tried to have conversations with marketing, especially marketing departments.
link |
02:41:12.320
Like very early on it was clear to me that, oh, you could just take a fraction of your
link |
02:41:17.040
marketing budget and just spend it on open source development and you get better results
link |
02:41:22.240
from your marketing.
link |
02:41:23.240
Like because.
link |
02:41:24.240
How did those, can I, sorry, I'm going to try not to go around here.
link |
02:41:28.120
What have you learned from the interaction with the marketing folks on that kind of,
link |
02:41:31.680
because you gave a great example of something that will obviously be much better investment
link |
02:41:37.200
in terms of marketing is supporting open source projects.
link |
02:41:40.400
The challenge is not dissimilar from the challenge you have in academia of the different
link |
02:41:44.960
colleges, right?
link |
02:41:46.920
Challenge gets very specific and very channeled, right?
link |
02:41:50.080
And so people get, they get a lot of learning in the thing they know about and it's hard
link |
02:41:54.800
then to bridge that and to get them to think differently enough to have a sense that you
link |
02:42:00.680
might have something to offer because it's different.
link |
02:42:02.920
It's like, well, how do I implement that?
link |
02:42:04.360
How do I, what do I do with that?
link |
02:42:05.920
Like, do I, which budget do I take from?
link |
02:42:07.720
Do I slow down my spend on Google ads or my spend on Facebook ads or do I not hire a
link |
02:42:12.640
content creator and stay like, like there's an operational aspect to that that you have
link |
02:42:17.200
to be the CMO, right?
link |
02:42:19.120
Or the CEO.
link |
02:42:20.120
You have to get the right level.
link |
02:42:21.120
So you have to hire at a high position level.
link |
02:42:23.960
Right.
link |
02:42:24.960
People that care about this.
link |
02:42:25.960
Right.
link |
02:42:26.960
Or they won't know how.
link |
02:42:27.960
Right.
link |
02:42:28.960
And because you can also do it very clumsily.
link |
02:42:29.960
Yeah.
link |
02:42:30.960
Right.
link |
02:42:31.960
And I've seen, because you can, you absolutely have to honor and recognize the people you're
link |
02:42:35.600
going to and the fact that if you just throw money at them, it could actually create more
link |
02:42:38.840
problems.
link |
02:42:39.840
Can I just say, this is not you saying.
link |
02:42:40.840
Can I just, because I just need, I need, I need to say this.
link |
02:42:44.360
I've been very surprised how often marketing people are terrible at marketing.
link |
02:42:51.760
I feel like the best marketing is doing something novel and unique that anticipates the future.
link |
02:42:58.360
It feels like so much of the marketing practice is like what they took in school or maybe
link |
02:43:04.680
they're studying from what was the best thing that was done in the past decade.
link |
02:43:08.720
And they're just repeating that over and over as opposed to innovating, like taking the risk.
link |
02:43:13.840
To me, marketing.
link |
02:43:14.840
That's a great point.
link |
02:43:15.840
Is taking the big risk.
link |
02:43:16.840
That's a great point.
link |
02:43:17.840
And being the first one to risk.
link |
02:43:18.840
Yeah.
link |
02:43:19.840
And they're not.
link |
02:43:20.840
There's an aspect of data observation from that risk.
link |
02:43:21.840
Right.
link |
02:43:22.840
That's, that's, that's, I think it's shared what they're doing already, but it absolutely,
link |
02:43:26.040
it's about, I think it's content.
link |
02:43:27.760
Like there's this whole world on content marketing that you could almost say, well, yeah, it can
link |
02:43:32.960
get over, you can get, you can get inundated with stuff that's not relevant to you.
link |
02:43:36.560
Because what you're saying would be highly relevant and highly useful and highly, highly
link |
02:43:40.680
beneficial.
link |
02:43:41.680
Yeah.
link |
02:43:42.680
But it's, it's a risk.
link |
02:43:43.680
I mean, that's why sort of there's a lot of innovative ways of doing that.
link |
02:43:46.320
Tesla is an example of people that basically don't do marketing.
link |
02:43:49.960
They do marketing in a very like, let's say Elon hired a person who's just good at Twitter
link |
02:43:55.720
for running Tesla's Twitter account.
link |
02:43:57.480
No, right.
link |
02:43:58.480
Right.
link |
02:43:59.480
I mean, that's exactly what you want to be doing.
link |
02:44:00.840
You want to be constantly innovating in the.
link |
02:44:02.720
Right.
link |
02:44:03.720
There's an aspect of telling.
link |
02:44:04.720
I've definitely seen people doing great work where you're not talking about it.
link |
02:44:08.440
Like I would say that's actually a problem I have right now with Quonsite Labs.
link |
02:44:10.880
Quonsite Labs has been doing amazing work, really excited about it.
link |
02:44:13.480
We have not been talking about it enough.
link |
02:44:15.520
We haven't been.
link |
02:44:16.520
And there's different ways to talk about it.
link |
02:44:17.760
There's different ways to, there's different channels to which to communicate.
link |
02:44:20.920
There's also like, I'll just throw some shade at companies I love.
link |
02:44:27.920
So for example, iRobot, I just had a conversation with them.
link |
02:44:30.800
They make Roombas.
link |
02:44:31.800
Sure.
link |
02:44:32.800
And I think I love the incredible robots, but like every time they do like advertisement
link |
02:44:38.280
assistant, not advertisement, but like marketing type stuff, it just looks so corporate.
link |
02:44:44.440
And to me, the incredible, maybe wrong in the case of iRobot, I don't know.
link |
02:44:50.320
But to me, when you're talking about engineering systems, it's really nice to show off the
link |
02:44:55.360
magic of the engineering and the software and the, all the, all the geniuses behind
link |
02:45:02.040
this product and the tinkering and like the raw authenticity of what it takes to build
link |
02:45:07.080
that system versus the marketing people who want to have like pretty people, like standing
link |
02:45:12.440
there all pretty with the robots, like moving perfectly.
link |
02:45:15.800
So to me, there's some aspect, it's like speaking to the hackers.
link |
02:45:19.160
You have to throw some bones, some, some care towards the engineers, the developers, because
link |
02:45:27.560
there's some aspect, one for the hiring, but two, there's an authenticity to that kind
link |
02:45:32.200
of communication that's really inspiring to the end user as well.
link |
02:45:36.200
Like if they know that brilliant people, the best in the world are working at your company,
link |
02:45:40.760
they start to believe that that product that you're creating is really good.
link |
02:45:43.920
It's interesting because your initial reaction would be, wait, there's different users here.
link |
02:45:46.800
Why would you do that?
link |
02:45:47.800
You know, my wife bought a Roomba Roomba, but she, and she loves developers, she loves
link |
02:45:52.320
me, but she doesn't care about that culture.
link |
02:45:56.680
So essentially what you said is actually the authenticity, because everyone has a friend
link |
02:46:00.480
or everyone knows people.
link |
02:46:01.480
There's word of mouth.
link |
02:46:02.480
I mean, if you...
link |
02:46:03.480
Word of mouth is so, so popular.
link |
02:46:04.480
Yeah, exactly.
link |
02:46:05.480
That's interesting.
link |
02:46:06.480
Because I think it's the lack of that realization there's this halo effect that influences your
link |
02:46:09.920
general marketing.
link |
02:46:10.920
Interesting.
link |
02:46:11.920
For some stupid reason, I do have a platform and it seems that the reason I have a platform,
link |
02:46:17.040
many others like me, millions of others, is like the authenticity and like we get excited
link |
02:46:22.360
naturally about stuff and like I don't want to get excited about that iRobot video because
link |
02:46:28.040
it's boring, it's marketing, it's corporate, as opposed to I wanted to do some fun.
link |
02:46:33.640
This is me like a shout out to iRobot, is they're not letting me get into the robot.
link |
02:46:38.880
Yeah.
link |
02:46:39.880
Well, there's an aspect of, they could be benefiting from a culture of modularity like
link |
02:46:44.920
add ons and like that could actually dramatically help.
link |
02:46:47.880
You've seen that over history.
link |
02:46:49.240
I mean, Apple is an example of a company like that or the...
link |
02:46:52.840
I can see what your point is, is that you have something that needs to be adopted broadly,
link |
02:46:58.240
the concept needs to be adopted broadly and if you want to go beyond this one device,
link |
02:47:01.720
you need to engage this community.
link |
02:47:04.240
Yeah.
link |
02:47:05.240
And connecting to the open source, as you said, I got to ask you, your programmer, one
link |
02:47:12.160
of the most impactful programmers ever, you've led many programmers, you lead many programmers.
link |
02:47:18.880
What are some from a programmer perspective?
link |
02:47:21.680
What makes a good programmer?
link |
02:47:23.520
What makes a productive programmer?
link |
02:47:25.080
Is there a device you can give to be a great programmer as well?
link |
02:47:29.000
That's a great, great question.
link |
02:47:30.520
And there are times in my life I'd probably answer this even better than I hope maybe
link |
02:47:33.560
give an answer today because I thought about this numerous times, like right now I've spent
link |
02:47:37.440
on so much time recently hiring salespeople that your mind is a little bit on something
link |
02:47:44.000
else.
link |
02:47:45.000
And so I reflected on the past and also I have some really, the only way I can do this,
link |
02:47:49.200
I have some really great programmers that I work with who lead the teams that they lead
link |
02:47:53.200
and my goal is to inspire them and hopefully help them, encourage them and be, help them
link |
02:47:58.120
encourage with their teams.
link |
02:47:59.620
I would say there's a number of things, a couple of things.
link |
02:48:01.360
One is curiosity.
link |
02:48:04.360
I think a programmer without curiosity is mundane, like you'll lose interest, you won't
link |
02:48:11.160
do your best work.
link |
02:48:12.160
So it's sort of, it's an affect, it's sort of, are you, you have some curiosity about
link |
02:48:15.800
things.
link |
02:48:16.800
I think two, don't try to do everything at once, recognize that you're, you know, we're
link |
02:48:21.000
limited as humans, you're limited as a human and each one of us are limited in different
link |
02:48:24.560
ways.
link |
02:48:25.560
You know, we all have our different strengths and skills, so it's adapting the art of programming
link |
02:48:28.640
to your skills.
link |
02:48:29.640
One of the things that always works is to limit what you're trying to solve, right?
link |
02:48:34.000
So if you're part of a team, usually maybe somebody else has put the architecture together
link |
02:48:38.840
and they've gotten given a portion for you if you're, if you're young, if you're not
link |
02:48:42.680
part of a team, it's sort of breaking down the problem into smaller parts is essential
link |
02:48:47.280
for you to make progress.
link |
02:48:48.760
It's very easy to take on a big project and try to do it all at once and you get lost
link |
02:48:52.800
and then you do it badly.
link |
02:48:54.320
So thinking about, you know, very concretely what you're doing, defining the inputs and
link |
02:49:01.000
outputs, defining what you want to get done, even just talking about that and like writing
link |
02:49:06.240
down before you write code, just what are you trying to accomplish?
link |
02:49:09.240
I mean, very specific about it, really, really helps.
link |
02:49:12.760
I think using other people's work, right, don't, don't be afraid that somehow you're,
link |
02:49:20.120
like you should do it all, like nobody does.
link |
02:49:23.120
Stand on the shoulders of giants and copy and paste some stock overplay.
link |
02:49:26.560
Copy and paste some stock overplay, it's like, but, but, but don't just copy and paste, it's
link |
02:49:30.240
particularly relevant in the era of codecs and the, you know, the auto generated code,
link |
02:49:34.240
which is essentially I see as an indexing of stock overflow.
link |
02:49:36.840
Right, exactly.
link |
02:49:37.840
Secondly, it's like.
link |
02:49:38.840
It's a search engine.
link |
02:49:39.840
It's a search engine over stock overflow, basically, so it's not, I mean, it's, we've
link |
02:49:42.240
had this for a while.
link |
02:49:43.240
Yeah.
link |
02:49:44.240
But really, you want to cut and paste, but, but, but not blindly, like, absolutely I've
link |
02:49:49.240
cut and paste to understand, but then you understand, oh, this is what this means.
link |
02:49:53.640
Oh, this is what it's doing and understanding as much as you can.
link |
02:49:56.800
So it's critical.
link |
02:49:57.800
That's where the curiosity comes in.
link |
02:49:59.120
If you're just blindly cutting and basting, you're not going to understand.
link |
02:50:02.080
And so understand and then, you know, be, be sensitive to hype cycles, right?
link |
02:50:09.440
Every, every few, every few often there's always a, oh, test driven development is the
link |
02:50:12.160
answer.
link |
02:50:13.160
Oh, object oriented is the answer.
link |
02:50:14.160
Oh, like there's always an answer, you know, agile is the answer.
link |
02:50:18.680
Be cautious of jumping onto a hype cycle.
link |
02:50:20.960
Like likely there's signal, like there's a thing there that's, that's actually valuable
link |
02:50:24.400
you can learn from, but it's almost certainly not the answer to everything you need.
link |
02:50:29.080
What lessons do you draw from you having created NumPy and SciPy, like in, in service of sort
link |
02:50:36.280
of answering the question of what it takes to be a great programmer and giving advice
link |
02:50:39.560
to people?
link |
02:50:40.560
Yeah.
link |
02:50:41.560
How can you be the next person to create a SciPy?
link |
02:50:43.080
Yeah.
link |
02:50:44.080
So one is listen.
link |
02:50:45.080
Two.
link |
02:50:46.080
Listen.
link |
02:50:47.080
To who?
link |
02:50:48.080
Uh, to, uh, to people that have a problem, right, which is everybody, right, but, but
link |
02:50:53.440
listen and listen to many and, and try to, uh, then do like don't, you're going to have
link |
02:50:58.400
to do an experiment, you know, do fall down.
link |
02:51:00.640
Don't be afraid to fall down.
link |
02:51:01.640
Don't be afraid.
link |
02:51:02.640
You know, the first thing you do is probably going to suck and that's okay, right?
link |
02:51:08.080
It's honestly, I think iteration is the key to innovation and, and it's that, it's almost
link |
02:51:12.960
that psychological, um, hesitation we have to just, uh, iterate like, yeah, we know,
link |
02:51:19.360
we know it's not great, but next someone will be better.
link |
02:51:22.040
I mean, just, just keep learning and keep proving and keep improving.
link |
02:51:25.680
It's, it's, it's an attitude, um, and then it doesn't take intense concentration, right?
link |
02:51:32.400
Good things don't happen just it's not quite like Tik Tok or like Facebook.
link |
02:51:37.640
You know, you can't scroll your way to good programming, right?
link |
02:51:40.640
There are, you know, sincere like hours of, of deep, don't be afraid of the deep problem.
link |
02:51:46.120
Like often people will run away from something because, oh, I can't solve this and you might
link |
02:51:49.640
be right, but give it an hour, give it a couple of hours and see and you know, just, um, five
link |
02:51:55.000
minutes.
link |
02:51:56.000
It's not going to, not going to give you that.
link |
02:51:57.000
Was it lonely when you were building Saipa and Napa?
link |
02:52:00.360
Oh, hugely.
link |
02:52:01.360
Yeah.
link |
02:52:02.360
Absolutely lonely in the sense of you have to have an inner drive and that inner drive
link |
02:52:06.640
for me always comes from, I have to, I have to see that this is right in some angle.
link |
02:52:11.480
I have to believe it, that this is the right approach, the right thing to do.
link |
02:52:14.800
With Saipa, it was like, oh yeah, the world needs libraries in Python.
link |
02:52:19.280
Clearly Python is popular enough with enough influential people that to start and it needs
link |
02:52:23.440
more libraries.
link |
02:52:24.440
Yeah.
link |
02:52:25.440
So that is a good, you know, itself.
link |
02:52:26.440
So I'm going to go do that good.
link |
02:52:28.440
So find a good, find a thing that you know is good and just, just work on it.
link |
02:52:33.080
So that has to happen and it is, and you kind of have to have enough realization of your
link |
02:52:37.200
mission to be okay with the naysayer or the fact that not everybody joins you at front.
link |
02:52:41.920
In fact, the one thing I've talked to people a lot, I've seen a lot of projects come and
link |
02:52:44.680
some fail.
link |
02:52:45.680
Like not everything I've done has actually worked perfectly.
link |
02:52:47.560
I've tried a bunch of stuff that, okay, that didn't really work or this isn't working and
link |
02:52:50.720
why.
link |
02:52:52.160
But you see the patterns and one of the key things is you can't even know for six months.
link |
02:52:59.000
I say 18 months right now.
link |
02:53:00.200
If you're starting a new project, you got to give it a good 18 month run before you even
link |
02:53:03.680
know if the feedback's there.
link |
02:53:05.440
Like it's, you're not going to know in six months.
link |
02:53:07.920
You might have the perfect thing, but six months from now it's still kind of still emerging.
link |
02:53:11.560
So give it time because you're dealing with humans and humans have an inertial energy
link |
02:53:15.840
that just doesn't change that quickly.
link |
02:53:18.240
So let me ask a silly question.
link |
02:53:21.160
But like you said, you're focused on the sales side of things currently.
link |
02:53:26.360
But back when you were actually programming, maybe in the 90s, you talked about IDs.
link |
02:53:31.920
What's your, a setup that you have that brings you joy, keyboard, number of screens, Linux?
link |
02:53:39.600
I do still like to program some, it's not as much as I used to.
link |
02:53:42.040
I have two projects I'm super interested in trying to find funding for them, trying to
link |
02:53:45.800
figure out some good teams for them, but I could talk about those.
link |
02:53:49.120
But yeah, I'm an Emacs guy.
link |
02:53:51.800
Great.
link |
02:53:52.800
Thanks.
link |
02:53:53.800
The superior editor, everybody, I've got, I don't often delete tweets, but one of the
link |
02:53:59.600
tweets I deleted when I said Emacs was better than Vim.
link |
02:54:03.000
And then the hate I got, I was like, I'm walking away from this.
link |
02:54:06.880
I do too.
link |
02:54:08.120
I don't push it.
link |
02:54:09.120
I mean, I'm, I'm just joking.
link |
02:54:10.720
Of course.
link |
02:54:11.720
Yeah, exactly.
link |
02:54:12.720
It's kind of like, but people do take the editor seriously.
link |
02:54:13.720
They take it seriously.
link |
02:54:14.720
I did it as a joke.
link |
02:54:15.720
It's your life.
link |
02:54:16.720
It is, but there's something, there's something beautiful to me about Emacs, but that's for
link |
02:54:21.360
people that love them.
link |
02:54:22.360
There's something beautiful to them about that.
link |
02:54:23.360
There is.
link |
02:54:24.360
I mean, I do use Vim for quick editing, like command line, if I say quick editing, I will
link |
02:54:28.080
still sometimes use it, but not much.
link |
02:54:30.360
Like it's simple corrective, corrective single editor character.
link |
02:54:32.800
So when you were developing SciPy, you were using Emacs?
link |
02:54:34.960
Emacs.
link |
02:54:35.960
Yeah.
link |
02:54:36.960
SciPy NumPy are all written in Emacs on a Linux box and CVS and then SVN, version control.
link |
02:54:43.320
Git came later.
link |
02:54:44.320
Git has, I love distributed branch stuff.
link |
02:54:48.040
I think Git is pretty complicated, but I love the concept.
link |
02:54:51.960
And also, of course, GitHub is, and then GitLab, Git, definitely consumable, but that came
link |
02:54:59.080
later.
link |
02:55:00.080
Did you ever touch the list, but all day?
link |
02:55:01.080
Like, were we, were we emotional feelings about all the parentheses?
link |
02:55:04.720
Great question.
link |
02:55:05.720
So I find myself appreciating lists today much more than I did early because when I came
link |
02:55:10.280
to programming, I knew programming, but I was a domain expert, right?
link |
02:55:13.040
And to me, the parentheses were in the way.
link |
02:55:15.240
It's like, wow, it's just all this, like it just gets in the way of my thinking about
link |
02:55:19.360
what I'm doing.
link |
02:55:20.360
So why would I have all these, right?
link |
02:55:22.480
That was my initial reaction to it.
link |
02:55:24.560
You know, now as I appreciate kind of the structure that kind of naturally maps to the,
link |
02:55:29.120
to a logical thinking about a program, I can appreciate them, right?
link |
02:55:33.000
And why it's actually, you could, you could create editors that make it not so problematic,
link |
02:55:38.080
right?
link |
02:55:39.080
Honestly.
link |
02:55:40.080
Yeah.
link |
02:55:41.080
So I actually have a much more appreciation of Lisp and things like closure, and there's
link |
02:55:44.120
high V, which is a Python, you know, a list that compiles the Python byte code.
link |
02:55:48.520
I think it's challenging.
link |
02:55:50.360
Like typically these languages are, you know, I even saw a whole data science programming
link |
02:55:54.800
system in Lisp that somebody created, which is, you know, cool, but again, it's the, I
link |
02:55:59.480
think it's the lack of recognition of the fact that there exists what I call occasional
link |
02:56:02.800
programmers.
link |
02:56:03.800
Yes.
link |
02:56:04.800
People that are never going to be programmers for living.
link |
02:56:05.800
They don't want to have all this, the cuteness in their head.
link |
02:56:08.440
They want just.
link |
02:56:09.440
You know, it's why basic, you know, Microsoft had the right idea with basic in terms of
link |
02:56:14.880
having that be the language of visual basic, the language of Excel and SQL, SQL server.
link |
02:56:21.280
They should have converted that to Python 10 years ago, but world would be a better
link |
02:56:24.760
place if they had, but.
link |
02:56:27.280
There's also, there's a beauty and a magic to the history behind a language in Lisp,
link |
02:56:31.640
you know, some of the most interesting people in the history of computer science and artificial
link |
02:56:36.360
intelligence have used the Lisp.
link |
02:56:38.000
So.
link |
02:56:39.000
Yeah.
link |
02:56:40.000
You feel.
link |
02:56:41.000
Well, it's about that language.
link |
02:56:42.000
When you, when you have a language, you can think in it.
link |
02:56:43.000
Yeah.
link |
02:56:44.000
And it helps you think about it.
link |
02:56:45.000
And it attracts a certain kinds of people that think in a certain kind of way.
link |
02:56:47.000
And then that's, that's there.
link |
02:56:48.520
Okay.
link |
02:56:49.520
So what about like small laptop with a tiny keyboard or is there like three screens?
link |
02:56:55.080
You know, good question.
link |
02:56:56.080
I've never gotten into the big, the many screens, to be honest.
link |
02:56:58.120
I mean, and maybe it's because in my head, I kind of just, I just swap between windows.
link |
02:57:03.640
Like, partly because I guess I really can't process three screens at once anyway.
link |
02:57:09.280
Like, I just, I'm looking at one and I just flip, you know, I flip an application open.
link |
02:57:14.560
So where it's really helpful is actually when I'm trying to, you know, here's data and I
link |
02:57:19.160
want to input it from here.
link |
02:57:20.160
Right.
link |
02:57:21.160
This is the only time I really need another screen.
link |
02:57:22.160
So now, because you're both developer, lead developers, but then there's also these businesses
link |
02:57:27.760
and their sales people in your working large companies.
link |
02:57:31.160
Operations people, hiring people.
link |
02:57:32.160
Yeah, the whole thing.
link |
02:57:33.600
Which operating system is your favorite at this, at this point?
link |
02:57:37.280
So Linux was the early days.
link |
02:57:38.600
Linux.
link |
02:57:39.600
So yeah, I love, love Linux as a, as a server side and it was early days I had my own Linux
link |
02:57:42.960
desktop.
link |
02:57:43.960
Um, I've been on Mac laptops for 10 years now.
link |
02:57:47.800
Yeah.
link |
02:57:48.800
This is what leadership looks like is you switch to Mac.
link |
02:57:52.280
Okay.
link |
02:57:53.280
Great.
link |
02:57:54.280
Yeah.
link |
02:57:55.280
Pretty much.
link |
02:57:56.280
I mean, just the fact that I had to do PowerPoints, I had to do presentations and, you know, plug
link |
02:58:00.000
in, I just couldn't mess with plugging in laptops.
link |
02:58:02.280
It wouldn't project and yeah.
link |
02:58:04.520
So you mentioned also Quonset Labs and things like that.
link |
02:58:09.320
Can you give advice on how to hire great programmers and great people?
link |
02:58:14.640
Yeah.
link |
02:58:15.640
I would say produce an open source project, get people contributing to it and hire those
link |
02:58:21.120
people.
link |
02:58:22.120
Yeah.
link |
02:58:23.120
I mean, you're doing it sort of, uh, you might, maybe perhaps a little biased, but that's
link |
02:58:27.520
probably a hundred percent really good advice.
link |
02:58:30.240
I find it hard to hire.
link |
02:58:31.760
I still find it hard to hire.
link |
02:58:32.960
Like in terms of, I don't think that it's not hard to hire if I've worked with somebody
link |
02:58:37.360
for a couple of weeks, but a cup, an hour or two of interviews, I have no idea.
link |
02:58:43.680
So that instinct, that radar of knowing if you're good or not, that you've, you've found
link |
02:58:49.680
that you're still not able to really.
link |
02:58:50.840
It's really hard.
link |
02:58:51.840
I mean, the resume can help, but again, the resume is like a presentation of the things
link |
02:58:56.040
they want you to see, not the reality of, of, and there's also, um, you know, you have
link |
02:59:02.360
to understand what you're hiring for.
link |
02:59:04.280
There are different stages and different kinds of skills.
link |
02:59:06.880
And so it isn't just a, um, one of the things I talk a lot about internally at my company
link |
02:59:12.520
is that the whole idea of, of measuring ourselves against a single axis is flawed because we're
link |
02:59:18.880
not, it's a multi dimensional space and how do you order a multi dimensional space?
link |
02:59:22.200
There isn't one ordering.
link |
02:59:23.560
So this whole idea, you, you immediately have projected into a thing when you're talking
link |
02:59:27.480
about hiring or best or worst or better or not better.
link |
02:59:30.760
So what is the thing you're actually needing?
link |
02:59:33.840
And you can hire for that.
link |
02:59:36.080
There is such a thing.
link |
02:59:37.080
Generally, I really value people who have the affect, uh, the care about open source.
link |
02:59:42.640
Like, so in some cases, they're, they're affinity to open source is simply a kind of a filter
link |
02:59:47.120
of an affect.
link |
02:59:48.120
Um, however, I have found this interesting dichotomy between open source contributors
link |
02:59:54.880
and product creation.
link |
02:59:57.280
There's, I don't know if it's fully true, but there does seem to be the more, uh, the
link |
03:00:04.240
more experienced, the more affect somebody has to an open source community, the less
link |
03:00:08.560
ability to actually produce product that they have and the opposite is kind of true too.
link |
03:00:13.600
The more product focused are, I find a lot of people have talked to a lot of people who
link |
03:00:16.680
produce really great products and they, they have a, they're looking over the open source
link |
03:00:20.640
communities, kind of wanting to participate and play, but they've played here and they
link |
03:00:24.800
do a great job here.
link |
03:00:26.080
And then they don't necessarily have some of the same, I don't think that, I don't think
link |
03:00:30.280
that's entirely necessary.
link |
03:00:32.040
I think part of it is cultural, how that's, how they've emerged, cause one of the things
link |
03:00:35.360
that open source communities often lack is great product management, like some product
link |
03:00:39.720
management energy.
link |
03:00:40.720
That's brilliant.
link |
03:00:41.720
But you want both of those energies in the same place together.
link |
03:00:44.840
Yes.
link |
03:00:45.840
And so it's a lot of it's creating these teams of people that have these needed skills and
link |
03:00:49.880
attributes that are hard.
link |
03:00:51.960
And so, so one of the big things I look for is somebody that fundamentally recognize their
link |
03:00:56.400
need to learn, like one of the values that we, we have in all of the things we do is
link |
03:01:00.960
learning.
link |
03:01:01.960
Like if somebody thinks they know it all, they're going to struggle.
link |
03:01:06.280
And some of that is just, there's more basic things like humility, just being humble in
link |
03:01:12.280
the face of all the things you don't know.
link |
03:01:14.440
And that's like step one of learning.
link |
03:01:15.800
That's step one of learning, right?
link |
03:01:17.320
And you know, I've spent a lot of time learning, right?
link |
03:01:20.960
Other people spend a lot more time, but I've spent a lot of time learning.
link |
03:01:22.880
I went, you know, my whole goal was to get a PhD because I love school and I wanted to
link |
03:01:27.200
be a scientist.
link |
03:01:28.400
And then what I found is what's been written about elsewhere as well as the more I learned,
link |
03:01:32.640
the more I didn't know, the more I realized, man, I know about this, but this is such a
link |
03:01:38.160
tiny thing in the global scope of what I might want to know about.
link |
03:01:41.320
So I need to be listening a whole lot better than I am just talking.
link |
03:01:47.960
That's changed a little bit.
link |
03:01:48.960
Actually, my wife says that I used to be a better listener.
link |
03:01:50.680
Now that I'm so full of all these ideas I want to do, she kind of says, you've got to
link |
03:01:53.720
give people time to talk.
link |
03:01:55.600
So you've succeeded on multiple dimensions.
link |
03:01:58.440
So one is the tenure track faculty.
link |
03:02:01.720
The other is just creating all these products and building up the businesses, then working
link |
03:02:05.200
with businesses.
link |
03:02:06.200
Do you have advice for young people today in high school, in college, of how to live
link |
03:02:12.560
a life as nonlinear and as successful as yours, a life that could be, they could be proud
link |
03:02:20.560
of?
link |
03:02:21.560
Well, that's a super compliment.
link |
03:02:23.080
I'm humbled by that actually.
link |
03:02:24.560
I would say a life they can be proud of, honestly, one thing that I've said to people
link |
03:02:29.360
is first, find people you love and care about them.
link |
03:02:34.360
Like family matters to me a lot, and family means people you love and have committed to.
link |
03:02:39.720
So it can be whatever you mean by that, but you need to have a foundation.
link |
03:02:45.240
So find people you love and want to commit to and do that, because it anchors you in
link |
03:02:50.200
a way that nothing else can.
link |
03:02:52.320
And then you find other things, and then from out there, you find other kinds of things
link |
03:02:57.800
you can commit to, whether it's ideas or people or groups of people.
link |
03:03:04.320
So especially in high school, I would say, don't settle on what you think you know.
link |
03:03:10.480
Give yourself 10 years to think about the world.
link |
03:03:13.800
I see a lot of high school students who seem to know everything already, and I think I
link |
03:03:18.240
did too.
link |
03:03:19.240
I think it's maybe natural, but recognize that the things you care about, you might change
link |
03:03:23.920
your perspective over time.
link |
03:03:26.520
I certainly have over time, because I was really passionate about one specific thing
link |
03:03:30.520
that kind of softened, I was a big, didn't like the Federal Reserve, and there's still,
link |
03:03:37.480
we could have a longer conversation about monetary policy and finances, but I'm a little
link |
03:03:42.600
more nuanced in my perspective at this point.
link |
03:03:48.200
But that's one area where you learn about something, go, I want to attack it.
link |
03:03:52.880
Build, don't destroy.
link |
03:03:55.480
Build, so often the tendency is to not like something, they want to go attack it.
link |
03:04:00.200
Build something.
link |
03:04:01.200
Build something to replace it.
link |
03:04:02.760
Build up.
link |
03:04:03.760
Attract people to your new thing.
link |
03:04:05.720
You'll be far better.
link |
03:04:08.840
You don't need to destroy something to build something else.
link |
03:04:12.640
So that's, I guess, generally.
link |
03:04:14.920
And then definitely like curiosity, follow your curiosity and let it, don't just follow
link |
03:04:23.200
the money.
link |
03:04:24.200
And all of that, like you said, is grounded in family, friendship, and ultimately love.
link |
03:04:31.360
Which is a great way to end it, Travis, you're one of the most impactful people in the engineer
link |
03:04:37.640
and the computer science in the human world.
link |
03:04:40.080
So I truly appreciate everything you've done, and I really appreciate that you would spend
link |
03:04:45.760
your valuable time with me.
link |
03:04:46.960
It was an honor.
link |
03:04:47.960
It was a real pleasure for me.
link |
03:04:48.960
I appreciate that.
link |
03:04:49.960
Thanks for listening to this conversation with Travis Oliphant.
link |
03:04:54.040
To support this podcast, please check out our sponsors in the description.
link |
03:04:58.000
And now, let me leave you with something that in the programming world is called Hodgson's
link |
03:05:03.480
Law.
link |
03:05:05.240
Every sufficiently advanced LISP application will eventually be reimplemented in Python.
link |
03:05:12.640
Thank you for listening, and hope to see you next time.