Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming
技术与编程音乐与艺术商业与创业AI 与机器学习心理与人性
📋 章节目录
暂无章节信息
🔑 关键词
pythondonnumpydidnsaidsourcelanguagescipydoingprogrammingstartedmoneygotstuffarraycommunitycodedonedataconda
💬 精彩语录
暂无语录
🎙️ 完整对话(5085 条)
Lex Fridman (00:00.000)
The following is a conversation with Travis Oliphant,
Lex Fridman (00:03.600)
one of the most impactful programmers
Lex Fridman (00:05.520)
and data scientists ever.
Lex Fridman (00:07.900)
He created NumPy, SciPy, and Anaconda.
Lex Fridman (00:12.760)
NumPy formed the foundation
Travis Oliphant (00:14.500)
of tensor based machine learning in Python,
Lex Fridman (00:17.060)
SciPy formed the foundation
Travis Oliphant (00:18.880)
of scientific programming in Python,
Lex Fridman (00:20.960)
and Anaconda, specifically with Conda,
Travis Oliphant (00:23.980)
made Python more accessible to a much larger audience.
Lex Fridman (00:27.620)
Travis's life work across a large number of programming
Lex Fridman (00:31.200)
and entrepreneurial efforts has and will continue
Lex Fridman (00:34.760)
to have immeasurable impact on millions of lives
Travis Oliphant (00:38.440)
by empowering scientists and engineers
Lex Fridman (00:41.360)
in big companies, small companies,
Lex Fridman (00:43.600)
and open source communities to take on difficult problems
Lex Fridman (00:47.200)
and solve them with the power of programming.
Travis Oliphant (00:50.520)
Plus, he's a truly kind human being,
Lex Fridman (00:53.440)
which is something that when combined with vision
Lex Fridman (00:56.000)
and ambition makes for a great leader
Lex Fridman (00:58.400)
and a great person to chat with.
Travis Oliphant (01:01.160)
To support this podcast,
Lex Fridman (01:02.320)
please check out our sponsors in the description.
Travis Oliphant (01:04.880)
This is the Lex Friedman Podcast,
Lex Fridman (01:06.960)
and here is my conversation with Travis Oliphant.
Lex Fridman (01:11.520)
What was the first computer program you've ever written?
Lex Fridman (01:14.480)
Do you remember?
Travis Oliphant (01:15.320)
Whoa, that's a good question.
Lex Fridman (01:16.920)
I think it was in fourth grade.
Travis Oliphant (01:18.380)
Just a simple loop in BASIC.
Lex Fridman (01:20.920)
BASIC. BASIC, yeah, on an Atari 800,
Travis Oliphant (01:23.320)
Atari 400, I think, or maybe it was an Atari 800.
Lex Fridman (01:26.840)
It was a part of a class,
Lex Fridman (01:28.300)
and we just were just BASIC loops to print things out.
Lex Fridman (01:32.560)
Did you use go to statements?
Travis Oliphant (01:34.920)
Yes, yes, we used go to statements.
Lex Fridman (01:38.000)
I remember in the early days,
Travis Oliphant (01:39.560)
that's when I first realized
Lex Fridman (01:41.160)
there's like principles to programming,
Travis Oliphant (01:43.320)
when I was told that don't use go to statements.
Lex Fridman (01:45.720)
Those are bad software engineering principles,
Travis Oliphant (01:48.080)
like it goes against what great, beautiful code is.
Lex Fridman (01:52.040)
I was like, oh, okay, there's rules to this game.
Travis Oliphant (01:54.800)
I didn't see that until high school
Lex Fridman (01:56.240)
when I took an AP computer science course.
Travis Oliphant (01:58.360)
I did a lot of other kinds of just programming in TI,
Lex Fridman (02:02.200)
but finally, when I took an AP computer science course
Travis Oliphant (02:04.160)
in Pascal.
Lex Fridman (02:05.720)
Wow.
Travis Oliphant (02:06.560)
That's, yeah, it was Pascal.
Lex Fridman (02:07.440)
That's when I, oh, there are these principles.
Lex Fridman (02:09.760)
Not C or C++?
Lex Fridman (02:11.320)
No, I didn't take C until the next year in college.
Travis Oliphant (02:14.660)
I had a course in C, but I haven't done much in Pascal,
Lex Fridman (02:18.100)
just that AP computer science course.
Travis Oliphant (02:20.160)
Now, sorry for the romanticized question,
Lex Fridman (02:23.480)
but when did you first fall in love with programming?
Travis Oliphant (02:26.720)
Oh, man, good question.
Lex Fridman (02:27.880)
I think actually when I was 10,
Travis Oliphant (02:30.280)
my dad got us a TI Timex Sinclair,
Lex Fridman (02:33.460)
and he was excited about the spreadsheet capability,
Lex Fridman (02:37.200)
and then, but I made him get the basic,
Lex Fridman (02:39.560)
the add ons we could actually program in basic,
Lex Fridman (02:41.840)
and just being able to write instructions
Lex Fridman (02:44.520)
and have the computer do something.
Travis Oliphant (02:45.960)
Then we got a TI 994A when I was about 12,
Lex Fridman (02:50.080)
and I would just, it had sprites and graphics and music.
Travis Oliphant (02:52.960)
You could actually program it to do music.
Lex Fridman (02:55.320)
That's when I really sort of fell in love with programming.
Lex Fridman (02:58.600)
So this is a full, like a real computer
Lex Fridman (03:01.060)
with like, with memory and storage,
Travis Oliphant (03:04.120)
processors and whatnot,
Lex Fridman (03:05.240)
because you say TI. Yeah, the Timex Sinclair
Travis Oliphant (03:07.360)
was one of the very first, it was a cheap, cheap,
Lex Fridman (03:09.680)
like, I think it was, well, it was still expensive,
Lex Fridman (03:12.760)
but it was 2K of memory.
Lex Fridman (03:14.440)
We got the 16K add on pack,
Lex Fridman (03:16.760)
but yeah, it had memory, and you could program it.
Lex Fridman (03:19.000)
You had the, in order to store your programs,
Travis Oliphant (03:20.920)
you had to attach a tape drive.
Lex Fridman (03:22.880)
Remember that old, the sound that would play
Travis Oliphant (03:24.400)
when you converted the modems would convert digital bits
Lex Fridman (03:29.440)
to audio files set on a tape drive.
Travis Oliphant (03:31.920)
Still remember that sound, but that was the storage.
Lex Fridman (03:34.760)
And what was the programming language, do you remember?
Travis Oliphant (03:36.480)
It was basic. It was basic.
Lex Fridman (03:37.320)
And then they had a VisiCalc,
Lex Fridman (03:38.980)
and so a little bit of spreadsheet programming
Lex Fridman (03:40.600)
in VisiCalc, but mostly just some basic.
Lex Fridman (03:42.760)
Do you remember what kind of things drew you to programming?
Lex Fridman (03:46.340)
Was it working with data, was it video games?
Lex Fridman (03:50.360)
Games, math, mathy stuff?
Lex Fridman (03:52.600)
Yeah, I've always loved math,
Lex Fridman (03:54.800)
and a lot of people think they don't like math
Lex Fridman (03:58.080)
because I think when they're exposed to it early,
Travis Oliphant (04:00.440)
it's about memory.
Lex Fridman (04:02.080)
When you're exposed to math early,
Travis Oliphant (04:03.260)
you have a good short term memory,
Lex Fridman (04:04.280)
can remember his timetables.
Lex Fridman (04:05.920)
And I do have a reasonably, I mean, not perfect,
Lex Fridman (04:08.600)
but a reasonably long little short term memory buffer.
Lex Fridman (04:12.480)
And so I did great at timetables.
Lex Fridman (04:14.320)
I said, oh, I'm good at math.
Lex Fridman (04:15.840)
But I started to really like math,
Lex Fridman (04:17.360)
just the problem solving aspect.
Lex Fridman (04:20.320)
And so computing was problem solving applied.
Lex Fridman (04:25.040)
And so that's always kind of been the draw,
Travis Oliphant (04:28.280)
kind of coupled with the mathematics.
Lex Fridman (04:30.480)
Did you ever see the computer as like an extension
Lex Fridman (04:33.920)
of your mind, like something able to achieve?
Lex Fridman (04:36.520)
Not till later.
Travis Oliphant (04:37.760)
Okay.
Lex Fridman (04:38.600)
Yeah, not then.
Travis Oliphant (04:39.440)
It's just like a little set of puzzles
Lex Fridman (04:40.880)
that you can play with and you can play with math puzzles.
Travis Oliphant (04:43.520)
Yeah, it was too rudimentary early on.
Lex Fridman (04:46.120)
Like it was sort of, yeah, it was a lot of work
Travis Oliphant (04:49.160)
to actually take a thought you'd have
Lex Fridman (04:51.440)
and actually get it implemented.
Lex Fridman (04:53.120)
And that's still work, but it's getting easier.
Lex Fridman (04:56.020)
And so yeah, I would say that's definitely
Travis Oliphant (04:58.240)
what's attracting me to Python
Lex Fridman (04:59.560)
is that that was more real, right?
Travis Oliphant (05:02.140)
I could think in Python.
Lex Fridman (05:04.840)
Speaking of foreign language,
Travis Oliphant (05:05.800)
I only speak another language fluently besides English,
Lex Fridman (05:08.400)
which is Spanish.
Lex Fridman (05:09.220)
And I remember the day when I would dream in Spanish
Lex Fridman (05:11.720)
and you start to think in that language.
Lex Fridman (05:13.440)
And then you actually, I do definitely believe
Lex Fridman (05:15.340)
that language limits or expands your thinking.
Travis Oliphant (05:19.640)
There's some languages that actually lead you
Lex Fridman (05:21.600)
to certain thought processes.
Travis Oliphant (05:23.860)
Yeah, like, so I speak Russian fluently
Lex Fridman (05:27.280)
and that's certainly a language that leads you
Travis Oliphant (05:30.960)
down certain thought processes.
Lex Fridman (05:33.240)
Well, yeah, I mean, there's a history
Travis Oliphant (05:36.220)
of the two world wars of millions of people starving
Lex Fridman (05:41.220)
to death or near to death throughout its history
Travis Oliphant (05:44.180)
of suffering, of injustice, like this promise sold
Lex Fridman (05:48.020)
to the people and then the carpet
Travis Oliphant (05:50.900)
or whatever is swept from under them.
Lex Fridman (05:53.340)
And it's like broken promises.
Lex Fridman (05:54.660)
And all of that pain and melancholy is in the language,
Lex Fridman (05:58.100)
the sad songs, the sad hopeful songs,
Travis Oliphant (06:01.700)
the over romanticized, like, I love you, I hate you,
Lex Fridman (06:05.260)
the sort of the swings between all the various spectrums
Travis Oliphant (06:09.980)
of emotion, so that's all within the language.
Lex Fridman (06:13.740)
The way it's twisted, there's a strong culture
Travis Oliphant (06:18.020)
of rhyming poetry, so like the bards,
Lex Fridman (06:20.380)
like the sync, there's a musicality to the language too.
Lex Fridman (06:24.740)
Did Dostoevsky write in Russian?
Lex Fridman (06:27.380)
Yeah, so like Dostoevsky, Tostoy, all the,
Travis Oliphant (06:32.100)
all the.
Lex Fridman (06:32.940)
The ones that I know about, which are translated
Lex Fridman (06:34.660)
and I'm curious how the translations.
Lex Fridman (06:36.340)
So Dostoevsky did not use the musicality
Travis Oliphant (06:40.860)
of the language too much.
Lex Fridman (06:42.180)
So it actually translates pretty well
Travis Oliphant (06:44.180)
because it's so philosophically dense
Lex Fridman (06:46.540)
that the story does a lot of the work,
Lex Fridman (06:48.460)
but there's a bunch of things that are untranslatable.
Lex Fridman (06:51.140)
Certainly the poetry is not translatable.
Travis Oliphant (06:53.580)
I actually have a few conversations coming up offline
Lex Fridman (06:57.940)
and also in this podcast with people
Travis Oliphant (06:59.980)
who've translated Dostoevsky.
Lex Fridman (07:01.940)
And that's for people who worked, who work in this field,
Travis Oliphant (07:06.340)
know how difficult that is.
Lex Fridman (07:07.340)
Sometimes you can spend months thinking
Lex Fridman (07:10.660)
about a single sentence, right?
Lex Fridman (07:12.340)
In context, like, cause there's just the magic
Travis Oliphant (07:15.220)
captured by that sentence and how do you translate
Lex Fridman (07:17.860)
just in the right way?
Travis Oliphant (07:18.940)
Because those words can be really powerful.
Lex Fridman (07:22.380)
There's a famous line,
Travis Oliphant (07:24.300)
beauty will save the world from Dostoevsky.
Lex Fridman (07:27.140)
You know, there's so many ways to translate that.
Lex Fridman (07:29.500)
And you're right, the language gives you the tools
Lex Fridman (07:32.700)
with which to tell the story,
Lex Fridman (07:34.140)
but it also leads your mind down certain trajectories
Lex Fridman (07:37.260)
and paths to where over time,
Travis Oliphant (07:39.660)
as you think in that language,
Lex Fridman (07:41.140)
you become a different human being.
Travis Oliphant (07:42.740)
Yes. Yeah.
Lex Fridman (07:43.740)
Yeah, that's a fascinating reality, I think.
Travis Oliphant (07:45.860)
I know people have explored that,
Lex Fridman (07:47.020)
but it's just rediscovered.
Travis Oliphant (07:49.740)
Well, we don't, we live in our own like little pockets.
Lex Fridman (07:52.340)
Like this is the sad thing is I feel like unfortunately,
Travis Oliphant (07:56.860)
given time and given getting older,
Lex Fridman (07:59.140)
I'll never know China, the Chinese world,
Travis Oliphant (08:03.620)
because I don't truly know the language.
Lex Fridman (08:05.780)
Same with Japanese, I don't truly know Japanese
Lex Fridman (08:08.300)
and Portuguese and Brazil,
Lex Fridman (08:10.340)
that whole South American continent.
Travis Oliphant (08:12.060)
Like, yeah, I'll go to Brazil and Argentina,
Lex Fridman (08:14.460)
but will I truly understand the people
Lex Fridman (08:17.100)
if I don't understand the language?
Lex Fridman (08:18.500)
It's sad because I wonder how much,
Lex Fridman (08:23.500)
how many geniuses were missing
Lex Fridman (08:25.220)
because so much of the scientific world,
Lex Fridman (08:28.540)
so much of the technical world is in English,
Lex Fridman (08:31.460)
and so much of it might be lost
Travis Oliphant (08:33.140)
because it's just we don't have the common language.
Lex Fridman (08:36.100)
I completely agree.
Travis Oliphant (08:36.940)
I'm very much in that vein of there's a lot of genius
Lex Fridman (08:40.620)
out there that we miss,
Lex Fridman (08:41.780)
and it's sort of fortunate when it bubbles up
Lex Fridman (08:45.060)
into something that we can understand or process,
Travis Oliphant (08:48.700)
there's a lot we miss.
Lex Fridman (08:50.420)
So I tend to lean towards really loving democratization
Travis Oliphant (08:54.060)
or things that empower people
Lex Fridman (08:55.420)
or very resistant sort of authoritarian structures.
Travis Oliphant (09:00.140)
Fundamentally for that reason,
Lex Fridman (09:01.900)
well, several reasons, but it just hurts us.
Travis Oliphant (09:04.740)
We're soft.
Lex Fridman (09:06.420)
So speaking of languages that empower you,
Lex Fridman (09:09.020)
so Python was the first language for me
Lex Fridman (09:11.820)
that I really enjoyed thinking in, as you said.
Travis Oliphant (09:16.780)
Sounds like you shared my experience too.
Lex Fridman (09:18.500)
So when did you first,
Lex Fridman (09:19.620)
do you remember when you first kind of connected with Python,
Lex Fridman (09:21.900)
maybe even fell in love with Python?
Travis Oliphant (09:23.740)
It's a good question.
Lex Fridman (09:24.580)
It was a process.
Travis Oliphant (09:25.500)
It took about a year.
Lex Fridman (09:26.540)
I first encountered Python in 1997.
Travis Oliphant (09:29.500)
I was a graduate student studying biomedical engineering
Lex Fridman (09:31.740)
at the Mayo Clinic.
Lex Fridman (09:32.980)
And I had previously,
Lex Fridman (09:34.700)
I'd been involved in taking information from satellites.
Travis Oliphant (09:39.340)
I was an electrical engineering student
Lex Fridman (09:41.340)
used to taking information
Lex Fridman (09:42.660)
and trying to get something out of it,
Lex Fridman (09:44.060)
doing some data processing, getting information out of it.
Lex Fridman (09:46.140)
And I'd done that in MATLAB.
Lex Fridman (09:47.660)
I'd done that in Perl.
Travis Oliphant (09:49.140)
I'd done that in scripting on a VMS.
Lex Fridman (09:52.540)
There's actually a VAX VMS system,
Travis Oliphant (09:54.260)
they had their own little scripting tools around Fortran.
Lex Fridman (09:57.980)
Done a lot of that.
Lex Fridman (09:58.820)
And then as a graduate student,
Lex Fridman (10:00.820)
I was looking for something and encountered Python.
Lex Fridman (10:04.420)
And because Python had an array,
Lex Fridman (10:06.140)
had two things that made me not filter it away.
Travis Oliphant (10:09.100)
Because I was filtering a bunch of stuff,
Lex Fridman (10:10.380)
as Yorick, I looked at Yorick,
Travis Oliphant (10:11.700)
I looked at a few other languages that are out there
Lex Fridman (10:14.420)
at the time in 1997, but it had arrays.
Travis Oliphant (10:17.700)
There's a library called Numeric
Lex Fridman (10:19.060)
that had just been written in 95,
Travis Oliphant (10:20.860)
like not very, not too much earlier.
Lex Fridman (10:23.740)
By an MIT alum, Jim Huganen.
Travis Oliphant (10:26.980)
You know, and I went back and read the mailing list
Lex Fridman (10:29.100)
to see the history of how it grew.
Lex Fridman (10:30.300)
And there was a very interesting,
Lex Fridman (10:31.220)
it's fascinating to do that actually,
Travis Oliphant (10:32.380)
to see how this emergent cooperation,
Lex Fridman (10:36.020)
unstructured cooperation happens in the open source world
Travis Oliphant (10:39.500)
that led to a lot of this collective programming,
Lex Fridman (10:43.300)
which is something maybe we might get into a little later,
Lex Fridman (10:45.140)
but what that looks like.
Lex Fridman (10:46.100)
What gap did Numeric fill?
Travis Oliphant (10:48.340)
Numeric filled the gap of having an array object.
Lex Fridman (10:50.260)
There was no array object.
Travis Oliphant (10:51.580)
There was no array.
Lex Fridman (10:52.420)
There was a one dimensional byte concept,
Lex Fridman (10:55.380)
but there was no n dimensional,
Lex Fridman (10:57.580)
two, three, four dimensional tensor they call it now.
Travis Oliphant (11:00.700)
I'm still in the category that a tensor is another thing
Lex Fridman (11:03.260)
and it's just an ndarray we should call it,
Lex Fridman (11:05.220)
but kind of lost that battle.
Lex Fridman (11:08.340)
There's many battles in this world,
Travis Oliphant (11:10.140)
some of which we win, some we lose.
Lex Fridman (11:12.060)
That's exactly right.
Travis Oliphant (11:13.620)
So, but it had no math to it.
Lex Fridman (11:17.180)
So Numeric had math and a basic way to think in arrays.
Lex Fridman (11:20.820)
So I was looking for that,
Lex Fridman (11:21.820)
and it had complex numbers,
Travis Oliphant (11:24.980)
a lot of programming languages.
Lex Fridman (11:26.380)
And you can see it because,
Travis Oliphant (11:28.100)
if you're just a computer scientist,
Lex Fridman (11:29.500)
you think, ah, complex numbers are just two floats.
Lex Fridman (11:32.060)
So you can, people can build that on.
Lex Fridman (11:34.980)
But in practice, a complex number
Travis Oliphant (11:36.740)
as one of the significant algebras
Lex Fridman (11:38.980)
that helps connect a lot of physical
Lex Fridman (11:40.740)
and mathematical ideas,
Lex Fridman (11:42.260)
particularly FFT for an electrical engineer.
Lex Fridman (11:45.100)
And it's a really important concept
Lex Fridman (11:48.160)
and not having it means you have to develop it
Travis Oliphant (11:50.820)
several times and those times may not share an approach.
Lex Fridman (11:54.300)
One of the common things in programming,
Travis Oliphant (11:55.700)
one of the things programming enables is abstractions.
Lex Fridman (11:59.060)
But when you have shared abstractions, it's even better.
Travis Oliphant (12:01.180)
It sort of gets to the level of language
Lex Fridman (12:02.980)
of actually we all think of this the same way,
Lex Fridman (12:05.540)
which is both powerful and dangerous, right?
Lex Fridman (12:07.940)
Because powerful in that we now can quickly
Travis Oliphant (12:11.180)
make bigger and higher level things
Lex Fridman (12:13.340)
on top of those abstractions dangerous
Travis Oliphant (12:14.800)
because it also limits us as to the things
Lex Fridman (12:17.100)
we maybe left behind in producing that abstraction,
Travis Oliphant (12:20.500)
which is at the heart of programming today
Lex Fridman (12:21.900)
and actually building around the programming world.
Travis Oliphant (12:24.420)
I think it's a fascinating philosophical topic.
Lex Fridman (12:26.580)
Yeah, they will continue for many years, I think.
Travis Oliphant (12:28.380)
They'll continue for many years.
Lex Fridman (12:29.220)
As we build more and more and more abstractions.
Travis Oliphant (12:31.260)
Yes, I often think about, you know,
Lex Fridman (12:32.340)
we have a world that's built on these abstractions
Lex Fridman (12:35.060)
that were they the only ones possible?
Lex Fridman (12:37.500)
Certainly not, but they led to,
Travis Oliphant (12:39.860)
you know, it's very hard to do it differently.
Lex Fridman (12:42.300)
Like there's an inertia that's very hard to,
Travis Oliphant (12:44.980)
you know, push out, push away from.
Lex Fridman (12:47.740)
That has implications for things like,
Travis Oliphant (12:49.640)
you know, the Julia language,
Lex Fridman (12:50.720)
which you have heard of, I'm sure.
Lex Fridman (12:52.680)
And I've met the creators and I liked Julia.
Lex Fridman (12:55.700)
It's a really cool language,
Lex Fridman (12:56.580)
but they struggled to kind of against the,
Lex Fridman (12:59.300)
just the tide of like this inertia of people using Python.
Travis Oliphant (13:03.420)
And, you know, there's strategies to approach that,
Lex Fridman (13:05.820)
but nonetheless, it's a phenomena.
Lex Fridman (13:07.580)
And sometimes, so I love complex numbers
Lex Fridman (13:09.580)
and I love to raise, so I looked at Python.
Lex Fridman (13:12.260)
And then I had the experience, I did some stuff in Python
Lex Fridman (13:15.260)
and I was just doing my PhD.
Lex Fridman (13:16.380)
So I was out, my focus was on,
Lex Fridman (13:19.700)
I was actually doing a combination of MRI and ultrasound
Lex Fridman (13:22.180)
and looking at a phenomenon called elastography,
Lex Fridman (13:24.740)
which is you push waves into the body
Lex Fridman (13:27.020)
and observe those waves, like you can actually measure them.
Lex Fridman (13:30.300)
And then you do mathematical inversion
Travis Oliphant (13:32.780)
to see what the elasticity is.
Lex Fridman (13:35.220)
And so that's the problem I was solving
Travis Oliphant (13:36.820)
is how to do that with both ultrasound and MRI.
Lex Fridman (13:39.780)
I needed some tool to do that with.
Lex Fridman (13:41.380)
So I was starting to use Python in 97.
Lex Fridman (13:44.260)
In 98, I went back, looked at what I'd written
Lex Fridman (13:47.340)
and realized I could still understand it,
Lex Fridman (13:49.560)
which is not the experience I'd had
Lex Fridman (13:50.900)
when doing Perl in 95, right?
Lex Fridman (13:53.660)
I'd done the same thing and then I looked back
Lex Fridman (13:55.620)
and I forgotten what I was even saying.
Lex Fridman (13:58.360)
Now, you know, I'm not saying, so that may,
Travis Oliphant (14:00.700)
hey, this may work, I like this.
Lex Fridman (14:02.400)
This is something I can retain
Travis Oliphant (14:04.980)
without becoming an expert per se.
Lex Fridman (14:07.620)
And so that led me to go, I'm gonna push more into this.
Lex Fridman (14:10.380)
And then that 98 was kind of when I started
Lex Fridman (14:14.820)
to fall in love with Python, I would say.
Travis Oliphant (14:18.300)
A few peculiar things about Python.
Lex Fridman (14:20.900)
So maybe compare it to Perl,
Travis Oliphant (14:22.940)
compare it to some of the other languages.
Lex Fridman (14:24.500)
So there's no braces.
Travis Oliphant (14:26.320)
Yeah.
Lex Fridman (14:27.160)
So space is used, indentation, I should say,
Travis Oliphant (14:31.960)
is used as part of the language.
Lex Fridman (14:33.980)
Yeah, right.
Lex Fridman (14:35.540)
So did you, I mean, that's quite a leap.
Lex Fridman (14:39.980)
Were you comfortable with that leap
Lex Fridman (14:41.180)
or were you just very open minded?
Lex Fridman (14:42.740)
It's a good question.
Travis Oliphant (14:43.580)
I was open minded, so I was cognizant of the concern.
Lex Fridman (14:48.040)
And it definitely has, it has specific challenges.
Travis Oliphant (14:52.060)
You know, cut and pasting.
Lex Fridman (14:53.520)
For example, when you're cut and pasting code,
Lex Fridman (14:55.460)
and if your editors aren't supportive of that,
Lex Fridman (14:57.220)
if you're putting it into a terminal,
Lex Fridman (14:58.980)
and particularly in the past when terminals
Lex Fridman (15:01.020)
didn't necessarily have the intelligence to manage it now.
Travis Oliphant (15:03.140)
Now, I, Python, and Jupyter Notebooks
Lex Fridman (15:05.100)
handle that just fine, so there's really no problem.
Lex Fridman (15:06.820)
But in the past, it created some challenges,
Lex Fridman (15:08.740)
formatting challenges, also mixed tabs and spaces.
Travis Oliphant (15:12.460)
If editors weren't, you weren't clear
Lex Fridman (15:14.740)
on what was happening, you would have these issues.
Lex Fridman (15:16.860)
So there were really concrete reasons about it
Lex Fridman (15:19.180)
that I heard and understood.
Travis Oliphant (15:20.400)
I never really encountered a problem with it personally.
Lex Fridman (15:23.960)
Like, it was occasional annoyances,
Lex Fridman (15:26.480)
but I really liked the fact
Lex Fridman (15:28.420)
that it didn't have all this extra characters, right?
Travis Oliphant (15:31.060)
That these extra characters didn't show up
Lex Fridman (15:33.100)
in my visual field when I was just trying
Travis Oliphant (15:35.420)
to process understanding a snippet of code.
Lex Fridman (15:38.000)
Yeah, there's a cleanness to it.
Travis Oliphant (15:39.260)
But, I mean, the idea is supposed to be
Lex Fridman (15:41.140)
that Perl also has a cleanness to it
Travis Oliphant (15:43.300)
because of the minimalism of how many characters
Lex Fridman (15:46.500)
it takes to express a certain thing.
Lex Fridman (15:48.420)
So it's very compact.
Lex Fridman (15:49.820)
But what you realize with that compactness comes,
Travis Oliphant (15:53.560)
there's a culture that prizes compactness,
Lex Fridman (15:57.100)
and so the code gets more and more compact
Lex Fridman (15:58.900)
and less and less readable to a point where it's like,
Lex Fridman (16:03.600)
like, to be a good programmer in Perl,
Travis Oliphant (16:05.420)
you write code that's basically unreadable.
Lex Fridman (16:07.820)
There's a culture, like.
Travis Oliphant (16:09.100)
Correct, and you're proud of it.
Lex Fridman (16:10.860)
Yeah, you're proud of it.
Travis Oliphant (16:12.460)
Right, exactly, and it's like, feels good.
Lex Fridman (16:14.140)
And it's really selective.
Travis Oliphant (16:16.660)
It means you have to be an expert in Perl to understand it.
Lex Fridman (16:20.380)
Whereas Python allowed you not to have to be an expert.
Travis Oliphant (16:22.980)
You didn't have to take all this brain energy.
Lex Fridman (16:24.740)
You could leverage, what I say,
Travis Oliphant (16:25.660)
you could leverage your English language center,
Lex Fridman (16:28.180)
which you're using all the time.
Travis Oliphant (16:29.980)
I've wondered about other languages,
Lex Fridman (16:31.180)
particularly non Latin based languages.
Travis Oliphant (16:34.680)
Latin based languages with the characters are at least similar.
Lex Fridman (16:37.220)
I think people have an easier time,
Lex Fridman (16:38.620)
but I don't know what it's like to be a Japanese
Lex Fridman (16:41.300)
or a Chinese person trying to learn different syntax.
Lex Fridman (16:46.900)
Like, what would computer programming look like in that?
Lex Fridman (16:49.740)
I haven't looked at that at all,
Lex Fridman (16:50.780)
but it certainly doesn't,
Lex Fridman (16:52.020)
you know, leveraging your Chinese language center,
Travis Oliphant (16:54.300)
I'm not sure Python or any programming does that.
Lex Fridman (16:57.060)
But that was a big deal.
Travis Oliphant (16:58.140)
The fact that it was accessible, I could be a scientist.
Lex Fridman (17:00.340)
What I really liked is many programming languages
Travis Oliphant (17:02.900)
really demand a lot of you, and you can get a lot,
Lex Fridman (17:04.740)
you know, you do a lot if you learn it.
Lex Fridman (17:07.200)
But Python enables you to do a lot
Lex Fridman (17:08.900)
without demanding a lot of you.
Travis Oliphant (17:11.180)
There's nuance to that statement,
Lex Fridman (17:13.100)
but it certainly was, it's more accessible.
Lex Fridman (17:15.340)
So more people could actually, as a scientist,
Lex Fridman (17:18.040)
as somebody who, or an engineer,
Travis Oliphant (17:19.860)
who was trying to solve another problem
Lex Fridman (17:21.460)
besides point programming,
Travis Oliphant (17:23.300)
I could still use this language and get things done
Lex Fridman (17:26.000)
and be happy about it.
Lex Fridman (17:27.340)
And I was also comfortable in C at that time.
Lex Fridman (17:30.100)
And MATLAB, you did a little bit of that.
Lex Fridman (17:31.340)
And MATLAB, I did a lot before that, exactly.
Lex Fridman (17:33.180)
So I was comfortable in,
Travis Oliphant (17:34.900)
those three languages were really the tools I used
Lex Fridman (17:37.580)
during my studies and schooling.
Lex Fridman (17:40.540)
But to your point about language helping you think,
Lex Fridman (17:42.620)
one of the big things about MATLAB was it was,
Lex Fridman (17:44.580)
and APL before it, I don't know if you remember APL.
Lex Fridman (17:48.300)
APL is actually the predecessor of array based programming,
Travis Oliphant (17:51.660)
which I think is really an underappreciated,
Lex Fridman (17:54.160)
if I talk to people who are just steeped
Travis Oliphant (17:55.340)
in computer programming, computer science,
Lex Fridman (17:57.640)
like most of the people that Microsoft has hired
Travis Oliphant (17:59.460)
in the past, for example,
Lex Fridman (18:01.140)
Microsoft as a company generally did not understand
Travis Oliphant (18:03.900)
array based programming.
Lex Fridman (18:05.220)
Like culturally, they didn't understand it.
Lex Fridman (18:06.620)
So they kept missing the boat,
Lex Fridman (18:08.560)
kept missing the understanding of what this was.
Travis Oliphant (18:11.580)
They've gotten better,
Lex Fridman (18:12.740)
but there's still a whole culture of folks
Travis Oliphant (18:14.420)
that doesn't, programming, that's systems programming
Lex Fridman (18:17.980)
or web programming or lists and maps.
Lex Fridman (18:20.380)
And what about an n dimensional array?
Lex Fridman (18:22.520)
Oh yeah, that's just an implementation detail.
Travis Oliphant (18:24.700)
Well, you can think that,
Lex Fridman (18:26.700)
but then actually if you have that as a construct,
Travis Oliphant (18:28.800)
you actually think differently.
Lex Fridman (18:29.860)
APL was the first language to understand that.
Lex Fridman (18:31.660)
And it was in the sixties, right?
Lex Fridman (18:33.460)
The challenge of APL is APL had very dense,
Travis Oliphant (18:36.780)
not only glyphs, like new characters, new glyphs,
Lex Fridman (18:39.340)
but they even had a new keyboard
Travis Oliphant (18:40.480)
because to produce those glyphs,
Lex Fridman (18:42.340)
this is back in the early days in computing
Travis Oliphant (18:43.980)
when the QWERTY keyboard maybe wasn't as established,
Lex Fridman (18:47.980)
like, well, we can have a new keyboard, no big deal.
Lex Fridman (18:50.780)
But it was a big deal and it didn't catch on.
Lex Fridman (18:52.860)
And the language APL, very much like Perl,
Travis Oliphant (18:56.500)
as people would pride themselves on how much,
Lex Fridman (18:58.620)
could they write the game of life
Travis Oliphant (18:59.740)
in 30 characters of APL.
Lex Fridman (19:03.100)
APL has characters that mean summation
Lex Fridman (19:06.060)
and they have adverbs,
Lex Fridman (19:08.180)
they would have adjectives and these things called adverbs,
Travis Oliphant (19:10.060)
which are like methods, like reduction,
Lex Fridman (19:12.220)
reduction would be an adverb on an ad operator, right?
Travis Oliphant (19:15.320)
So, but doing, using these tools you could construct
Lex Fridman (19:18.660)
and then you start to think at that level,
Travis Oliphant (19:20.880)
you think in n dimensions is something I like to say,
Lex Fridman (19:22.900)
and you start to think differently about data at that point.
Travis Oliphant (19:25.500)
Now you're, it really helps.
Lex Fridman (19:27.500)
Yeah, I mean, outside of programming,
Travis Oliphant (19:30.100)
if you really internalize linear algebra as a course,
Lex Fridman (19:33.700)
I mean, it's philosophically allows you
Travis Oliphant (19:35.580)
to think of the world differently.
Lex Fridman (19:37.220)
It's almost like liberating, you don't have to,
Travis Oliphant (19:39.700)
you don't have to think about the individual numbers
Lex Fridman (19:42.100)
in the n dimensional array.
Travis Oliphant (19:44.240)
You could think of it as an object in itself
Lex Fridman (19:46.140)
and all of a sudden this world can open up.
Travis Oliphant (19:48.500)
You're saying MATLAB and APL were like the early C,
Lex Fridman (19:52.660)
I don't know if many languages got that right ever.
Travis Oliphant (19:54.980)
No, no, no they didn't.
Lex Fridman (19:56.860)
Even still.
Travis Oliphant (19:57.700)
Even still, I would say.
Lex Fridman (19:58.820)
I mean, NumPy is an inheritor of the traditions
Lex Fridman (1:00:01.900)
but advanced indexing so that you could do masked indexing
Lex Fridman (1:00:06.500)
and indirect indexing instead of just slicing.
Lex Fridman (1:00:09.940)
So for people who don't know, and maybe you can elaborate,
Lex Fridman (1:00:13.020)
NumPy, I guess the vision in the narrowest sense
Travis Oliphant (1:00:17.660)
is to have this object that represents
Lex Fridman (1:00:21.460)
n dimensional arrays.
Lex Fridman (1:00:23.180)
And like at any level of abstraction you want,
Lex Fridman (1:00:26.300)
but basically it could be a black box
Travis Oliphant (1:00:28.220)
that you can investigate in ways that you would naturally
Lex Fridman (1:00:30.940)
want to investigate such objects.
Travis Oliphant (1:00:33.340)
Yes, exactly.
Lex Fridman (1:00:34.180)
So you could do math on it easily.
Travis Oliphant (1:00:35.740)
Math on it easily, yeah.
Lex Fridman (1:00:37.180)
So it had an associated library of math operations
Lex Fridman (1:00:39.860)
and effectively SciPy became an even larger operate set
Lex Fridman (1:00:43.220)
of math operations.
Lex Fridman (1:00:44.940)
So the key for me was I was going to write NumPy
Lex Fridman (1:00:48.020)
and then move SciPy to depend on NumPy.
Travis Oliphant (1:00:50.340)
In fact, early on, one of the initial proposals
Lex Fridman (1:00:52.980)
was that we would just write SciPy
Lex Fridman (1:00:54.540)
and it would have the numeric object inside of it.
Lex Fridman (1:00:56.660)
And it'd be SciPy.array or something.
Travis Oliphant (1:00:59.780)
That turned out to be problematic because numeric
Lex Fridman (1:01:02.180)
already had a little mini library of linear algebra
Lex Fridman (1:01:04.820)
and some functions, and it had enough momentum,
Lex Fridman (1:01:08.020)
enough users that nobody wanted to,
Travis Oliphant (1:01:10.340)
they wanted backward compatibility.
Lex Fridman (1:01:12.060)
One of the big challenges of NumPy
Travis Oliphant (1:01:13.740)
was I had to be backward compatible
Lex Fridman (1:01:14.980)
with both numeric and NumArray
Travis Oliphant (1:01:16.980)
in order to allow both of those communities to come together.
Lex Fridman (1:01:19.300)
There was a ton of work in creating
Travis Oliphant (1:01:21.140)
that backward compatibility
Lex Fridman (1:01:22.580)
that also created echoes in today's object.
Travis Oliphant (1:01:25.420)
Like some of the complexity in today's object
Lex Fridman (1:01:27.180)
is actually from that goal of backward compatibility
Travis Oliphant (1:01:30.060)
to these other communities,
Lex Fridman (1:01:31.380)
which if you didn't have that, you'd do something different,
Travis Oliphant (1:01:34.620)
which is instructive because a lot of things are there.
Lex Fridman (1:01:37.740)
You think, what is that there for?
Travis Oliphant (1:01:38.940)
It's like, well, it's a remnant.
Lex Fridman (1:01:41.380)
It's an artifact of its historical existence.
Travis Oliphant (1:01:45.220)
By the way, I love the empathy
Lex Fridman (1:01:46.780)
and the lack of ego behind that
Travis Oliphant (1:01:48.460)
because I feel, you see that in the split
Lex Fridman (1:01:51.420)
in the JavaScript framework, for example,
Travis Oliphant (1:01:53.340)
the arbitrary branching.
Lex Fridman (1:01:54.860)
Right.
Travis Oliphant (1:01:56.980)
I think in order to unite people,
Lex Fridman (1:01:59.020)
you have to kind of put your ego aside
Lex Fridman (1:02:00.620)
and truly listen to others.
Lex Fridman (1:02:02.260)
You do.
Lex Fridman (1:02:03.100)
What do you love about NumArray?
Lex Fridman (1:02:04.820)
What do you love about Numeric?
Travis Oliphant (1:02:06.020)
Like actually get a sense,
Lex Fridman (1:02:07.460)
we were talking about languages earlier,
Travis Oliphant (1:02:08.860)
sort of empathize to the culture,
Lex Fridman (1:02:11.100)
the people that love something about this particular API,
Travis Oliphant (1:02:14.660)
some of the naming style
Lex Fridman (1:02:18.100)
or the actual usage patterns
Lex Fridman (1:02:21.220)
and truly understand them
Lex Fridman (1:02:22.820)
and so that you can create that same draw
Travis Oliphant (1:02:26.780)
in the united thing. I completely agree.
Lex Fridman (1:02:28.620)
I completely agree.
Lex Fridman (1:02:29.460)
And you have to also have enough passion
Lex Fridman (1:02:31.780)
that you'll do it.
Travis Oliphant (1:02:32.620)
It can't be just like a perfunctory,
Lex Fridman (1:02:34.660)
oh yes, I'll listen to you
Lex Fridman (1:02:36.500)
and then I'm not really that excited about it.
Lex Fridman (1:02:38.380)
So it really is an aspect,
Travis Oliphant (1:02:39.620)
it's a philosophical, like there's a philia,
Lex Fridman (1:02:42.260)
there's a love of esteeming of others.
Travis Oliphant (1:02:44.260)
It's actually at the heart of what,
Lex Fridman (1:02:47.060)
it's sort of a life philosophy for me, right?
Travis Oliphant (1:02:49.220)
That I'm constantly pursuing and that helped,
Lex Fridman (1:02:51.540)
absolutely helped.
Travis Oliphant (1:02:52.660)
Makes me wonder in a philosophical,
Lex Fridman (1:02:54.260)
like looking at human civilization as one object,
Travis Oliphant (1:02:57.460)
it makes me wonder how we can copy and paste Travis's
Lex Fridman (1:02:59.980)
in this book.
Travis Oliphant (1:03:00.820)
Well, some aspects, maybe.
Lex Fridman (1:03:03.300)
Some aspects, right, right, exactly.
Travis Oliphant (1:03:05.220)
Well, it's a good question.
Lex Fridman (1:03:07.300)
How do we teach this?
Lex Fridman (1:03:08.140)
How do we encourage it?
Lex Fridman (1:03:09.300)
How do we lift it?
Travis Oliphant (1:03:10.140)
Because so much of the software world,
Lex Fridman (1:03:12.700)
it's giant communities, right?
Lex Fridman (1:03:15.140)
But it seems like so much is moved by,
Lex Fridman (1:03:16.820)
like little individuals.
Travis Oliphant (1:03:18.180)
You talk about like Linus Torvalds.
Lex Fridman (1:03:21.020)
It's like, could you have not,
Lex Fridman (1:03:23.380)
could you have had Linux without him?
Lex Fridman (1:03:25.980)
Could you?
Travis Oliphant (1:03:26.820)
Yeah, Guido and Python.
Lex Fridman (1:03:28.140)
Guido and Python.
Travis Oliphant (1:03:28.980)
Guido and Python.
Lex Fridman (1:03:29.820)
Well, the iPy community particularly,
Travis Oliphant (1:03:30.980)
it's like I said, we wanted to build this big thing,
Lex Fridman (1:03:32.820)
but ultimately we didn't.
Lex Fridman (1:03:33.780)
What happened is we had Mavericks and champions
Lex Fridman (1:03:36.060)
like John Hunter who created Matplotlib.
Travis Oliphant (1:03:37.780)
We had Fernando Perez who created iPython.
Lex Fridman (1:03:39.940)
And so we sort of inspired each other,
Lex Fridman (1:03:42.260)
but then it kind of, there's sort of a culture
Lex Fridman (1:03:43.980)
of this selfless giving, the stewardship mentality,
Travis Oliphant (1:03:47.820)
as opposed to ownership mentality,
Lex Fridman (1:03:49.140)
but stewardship and community focused,
Travis Oliphant (1:03:54.040)
community focused, but intentional work.
Lex Fridman (1:03:56.620)
Like not waiting for everybody else to do the work,
Lex Fridman (1:03:58.900)
but you're doing it for the benefit of others
Lex Fridman (1:04:00.700)
and not worried about what you're gonna get.
Travis Oliphant (1:04:04.020)
You're not worried about the credit.
Lex Fridman (1:04:04.860)
You're not worried about what you're gonna get.
Travis Oliphant (1:04:05.860)
You're worried about, I later realized
Lex Fridman (1:04:07.580)
that I have to worry a little about credit,
Travis Oliphant (1:04:09.000)
not because I want the credit,
Lex Fridman (1:04:10.300)
because I want people to understand
Lex Fridman (1:04:11.380)
what led to the results.
Lex Fridman (1:04:13.020)
Like, I don't, it's not about me.
Travis Oliphant (1:04:15.060)
It's I want to understand this is what led to the result.
Lex Fridman (1:04:17.540)
So let's like, I think doing,
Lex Fridman (1:04:18.980)
and this is what had no impact on the result.
Lex Fridman (1:04:21.100)
Like let's promote, just like you said,
Travis Oliphant (1:04:23.420)
I want to promote the attributes
Lex Fridman (1:04:25.100)
that help make us better off.
Lex Fridman (1:04:26.520)
How do we make more of West McKinney?
Lex Fridman (1:04:28.820)
Like West McKinney was critical to the success of Python
Travis Oliphant (1:04:31.620)
because of his creation of pandas,
Lex Fridman (1:04:33.420)
which is the roots of that were all the way back
Travis Oliphant (1:04:36.420)
in numeric and num array and numpy,
Lex Fridman (1:04:40.260)
where numpy created an array of records.
Travis Oliphant (1:04:43.180)
West started to use that almost like a data frame,
Lex Fridman (1:04:45.980)
except it's an array of records.
Lex Fridman (1:04:47.840)
And data frame, the challenge is,
Lex Fridman (1:04:49.780)
okay, if you want to augment it at another column,
Travis Oliphant (1:04:52.240)
you have to insert, you have to do all this memory movement
Lex Fridman (1:04:54.700)
to insert a column.
Travis Oliphant (1:04:55.660)
Whereas data frames became,
Lex Fridman (1:04:57.180)
oh, I'm going to have a loose collection of arrays.
Lex Fridman (1:05:00.460)
So it's a record of arrays that is a part of a data frame.
Lex Fridman (1:05:03.980)
And we thought about that back in the memory days,
Lex Fridman (1:05:05.560)
but West ended up doing the work to build it.
Lex Fridman (1:05:08.940)
And then also the operations that were relevant
Travis Oliphant (1:05:11.300)
for data processing.
Lex Fridman (1:05:12.620)
What I noticed is just that each of these little things
Travis Oliphant (1:05:15.220)
creates just another tick, another up.
Lex Fridman (1:05:17.380)
So numpy ultimately took a little while,
Travis Oliphant (1:05:19.940)
about six months in, people started to join me,
Lex Fridman (1:05:22.700)
Francesc Altad, Robert Kern, Charles Harris.
Lex Fridman (1:05:27.300)
And these people are many of the unsung heroes, I would say.
Lex Fridman (1:05:30.300)
People who are, you know,
Travis Oliphant (1:05:31.980)
they sometimes don't get the credit they deserve
Lex Fridman (1:05:34.100)
because they were critical both to support,
Travis Oliphant (1:05:36.540)
like, you know, it's hard and you want,
Lex Fridman (1:05:38.260)
you need some support, people need support.
Lex Fridman (1:05:40.340)
And I needed just encouragement.
Lex Fridman (1:05:41.580)
And they were helping and encouraged by contributing.
Lex Fridman (1:05:43.860)
And once, the big thing for me was when John Hunter,
Lex Fridman (1:05:48.240)
he had previously done kind of a simple thing
Travis Oliphant (1:05:50.180)
called numerics to kind of, you know, between numeric
Lex Fridman (1:05:52.820)
and numerae, he had a little high level tool
Travis Oliphant (1:05:55.100)
that would just select each one for matplotlib.
Lex Fridman (1:05:57.900)
In 2006, he finally said,
Travis Oliphant (1:06:00.420)
we're gonna just make numpy the dependency of matplotlib.
Lex Fridman (1:06:03.220)
As soon as he did that,
Lex Fridman (1:06:04.420)
and I remember specifically when he did that,
Lex Fridman (1:06:06.100)
I said, okay, we've done it.
Travis Oliphant (1:06:07.900)
Like, that was when I knew we had to see success.
Lex Fridman (1:06:11.260)
Before then it was still unsure,
Lex Fridman (1:06:13.620)
but that kind of started a roller coaster.
Lex Fridman (1:06:15.060)
And then 2006 to 2009.
Lex Fridman (1:06:17.900)
And then I've been floored by what it's done.
Lex Fridman (1:06:20.940)
Like, I knew it would help.
Travis Oliphant (1:06:22.900)
I had no idea how much it would help.
Lex Fridman (1:06:25.380)
Right, so.
Lex Fridman (1:06:26.300)
And it has to do with, again, the language thing.
Lex Fridman (1:06:28.660)
It just, people started to think in terms of numpy.
Travis Oliphant (1:06:31.940)
Yes.
Lex Fridman (1:06:32.820)
And that opened up a whole new way of thinking.
Lex Fridman (1:06:36.460)
And part of the story that you kind of mentioned,
Lex Fridman (1:06:39.220)
but maybe you can elaborate,
Travis Oliphant (1:06:42.980)
is it seems like at some point in the story,
Lex Fridman (1:06:46.320)
Python took over science and data science.
Travis Oliphant (1:06:50.800)
Yes.
Lex Fridman (1:06:51.640)
And bigger than that,
Travis Oliphant (1:06:54.800)
the scientific community started to think like programmers
Lex Fridman (1:07:00.160)
or started to utilize the tools of computers to do,
Travis Oliphant (1:07:04.280)
like at a scale that wasn't done with Fortran.
Lex Fridman (1:07:06.640)
Like at this gigantic scale,
Travis Oliphant (1:07:09.320)
they started to open in their heart.
Lex Fridman (1:07:10.760)
And then Python was the thing.
Travis Oliphant (1:07:12.040)
I mean, there's a few other competitors, I guess,
Lex Fridman (1:07:14.280)
but Python, I think, really, really took over.
Travis Oliphant (1:07:16.960)
I agree.
Lex Fridman (1:07:17.800)
There's a lot of stories here
Travis Oliphant (1:07:18.620)
that are kind of during this journey,
Lex Fridman (1:07:19.720)
because this is sort of the start of this journey in 2005, 2006.
Lex Fridman (1:07:23.240)
So my tenure committee, I applied for tenure in 2006, 2007.
Lex Fridman (1:07:28.180)
It came back, I split the department.
Travis Oliphant (1:07:29.780)
I was very polarizing.
Lex Fridman (1:07:31.300)
I had some huge fans
Lex Fridman (1:07:32.560)
and then some people that said no way, right?
Lex Fridman (1:07:34.380)
So it was very, I was a polarizing figure in the department.
Travis Oliphant (1:07:36.840)
It went all the way up to the university president.
Lex Fridman (1:07:39.800)
Ultimately, my department chair had the sway
Lex Fridman (1:07:42.760)
and they didn't say no.
Lex Fridman (1:07:43.760)
They said, come back in two years and do it again.
Lex Fridman (1:07:46.360)
And I went, eh, at that point, I was like,
Lex Fridman (1:07:49.680)
I mean, I had this interest in entrepreneurship,
Travis Oliphant (1:07:52.840)
this interest in not the academic circles,
Lex Fridman (1:07:56.400)
not the, like, how do we make industry work?
Lex Fridman (1:07:59.680)
So I do have to give credit to that exploration of economics
Lex Fridman (1:08:03.060)
because that led me, oh, I had a lot of opinions.
Travis Oliphant (1:08:06.540)
I was actually very libertarian at the time.
Lex Fridman (1:08:09.520)
And I still have some libertarian trends,
Lex Fridman (1:08:11.840)
but I'm more of a, I'm more of a collectivist libertarian.
Lex Fridman (1:08:15.880)
So you value broadly, philosophically freedom.
Travis Oliphant (1:08:18.720)
I value broadly, philosophically freedom,
Lex Fridman (1:08:20.360)
but I also understand the power of communities,
Travis Oliphant (1:08:23.440)
like the power of collective behavior.
Lex Fridman (1:08:26.200)
And so what's that balance, right?
Travis Oliphant (1:08:27.840)
That makes sense.
Lex Fridman (1:08:29.800)
So by the time I was just,
Travis Oliphant (1:08:31.520)
I gotta go out and explore this entrepreneur world.
Lex Fridman (1:08:33.380)
So I left academia.
Travis Oliphant (1:08:34.220)
I said, no thanks, called my friend, Eric, here,
Lex Fridman (1:08:37.820)
who had, his company was going.
Lex Fridman (1:08:39.560)
I said, hey, could I join you and start this trend?
Lex Fridman (1:08:43.120)
And he, at that time they were using SciFi a lot.
Travis Oliphant (1:08:45.920)
They were trying to get clients.
Lex Fridman (1:08:47.120)
And so I came down to Texas.
Lex Fridman (1:08:48.760)
And in Texas is where I sort of,
Lex Fridman (1:08:51.160)
it's my entrepreneur world, right?
Travis Oliphant (1:08:53.440)
I left academia and went to entrepreneur world in 2007.
Lex Fridman (1:08:57.360)
So I moved here in 2007, kind of took a leap,
Travis Oliphant (1:08:59.920)
knew nothing really about business,
Lex Fridman (1:09:01.600)
knew nothing about a lot of stuff there.
Travis Oliphant (1:09:05.100)
There's, you know, for a long time,
Lex Fridman (1:09:06.980)
I've kept some connections to a lot of academics
Travis Oliphant (1:09:08.980)
because I still value it.
Lex Fridman (1:09:10.080)
I still love the scientific tradition.
Travis Oliphant (1:09:12.520)
I still value the essence and the soul and the heart
Lex Fridman (1:09:15.240)
of what is possible.
Travis Oliphant (1:09:17.320)
Don't like a lot of the administration
Lex Fridman (1:09:21.380)
and the kind of, we can go into detail about why
Lex Fridman (1:09:24.160)
and where and how this happens,
Lex Fridman (1:09:25.320)
what are some of the challenges.
Travis Oliphant (1:09:26.520)
I don't know, but I'm with you.
Lex Fridman (1:09:28.480)
So I'm still affiliated with MIT.
Travis Oliphant (1:09:31.840)
I still love MIT because there's magic there.
Lex Fridman (1:09:35.600)
There's people I talk to, like researchers, faculty,
Travis Oliphant (1:09:40.320)
in those conversations and the whiteboard
Lex Fridman (1:09:43.120)
and just the conversation, that's magic there.
Travis Oliphant (1:09:46.220)
All the other stuff, the administration,
Lex Fridman (1:09:48.120)
all that kind of stuff seems to,
Travis Oliphant (1:09:52.020)
you don't wanna say too harshly criticize
Lex Fridman (1:09:54.920)
sort of bureaucracies, but there's a lag
Travis Oliphant (1:09:57.680)
that seems to get in the way of the magic.
Lex Fridman (1:10:00.800)
And I'm still have a lot of hope
Travis Oliphant (1:10:03.800)
that that can change because I don't often see
Lex Fridman (1:10:08.320)
that particular type of magic elsewhere in the industry.
Lex Fridman (1:10:12.840)
So like we need that and we need that flame going.
Lex Fridman (1:10:15.800)
And it's the same thing as exactly as you said,
Travis Oliphant (1:10:19.120)
it has the same kind of elements
Lex Fridman (1:10:20.560)
like the open source community does.
Travis Oliphant (1:10:23.240)
And, but then if you, like the reason I stepped away,
Lex Fridman (1:10:27.160)
the reason I'm here, just like you did in Austin is like,
Travis Oliphant (1:10:30.260)
if I wanna build one robot, I'll stay at MIT.
Lex Fridman (1:10:33.240)
But if I wanna build millions and make money enough
Travis Oliphant (1:10:37.460)
to where I can explore the magic of that, then you can't.
Lex Fridman (1:10:41.000)
And I think that dance is...
Lex Fridman (1:10:44.160)
That translational dance has been lost a bit, right?
Lex Fridman (1:10:47.480)
And there's a lot of reasons for that.
Travis Oliphant (1:10:48.640)
I'm not, I'm certainly not an expert on this stuff.
Lex Fridman (1:10:50.160)
I can opine like anybody else,
Lex Fridman (1:10:51.660)
but I realized that I wanted to explore entrepreneurship,
Lex Fridman (1:10:55.820)
which I, and really figure out,
Lex Fridman (1:10:57.720)
and it's been a driving passion for 20 years, 25 years.
Lex Fridman (1:11:01.560)
How do we connect capital markets and company?
Travis Oliphant (1:11:06.480)
Cause again, I fell in love with the notion of,
Lex Fridman (1:11:07.880)
oh, profit seeking on its own is not a bad thing.
Travis Oliphant (1:11:11.160)
It's actually a coordination mechanism
Lex Fridman (1:11:13.520)
for allocating resources that, you know,
Lex Fridman (1:11:16.480)
in an emergent way, right?
Lex Fridman (1:11:18.000)
That respects everybody's opinions, right?
Lex Fridman (1:11:20.720)
So this is actually powerful.
Lex Fridman (1:11:21.880)
So I say all the time, when I make a company
Lex Fridman (1:11:25.320)
and we do something that makes profit,
Lex Fridman (1:11:27.260)
what we're saying is, hey,
Travis Oliphant (1:11:28.100)
we're collecting of the world's resources
Lex Fridman (1:11:29.800)
and voluntarily people are asking us
Travis Oliphant (1:11:31.480)
to do something that they like.
Lex Fridman (1:11:33.000)
And that's a huge deal.
Lex Fridman (1:11:34.000)
And so I really liked that energy.
Lex Fridman (1:11:36.120)
So that's what I came to do and to learn
Lex Fridman (1:11:37.560)
and to try to figure out.
Lex Fridman (1:11:38.480)
And that's what I've been kind of stumbling through
Travis Oliphant (1:11:40.120)
since for the past 14 years.
Lex Fridman (1:11:40.960)
And that's 2007.
Travis Oliphant (1:11:42.580)
2007, yeah.
Lex Fridman (1:11:43.420)
And so you were still working at NoPi.
Lex Fridman (1:11:44.960)
So NoPi was just emerging.
Lex Fridman (1:11:46.560)
Just emerging.
Travis Oliphant (1:11:47.400)
One of the things I've done,
Lex Fridman (1:11:49.160)
it's worth mentioning because it emphasizes
Travis Oliphant (1:11:51.480)
the exploratory nature of my thinking at the time.
Lex Fridman (1:11:53.840)
I said, well, I don't know how to fund this thing.
Travis Oliphant (1:11:55.240)
I've got a graduate student I'm paying for
Lex Fridman (1:11:56.720)
and I've got no funding for him.
Lex Fridman (1:11:57.880)
And I had done some fundraising from the public
Lex Fridman (1:12:00.520)
to try to get public fundraisers in my lab.
Travis Oliphant (1:12:02.800)
I didn't really wanna go out
Lex Fridman (1:12:03.880)
and just do the fundraising circuit
Travis Oliphant (1:12:05.360)
the way it's traditionally done.
Lex Fridman (1:12:06.920)
So I wrote a book and I said, I'm gonna write a book
Lex Fridman (1:12:09.960)
and I'm gonna charge for it.
Lex Fridman (1:12:11.440)
It was called Guide to NoPi.
Lex Fridman (1:12:12.720)
And so ultimately NoPi became
Lex Fridman (1:12:14.040)
documentation driven development
Travis Oliphant (1:12:15.960)
because I basically wrote the book
Lex Fridman (1:12:17.280)
and made sure the stuff worked or the book would work.
Lex Fridman (1:12:19.760)
So it really helped actually make NoPi become a thing.
Lex Fridman (1:12:23.040)
So writing that book,
Lex Fridman (1:12:25.800)
and it's not a page turner.
Lex Fridman (1:12:28.200)
Guide to NoPi is not a book you pick up
Lex Fridman (1:12:29.680)
and go, oh, this is great, over the fire.
Lex Fridman (1:12:31.520)
But it's where you could find the details,
Travis Oliphant (1:12:33.640)
like how'd all this work.
Lex Fridman (1:12:34.720)
And a lot of people love that book.
Lex Fridman (1:12:36.520)
And so a lot of people ended up,
Lex Fridman (1:12:38.040)
so I said, look, I need to, so I'm gonna charge for it.
Lex Fridman (1:12:41.600)
And I got some flack for that.
Lex Fridman (1:12:42.760)
Not that much, just probably five angry messages,
Travis Oliphant (1:12:45.920)
people yelling at me saying I was a bad guy
Lex Fridman (1:12:49.960)
for charging for this book.
Lex Fridman (1:12:51.360)
Was one of them Richard Stallman?
Lex Fridman (1:12:53.280)
No. Just kidding.
Travis Oliphant (1:12:54.120)
No, I haven't really had any interaction with him personally,
Lex Fridman (1:12:56.920)
like I said, but there were a few,
Lex Fridman (1:12:59.840)
but actually surprisingly not.
Lex Fridman (1:13:01.280)
There was actually a lot of people like,
Travis Oliphant (1:13:02.760)
no, it's fine, you can charge for a book.
Lex Fridman (1:13:04.240)
That's no big deal.
Travis Oliphant (1:13:05.080)
We know that's a way you can try to make money
Lex Fridman (1:13:07.080)
around open source.
Lex Fridman (1:13:07.920)
So what I did, I did it in an interesting way.
Lex Fridman (1:13:10.160)
I said, well, kind of my ideas around IP law and stuff.
Travis Oliphant (1:13:14.280)
I love the idea you can share something, you can spread it.
Lex Fridman (1:13:16.120)
Like once it's, the fact that you have a thing
Lex Fridman (1:13:18.280)
and copying is free, but the creation is not free.
Lex Fridman (1:13:21.640)
So how do you fund the creation and allow the copying?
Lex Fridman (1:13:25.600)
And in software, it's a little more complicated than that
Lex Fridman (1:13:27.040)
because creation is actually a continuous thing.
Travis Oliphant (1:13:29.360)
It's not like you build a widget and it's done.
Lex Fridman (1:13:31.160)
It's sort of a process of emerging
Lex Fridman (1:13:32.640)
and continuing to create.
Lex Fridman (1:13:34.560)
But I wrote the book
Lex Fridman (1:13:35.520)
and had this market determined price thing.
Lex Fridman (1:13:37.520)
I said, look, I need, I think I said 250,000.
Travis Oliphant (1:13:40.720)
If I make 250,000 from this book, I'll make it free.
Lex Fridman (1:13:44.280)
So as soon as I get that much money,
Travis Oliphant (1:13:45.760)
or I said five years, so there's a time limit.
Lex Fridman (1:13:48.960)
Like it's not forever.
Travis Oliphant (1:13:49.800)
That's really cool.
Lex Fridman (1:13:50.640)
It's amazing.
Travis Oliphant (1:13:51.680)
I released it on this.
Lex Fridman (1:13:53.080)
And it's actually interesting
Travis Oliphant (1:13:54.240)
because one of the people
Lex Fridman (1:13:55.800)
who also thought that was interesting
Travis Oliphant (1:13:57.040)
ended up being Chris White,
Lex Fridman (1:13:58.600)
who was the director of DARPA project
Travis Oliphant (1:14:01.360)
that we got funding through at Anaconda.
Lex Fridman (1:14:02.920)
And the reason he even called us back
Travis Oliphant (1:14:04.640)
is because he remembered my name from this book
Lex Fridman (1:14:06.720)
and he thought that was interesting.
Lex Fridman (1:14:08.080)
And so even though we hadn't gone to the demo days,
Lex Fridman (1:14:10.880)
we applied and the people said, yeah,
Travis Oliphant (1:14:12.680)
nobody ever gets this without coming to the demo day first.
Lex Fridman (1:14:15.360)
This is the first time I've seen it.
Lex Fridman (1:14:16.320)
But it's because I knew, you know,
Lex Fridman (1:14:18.200)
Chris had done this and had this interaction.
Lex Fridman (1:14:19.640)
So it did have impact.
Lex Fridman (1:14:21.680)
I was actually really, really pleased by the result.
Travis Oliphant (1:14:23.880)
I mean, I ended up in three years, I made 90,000.
Lex Fridman (1:14:27.360)
So sold 30,000 copies by myself.
Travis Oliphant (1:14:29.480)
I just put it up on, you know, use PayPal and sold it.
Lex Fridman (1:14:33.000)
And that was my first taste of kind of, okay,
Travis Oliphant (1:14:36.040)
this can work to some degree.
Lex Fridman (1:14:37.600)
And I, you know, all over the world, right?
Travis Oliphant (1:14:40.320)
From Germany to Japan to, it was actually, it did work.
Lex Fridman (1:14:44.480)
And so I appreciated the fact that PayPal existed
Lex Fridman (1:14:47.040)
and I had a way to get the money, the distribution was simple.
Lex Fridman (1:14:51.200)
This is pre Amazon book stuff.
Lex Fridman (1:14:53.480)
So it was just publishing a website.
Lex Fridman (1:14:55.320)
It was the popularity of SciPy emerging
Lex Fridman (1:14:57.120)
and getting company usage.
Lex Fridman (1:14:58.960)
I ended up not letting it go the five years
Lex Fridman (1:15:00.600)
and not trying to make the full amount
Lex Fridman (1:15:01.960)
because, you know, a year and a half later,
Travis Oliphant (1:15:04.560)
I was at Enthought.
Lex Fridman (1:15:05.400)
I had left academia as an Enthought
Lex Fridman (1:15:06.680)
and I kind of had a full time job.
Lex Fridman (1:15:07.880)
And then actually what happened is the documentation people,
Travis Oliphant (1:15:10.000)
there's a group that said, hey,
Lex Fridman (1:15:10.840)
we want to do documentation for SciPy as a collective.
Lex Fridman (1:15:14.280)
And they're essentially needing the stuff in the book, right?
Lex Fridman (1:15:18.680)
And so they kind of ask,
Lex Fridman (1:15:20.360)
hey, could we just use the stuff in your book?
Lex Fridman (1:15:21.920)
And at that point I said, yeah, I'll just open it up.
Lex Fridman (1:15:24.160)
So that's, but it has served its purpose.
Lex Fridman (1:15:27.320)
And the money that I made actually funded my grad student.
Travis Oliphant (1:15:31.040)
Like it was actually, you know,
Lex Fridman (1:15:32.160)
I paid him 25,000 a year out of that money.
Lex Fridman (1:15:35.440)
So the funny thing is if you do a very similar
Lex Fridman (1:15:37.440)
kind of experiment now with NumPy or something like it,
Travis Oliphant (1:15:40.680)
you could probably make a lot more.
Lex Fridman (1:15:42.480)
It's probably true.
Travis Oliphant (1:15:43.800)
Because of the tooling and the community building.
Lex Fridman (1:15:46.360)
Yeah, I agree.
Travis Oliphant (1:15:47.200)
Like the, and social media,
Lex Fridman (1:15:48.680)
that there's just a virality to that kind of idea.
Travis Oliphant (1:15:51.560)
I agree.
Lex Fridman (1:15:52.400)
There'd be things to do.
Travis Oliphant (1:15:53.240)
I've thought about that.
Lex Fridman (1:15:54.080)
And really I thought about a couple of books
Travis Oliphant (1:15:56.080)
or a couple of things that could be done there.
Lex Fridman (1:15:57.440)
And I just haven't, right?
Travis Oliphant (1:15:58.960)
Even, I tried to hire a ghostwriter this year too
Lex Fridman (1:16:01.920)
to see if that could help, but it didn't.
Lex Fridman (1:16:04.160)
But part of my problem is this,
Lex Fridman (1:16:06.240)
I've been so excited by a number of things
Travis Oliphant (1:16:08.080)
that have stemmed from that.
Lex Fridman (1:16:09.480)
Like, so I came here, worked at Enthought for four years,
Travis Oliphant (1:16:13.040)
graciously, Eric made me president.
Lex Fridman (1:16:14.960)
Then we started to work closely together.
Travis Oliphant (1:16:16.280)
We actually helped him buy out his partner.
Lex Fridman (1:16:19.440)
It didn't end great.
Travis Oliphant (1:16:20.720)
Like unfortunately Eric and I aren't real,
Lex Fridman (1:16:22.880)
aren't friends now.
Travis Oliphant (1:16:24.560)
I still respect him.
Lex Fridman (1:16:25.400)
I have a lot, I wish we were,
Lex Fridman (1:16:26.640)
but he didn't like the fact that Peter and I
Lex Fridman (1:16:30.240)
started Anaconda, right?
Travis Oliphant (1:16:31.680)
That was not, I mean, so there's two sides to that story.
Lex Fridman (1:16:36.200)
So I'm not gonna go into it, right?
Travis Oliphant (1:16:37.360)
Sure.
Lex Fridman (1:16:38.200)
But you, as human beings
Lex Fridman (1:16:40.600)
and you wish you still could be friends.
Lex Fridman (1:16:42.320)
I do, I do.
Travis Oliphant (1:16:43.920)
It saddens me.
Lex Fridman (1:16:45.160)
I mean, that's a story of great minds
Travis Oliphant (1:16:49.040)
building great companies.
Lex Fridman (1:16:51.480)
Somehow it's sad that when there's that kind of.
Lex Fridman (1:16:55.000)
And I hold him in esteem.
Lex Fridman (1:16:57.360)
I'm grateful for him.
Travis Oliphant (1:16:58.200)
I think Enthought still exists.
Lex Fridman (1:17:00.320)
They're doing great work helping scientists.
Travis Oliphant (1:17:02.520)
They still run the SciPy conference.
Lex Fridman (1:17:05.040)
They have an R&D platform they're selling now
Lex Fridman (1:17:07.320)
that's a tool that you can go get today, right?
Lex Fridman (1:17:10.080)
So Enthought has played a role in the SciPy
Travis Oliphant (1:17:14.920)
in supporting the community around SciPy, I would say.
Lex Fridman (1:17:18.240)
They ended up not being able to,
Travis Oliphant (1:17:20.560)
they ended up building a tool suite
Lex Fridman (1:17:22.040)
to write GUI applications.
Travis Oliphant (1:17:24.040)
Like that's where they could actually make
Lex Fridman (1:17:25.440)
that the business could work.
Lex Fridman (1:17:26.680)
And so supporting SciPy and NumPy itself
Lex Fridman (1:17:29.480)
wasn't as possible.
Travis Oliphant (1:17:30.560)
Like they didn't, they tried.
Lex Fridman (1:17:31.960)
I mean, it was not just because,
Travis Oliphant (1:17:33.280)
it was just because of the business aspect.
Lex Fridman (1:17:34.480)
So, and I wanted to build a company that could do,
Lex Fridman (1:17:36.840)
that could get venture funding, right?
Lex Fridman (1:17:39.080)
Better for worse.
Travis Oliphant (1:17:39.920)
I mean, that's a longer story.
Lex Fridman (1:17:41.040)
We could talk a lot about that, but.
Lex Fridman (1:17:42.400)
And that's where Anaconda came to be.
Lex Fridman (1:17:44.200)
That's where Anaconda came to be.
Lex Fridman (1:17:45.040)
So let me ask you, it's a little bit for fun
Lex Fridman (1:17:48.040)
because you built this amazing thing.
Lex Fridman (1:17:50.000)
And so let's talk about like an old warrior
Lex Fridman (1:17:54.640)
looking over old battles.
Travis Oliphant (1:17:57.320)
You've, you know, there's a sad letter in 2012
Lex Fridman (1:18:01.480)
that you wrote to the NumPy mailing list
Travis Oliphant (1:18:04.360)
announcing that you're leaving NumPy.
Lex Fridman (1:18:06.320)
And some of the things you've listed
Travis Oliphant (1:18:08.560)
as some of the things you regret
Lex Fridman (1:18:10.720)
or not regret necessarily, but some things to think about.
Travis Oliphant (1:18:14.440)
If you could go back and you could fix stuff about NumPy
Lex Fridman (1:18:17.640)
or both sort of in a personal level,
Lex Fridman (1:18:20.640)
but also like looking forward,
Lex Fridman (1:18:21.960)
what kind of things would you like to see changed?
Travis Oliphant (1:18:24.560)
Good question.
Lex Fridman (1:18:25.400)
So I think there's technical questions
Lex Fridman (1:18:26.320)
and social questions right there.
Lex Fridman (1:18:29.680)
First of all, you know, I wrote NumPy as a service
Lex Fridman (1:18:33.400)
and I spent a lot of time doing it.
Lex Fridman (1:18:35.000)
And then other people came help make it happen.
Lex Fridman (1:18:36.760)
NumPy succeeded because the work of a lot of people, right?
Lex Fridman (1:18:39.840)
So it's important to understand that.
Travis Oliphant (1:18:42.240)
I'm grateful for the opportunity,
Lex Fridman (1:18:43.880)
the role I had, I could play
Lex Fridman (1:18:45.080)
and grateful that things I did had an impact,
Lex Fridman (1:18:47.600)
but they only had the impact they had
Travis Oliphant (1:18:49.200)
because the other people that came to the story.
Lex Fridman (1:18:52.200)
And so they were essential,
Lex Fridman (1:18:53.440)
but the way data types were handled,
Lex Fridman (1:18:55.720)
the way data types, we had array scalers, for example,
Lex Fridman (1:18:59.280)
that are really just a substitute for a type concept, right?
Lex Fridman (1:19:04.080)
So we had array scalers or actual Python objects
Lex Fridman (1:19:06.960)
so that there's for every, for a 32 bit float
Lex Fridman (1:19:09.520)
or a 16 bit float or a 16 bit integer,
Travis Oliphant (1:19:13.160)
Python doesn't have a natural,
Lex Fridman (1:19:14.720)
it's just one integer, there's one float.
Travis Oliphant (1:19:17.040)
Well, what about these lower precision types,
Lex Fridman (1:19:19.960)
these larger precision types?
Lex Fridman (1:19:21.600)
So we had them in NumPy
Lex Fridman (1:19:23.680)
so that you could have a collection of them,
Lex Fridman (1:19:25.320)
but then have an object in Python that was one of them.
Lex Fridman (1:19:28.760)
And there's questions about like in retrospect,
Travis Oliphant (1:19:31.440)
I wouldn't have created those
Lex Fridman (1:19:32.920)
if it improved the type system.
Lex Fridman (1:19:34.880)
And like made the type system actually a Python type system
Lex Fridman (1:19:38.000)
as opposed to currently,
Travis Oliphant (1:19:39.480)
it's a Python one level type system.
Lex Fridman (1:19:41.400)
I don't know if you know the difference
Travis Oliphant (1:19:42.240)
between Python one, Python two,
Lex Fridman (1:19:43.200)
it's kind of technical, kind of depth,
Lex Fridman (1:19:44.880)
but Python two, one of its big things that Guido did,
Lex Fridman (1:19:47.320)
it was really brilliant.
Travis Oliphant (1:19:48.160)
It was the actually Python one,
Lex Fridman (1:19:51.640)
all classes, new objects were one.
Travis Oliphant (1:19:55.040)
If you as a user wrote a class,
Lex Fridman (1:19:56.880)
it was an instance of a single Python type
Lex Fridman (1:19:59.600)
called the class type, right?
Lex Fridman (1:20:02.000)
In Python two, he used a meta typing hook
Travis Oliphant (1:20:06.240)
to actually go, oh, we can extend this
Lex Fridman (1:20:07.960)
and have users write classes that are new types.
Lex Fridman (1:20:10.960)
So he was able to have your user classes be actual types
Lex Fridman (1:20:13.320)
and the Python type system got a lot more rich.
Travis Oliphant (1:20:16.480)
I barely understood that at the time that NumPy was written.
Lex Fridman (1:20:19.160)
And so I essentially in NumPy created a type system
Travis Oliphant (1:20:22.480)
that was Python one era.
Lex Fridman (1:20:24.400)
It was every D type is an instance of the same type
Travis Oliphant (1:20:29.240)
as opposed to having new D types be really just Python types
Lex Fridman (1:20:33.160)
with additional metadata.
Lex Fridman (1:20:34.280)
What's the cost of that?
Lex Fridman (1:20:35.440)
Is it efficiency, is it usability?
Travis Oliphant (1:20:37.200)
It's usability primarily.
Lex Fridman (1:20:38.840)
The cost isn't really efficiency.
Travis Oliphant (1:20:40.320)
It's the fact that it's clumsy to create new types.
Lex Fridman (1:20:45.080)
It's hard.
Lex Fridman (1:20:45.920)
And then one of the challenges,
Lex Fridman (1:20:47.560)
you wanna create new types.
Travis Oliphant (1:20:48.400)
You wanna quaternion type or you wanna add a new posit type
Lex Fridman (1:20:52.600)
or you wanna, so it's hard.
Lex Fridman (1:20:55.080)
And now, if we had done that well,
Lex Fridman (1:20:59.200)
when Numba came on the scene
Travis Oliphant (1:21:00.440)
where we could actually compile Python code,
Lex Fridman (1:21:02.880)
it would integrate with that type system much cleaner.
Lex Fridman (1:21:05.160)
And now all of a sudden you could do gradual typing
Lex Fridman (1:21:08.080)
more easily.
Travis Oliphant (1:21:08.920)
You could actually have Python when you add Numba
Lex Fridman (1:21:10.560)
plus better typing, could actually be a,
Travis Oliphant (1:21:14.720)
you'd smooth out a lot of rough edges.
Lex Fridman (1:21:16.800)
But there's already, there's like,
Lex Fridman (1:21:18.840)
but are you talking about from the perspective
Lex Fridman (1:21:20.960)
of developers within NumPy or users of NumPy?
Travis Oliphant (1:21:23.840)
Developers of new, not really users of NumPy so much.
Lex Fridman (1:21:27.080)
It's the development of NumPy.
Lex Fridman (1:21:28.800)
So you're thinking about like how to design NumPy
Lex Fridman (1:21:32.160)
so that it's contributors.
Travis Oliphant (1:21:33.880)
Yeah, the contributors, it's easier.
Lex Fridman (1:21:35.880)
It's easier.
Travis Oliphant (1:21:36.720)
It's less work to make it better and to keep it maintained.
Lex Fridman (1:21:39.320)
And where that's impacted things, for example,
Travis Oliphant (1:21:41.480)
is the GPU.
Lex Fridman (1:21:43.400)
Like all of a sudden GPUs start getting added
Lex Fridman (1:21:45.520)
and we don't have them in NumPy.
Lex Fridman (1:21:48.360)
Like NumPy should just work on GPUs.
Travis Oliphant (1:21:50.560)
The fact that we'd have to download a whole other object
Lex Fridman (1:21:52.680)
called Kupy to have arrays on GPUs
Travis Oliphant (1:21:54.800)
is just an artifact of history.
Lex Fridman (1:21:57.440)
Like there's no fundamental reason for it.
Travis Oliphant (1:21:59.160)
Well, that's really interesting.
Lex Fridman (1:22:00.200)
If we could sort of go on that tangent briefly
Travis Oliphant (1:22:02.520)
is you have PyTorch and other libraries like TensorFlow
Lex Fridman (1:22:07.800)
that basically tried to mimic NumPy.
Travis Oliphant (1:22:11.840)
Like you've created a sort of platonic form
Lex Fridman (1:22:15.720)
of multi dimension. Basically, yeah.
Travis Oliphant (1:22:16.920)
Yeah, exactly.
Lex Fridman (1:22:17.760)
Well, and the problem was I didn't realize that.
Travis Oliphant (1:22:19.800)
Platonic form has a lot of edges.
Lex Fridman (1:22:21.760)
They're like, well, we should cut those out
Travis Oliphant (1:22:23.360)
before we present it.
Lex Fridman (1:22:24.200)
So I wonder if you can comment,
Lex Fridman (1:22:26.920)
is there like a difference between their implementations?
Lex Fridman (1:22:29.360)
Do you wish that they were all using NumPy
Lex Fridman (1:22:31.440)
or like in this abstraction of GPU?
Lex Fridman (1:22:34.040)
And sorry to interrupt that there's GPUs, ASICs.
Travis Oliphant (1:22:38.240)
There might be other neuromorphic computing.
Lex Fridman (1:22:40.040)
There might be other kind of,
Travis Oliphant (1:22:41.600)
or the aliens will come with a new kind of computer.
Lex Fridman (1:22:43.920)
Like an abstraction that NumPy should just operate nicely
Travis Oliphant (1:22:47.880)
over the things that are more and more
Lex Fridman (1:22:50.280)
and smarter and smarter with this multi dimensional arrays.
Travis Oliphant (1:22:54.200)
Yeah, yeah.
Lex Fridman (1:22:55.520)
There's several comments there.
Travis Oliphant (1:22:56.920)
We are working on something now called data dash APIs.org.
Lex Fridman (1:23:00.360)
Data dash API.org, you can go there today.
Lex Fridman (1:23:02.560)
And it's our answer.
Lex Fridman (1:23:04.480)
It's my answer.
Travis Oliphant (1:23:05.320)
It's not just me.
Lex Fridman (1:23:06.160)
It's me and Rolf and Athen and Aaron
Lex Fridman (1:23:09.120)
and a lot of companies are helping us at Quansight Labs.
Lex Fridman (1:23:13.120)
It's not unifying all the arrays.
Travis Oliphant (1:23:14.560)
It's creating an API that is unified.
Lex Fridman (1:23:17.200)
So we do care about this
Lex Fridman (1:23:19.360)
and we're trying to work through it.
Lex Fridman (1:23:21.280)
I actually had the chance to go and meet
Travis Oliphant (1:23:22.560)
with the TensorFlow team and the PyTorch team
Lex Fridman (1:23:25.360)
and talk to them after exiting Anaconda.
Travis Oliphant (1:23:29.120)
Just talking about,
Lex Fridman (1:23:29.960)
because the first year after leaving Anaconda in 2018,
Travis Oliphant (1:23:33.960)
I became deeply aware of this and realized that,
Lex Fridman (1:23:36.000)
oh, this split in the array community that exists today
Travis Oliphant (1:23:38.960)
makes what I was concerned about in 2005 pretty parochial.
Lex Fridman (1:23:44.160)
It's a lot worse, right?
Travis Oliphant (1:23:45.880)
Now there's a lot more people.
Lex Fridman (1:23:47.280)
So perhaps the industry can sustain more stacks, right?
Travis Oliphant (1:23:51.400)
There's a lot of money,
Lex Fridman (1:23:52.560)
but it makes it a lot less efficient.
Travis Oliphant (1:23:54.120)
I mean, but I've also learned to appreciate,
Lex Fridman (1:23:56.720)
it's okay to have some competition.
Travis Oliphant (1:23:58.440)
It's okay to have different implementations,
Lex Fridman (1:24:00.760)
but it's better if you can at least refactor some parts.
Travis Oliphant (1:24:03.560)
I mean, you're gonna be more efficient
Lex Fridman (1:24:04.960)
if you can refactor parts.
Travis Oliphant (1:24:07.000)
It's nice to have competition over things,
Lex Fridman (1:24:09.560)
over what is nice to have competition.
Travis Oliphant (1:24:11.760)
They're innovative.
Lex Fridman (1:24:12.600)
Yeah, innovative.
Lex Fridman (1:24:13.440)
And then maybe on the infrastructure,
Lex Fridman (1:24:15.920)
whatever, however you define infrastructure,
Travis Oliphant (1:24:18.120)
that maybe it's nice to have come together.
Lex Fridman (1:24:21.400)
Exactly, I agree.
Lex Fridman (1:24:22.440)
And I think, but it was interesting to hear the stories.
Lex Fridman (1:24:24.600)
I mean, TensorFlow came out of a C++ library,
Travis Oliphant (1:24:29.040)
Jeff Dean wrote, I think,
Lex Fridman (1:24:30.160)
that was basically how they were doing inference, right?
Lex Fridman (1:24:33.560)
And then they realized, oh,
Lex Fridman (1:24:34.400)
we could do this TensorFlow thing.
Travis Oliphant (1:24:36.440)
That C++ library, then what was interesting to me
Lex Fridman (1:24:38.400)
was the fact that both Google and Facebook did not,
Travis Oliphant (1:24:42.600)
it's not like they supported Python or NumPy initially.
Lex Fridman (1:24:44.960)
They just realized they had to.
Travis Oliphant (1:24:47.200)
They came to this world and then all the users were like,
Lex Fridman (1:24:48.760)
hey, where's the NumPy interface?
Travis Oliphant (1:24:50.680)
Oh, and then they kind of came late to it
Lex Fridman (1:24:52.560)
and then they had these bolt ons.
Travis Oliphant (1:24:54.800)
TensorFlow's bolt on, I don't mean to offend,
Lex Fridman (1:24:57.280)
but it was so bad.
Travis Oliphant (1:24:58.480)
Yeah, it was bad.
Lex Fridman (1:24:59.320)
It's the first time that I'm usually,
Travis Oliphant (1:25:01.760)
I mean, one of the challenges I have
Lex Fridman (1:25:04.160)
is I don't criticize enough in the sense
Travis Oliphant (1:25:07.000)
that I don't give people input enough, you know, if.
Lex Fridman (1:25:09.960)
I think it's universally agreed upon
Travis Oliphant (1:25:11.680)
that the bolt ons on TensorFlow were.
Lex Fridman (1:25:13.640)
But I went to, it was a talk given at Mallorca in Spain
Lex Fridman (1:25:17.080)
and a great guy came and gave a talk and I said,
Lex Fridman (1:25:19.880)
you should never show that API again
Travis Oliphant (1:25:21.400)
at a PyData conference.
Lex Fridman (1:25:23.040)
Like that was, that's terrible.
Travis Oliphant (1:25:24.840)
Like you're taking this beautiful system we've created
Lex Fridman (1:25:27.080)
and like you're corrupting all these poor Python people,
Travis Oliphant (1:25:29.440)
forcing them to write code like that
Lex Fridman (1:25:30.840)
or thinking they should.
Travis Oliphant (1:25:32.640)
Fortunately, you know, they adopted Keras as their,
Lex Fridman (1:25:35.640)
and Keras is better.
Lex Fridman (1:25:36.760)
And so Keras, TensorFlow is fine, is reasonable,
Lex Fridman (1:25:40.360)
but they bolted it on.
Travis Oliphant (1:25:42.680)
Facebook did too.
Lex Fridman (1:25:43.640)
Like Facebook had their own C++ library for doing inference
Lex Fridman (1:25:48.160)
and they also had the same reaction, they had to do this.
Lex Fridman (1:25:51.160)
One big difference is Facebook,
Travis Oliphant (1:25:52.840)
maybe because of the way it's situated in part of fair,
Lex Fridman (1:25:55.240)
part of the research library,
Travis Oliphant (1:25:56.600)
TensorFlow is definitely used and, you know,
Lex Fridman (1:25:58.880)
they have to make, they couldn't just open it up
Lex Fridman (1:26:00.720)
and let the community, you know, change what that is.
Lex Fridman (1:26:03.160)
Cause I guess they were worried
Travis Oliphant (1:26:04.640)
about disrupting their operations.
Lex Fridman (1:26:06.880)
Facebook's been much more open to having community input
Travis Oliphant (1:26:10.720)
on the structure itself.
Lex Fridman (1:26:12.400)
Whereas Google and TensorFlow,
Travis Oliphant (1:26:14.240)
they're really eager to have community users,
Lex Fridman (1:26:16.000)
people use it and build the infrastructure,
Lex Fridman (1:26:17.520)
but it's much more walled.
Lex Fridman (1:26:18.840)
Like it's harder to become a contributor to TensorFlow.
Lex Fridman (1:26:21.600)
And it's also, this is very difficult question to answer
Lex Fridman (1:26:24.760)
and don't mean to be throwing shade at anybody,
Lex Fridman (1:26:27.080)
but you have to wonder, it's the Microsoft question
Lex Fridman (1:26:30.320)
of when you have a tool like PyTorch or TensorFlow,
Lex Fridman (1:26:33.920)
how much are you tending to the hackers
Lex Fridman (1:26:36.320)
and how much are you tending to the big corporate clients?
Travis Oliphant (1:26:39.240)
Correct.
Lex Fridman (1:26:40.080)
So like the ones that,
Lex Fridman (1:26:42.560)
do you tend to the millions of people
Lex Fridman (1:26:44.160)
that are giving you almost no money,
Travis Oliphant (1:26:46.440)
or do you tend to the few
Lex Fridman (1:26:48.360)
that are giving you a ton of money?
Travis Oliphant (1:26:50.320)
I tend to stand with the people.
Lex Fridman (1:26:54.000)
Right.
Travis Oliphant (1:26:54.840)
Cause I feel like if you nurture the hackers,
Lex Fridman (1:26:57.760)
you will make the right decisions in the longterm
Travis Oliphant (1:27:00.200)
that will make the companies happy.
Lex Fridman (1:27:02.000)
I lean that way too.
Travis Oliphant (1:27:03.280)
I totally agree.
Lex Fridman (1:27:04.120)
But then you have to find the right dance.
Lex Fridman (1:27:05.680)
But it's a balance.
Lex Fridman (1:27:07.080)
Cause you can lean to the hackers and run out of money.
Travis Oliphant (1:27:08.960)
Yeah, exactly.
Lex Fridman (1:27:10.240)
Exactly.
Travis Oliphant (1:27:11.440)
Which has been some of the challenge I've faced
Lex Fridman (1:27:13.760)
in the sense that,
Travis Oliphant (1:27:14.680)
like I would look at some of the experiments,
Lex Fridman (1:27:17.040)
like NumPy, the fact that we have this split
Travis Oliphant (1:27:19.040)
is a factor of I wasn't able to collect more money
Lex Fridman (1:27:21.720)
towards NumPy development.
Travis Oliphant (1:27:22.800)
Yeah.
Lex Fridman (1:27:23.640)
Right?
Travis Oliphant (1:27:24.480)
I mean, I didn't succeed in the early days
Lex Fridman (1:27:26.480)
of getting enough financial contribution to NumPy
Lex Fridman (1:27:29.560)
so that they could work on it.
Lex Fridman (1:27:31.080)
Right?
Travis Oliphant (1:27:31.920)
I couldn't work on it full time.
Lex Fridman (1:27:32.760)
I had to just catch an hour here, an hour there.
Lex Fridman (1:27:35.640)
And I basically not liked that.
Lex Fridman (1:27:37.880)
Like I've wanted to be able to do something about that
Travis Oliphant (1:27:39.920)
for a long time and try to figure out how,
Lex Fridman (1:27:41.440)
well, there's lots of ways.
Travis Oliphant (1:27:42.960)
I mean, possibly one could say,
Lex Fridman (1:27:44.640)
we had an offer from Microsoft
Travis Oliphant (1:27:46.240)
at early days of Anaconda.
Lex Fridman (1:27:48.240)
2014, they offered to come buy us, right?
Travis Oliphant (1:27:51.160)
The problem was the right people at Microsoft
Lex Fridman (1:27:52.760)
didn't offer to buy us.
Lex Fridman (1:27:53.600)
And they were still,
Lex Fridman (1:27:54.880)
they were, it was really a,
Travis Oliphant (1:27:56.440)
we were like a second,
Lex Fridman (1:27:58.040)
they had really bought, they just bought R,
Travis Oliphant (1:27:59.680)
the R company called,
Lex Fridman (1:28:01.800)
it was not R studio,
Lex Fridman (1:28:02.800)
but it was another R company that was emergent.
Lex Fridman (1:28:05.680)
And it was kind of a,
Travis Oliphant (1:28:07.160)
well, we should also get a Python play,
Lex Fridman (1:28:09.360)
but they were really doubling down on R.
Lex Fridman (1:28:11.520)
Right?
Lex Fridman (1:28:12.360)
And so it was like,
Travis Oliphant (1:28:13.200)
it was where you would go to die.
Lex Fridman (1:28:14.400)
So it's not, it wasn't,
Travis Oliphant (1:28:15.440)
it was before Satya was there.
Lex Fridman (1:28:17.160)
Satya had just started.
Travis Oliphant (1:28:18.680)
Just started.
Lex Fridman (1:28:19.520)
Right?
Lex Fridman (1:28:20.360)
And the offer was coming from someone
Lex Fridman (1:28:21.800)
two levels down from him.
Travis Oliphant (1:28:23.080)
Got you.
Lex Fridman (1:28:23.920)
Right?
Lex Fridman (1:28:24.760)
And if it had come from Scott Guthrie,
Lex Fridman (1:28:26.640)
so I got a chance to meet Scott Guthrie,
Travis Oliphant (1:28:28.320)
great guy, I like him.
Lex Fridman (1:28:29.760)
If an offer had come from him,
Travis Oliphant (1:28:31.560)
probably would be at Microsoft right now.
Lex Fridman (1:28:33.200)
That'd be fascinating.
Travis Oliphant (1:28:34.520)
That would be really nice actually,
Lex Fridman (1:28:36.160)
especially given what Microsoft has since done
Travis Oliphant (1:28:38.720)
for the open source community and all those things.
Lex Fridman (1:28:40.200)
Yes, I think they're doing well.
Travis Oliphant (1:28:41.640)
I really like some of the stuff they've been doing.
Lex Fridman (1:28:43.720)
They're still working,
Lex Fridman (1:28:45.200)
and they've, you know,
Lex Fridman (1:28:46.040)
they've hired Guido now,
Lex Fridman (1:28:46.880)
and they've hired a lot of Python developers.
Lex Fridman (1:28:47.720)
Wait, Guido's not at Microsoft?
Travis Oliphant (1:28:49.400)
Yeah, he works at Microsoft.
Lex Fridman (1:28:50.240)
I need to.
Travis Oliphant (1:28:52.480)
Which, he retired,
Lex Fridman (1:28:53.600)
then he came out of retirement,
Lex Fridman (1:28:54.720)
and he's working now.
Lex Fridman (1:28:55.560)
I was just talking to him,
Lex Fridman (1:28:56.400)
and he didn't mention this person.
Lex Fridman (1:28:57.840)
Well.
Travis Oliphant (1:28:58.680)
I should investigate this further.
Lex Fridman (1:29:01.280)
Well.
Travis Oliphant (1:29:02.120)
Because I know he loved Dropbox,
Lex Fridman (1:29:02.960)
but I wasn't sure what he was doing,
Travis Oliphant (1:29:04.000)
who he was up to.
Lex Fridman (1:29:05.160)
Well, he was kind of saying he'd retire,
Travis Oliphant (1:29:06.560)
but, and it's literally been five years
Lex Fridman (1:29:09.640)
since I last sat down and really talked to Guido.
Lex Fridman (1:29:12.280)
Right?
Lex Fridman (1:29:13.640)
Guido's a technology expert, right?
Travis Oliphant (1:29:16.000)
He's a, so I came,
Lex Fridman (1:29:17.480)
I was excited because I'd finally figured out
Travis Oliphant (1:29:18.880)
the type system for NumPy.
Lex Fridman (1:29:20.720)
I wanted to kind of talk about that with him,
Lex Fridman (1:29:22.240)
and I kind of overwhelmed him.
Lex Fridman (1:29:23.960)
Could you stay in that,
Travis Oliphant (1:29:25.080)
just for a brief moment,
Lex Fridman (1:29:26.640)
because you're a fascinating person
Travis Oliphant (1:29:28.200)
in the history of programming.
Lex Fridman (1:29:29.440)
He is a fascinating person.
Lex Fridman (1:29:31.240)
What have you learned from Guido
Lex Fridman (1:29:34.200)
about programming, about life?
Travis Oliphant (1:29:37.560)
Yeah, yeah.
Lex Fridman (1:29:38.400)
A lot, actually.
Travis Oliphant (1:29:39.240)
I've been a fan of Guido's.
Lex Fridman (1:29:40.840)
You know, we have a chance to talk.
Travis Oliphant (1:29:42.520)
Some, I wouldn't say, you know,
Lex Fridman (1:29:43.760)
we talk all the time.
Travis Oliphant (1:29:44.840)
Not at all.
Lex Fridman (1:29:45.680)
He may, but we talk enough to,
Travis Oliphant (1:29:47.520)
I respect his,
Lex Fridman (1:29:48.840)
in fact, when I first started NumPy,
Travis Oliphant (1:29:49.880)
one of the first things I did was I had a,
Lex Fridman (1:29:51.520)
I asked Guido for a meeting
Travis Oliphant (1:29:53.320)
with him and Paul Dubois in San Mateo.
Lex Fridman (1:29:55.400)
And I went and met him for lunch.
Lex Fridman (1:29:56.920)
And basically, to say,
Lex Fridman (1:29:58.000)
maybe we can actually,
Travis Oliphant (1:29:59.200)
part of the strategy for NumPy
Lex Fridman (1:30:00.720)
was to get it into Python 3,
Lex Fridman (1:30:02.440)
and maybe be part of Python.
Lex Fridman (1:30:04.120)
And so we talked about that.
Travis Oliphant (1:30:05.160)
That's a cool conversation.
Lex Fridman (1:30:06.000)
And about that approach, right?
Travis Oliphant (1:30:06.920)
I would have loved to be a flyer in the water.
Lex Fridman (1:30:09.200)
That was good.
Lex Fridman (1:30:10.040)
And over the years for Guido,
Lex Fridman (1:30:12.080)
I learned,
Lex Fridman (1:30:13.560)
so he was open.
Lex Fridman (1:30:14.840)
Like, he was willing to listen to people's ideas.
Lex Fridman (1:30:18.200)
Right?
Lex Fridman (1:30:19.040)
And over the years,
Travis Oliphant (1:30:19.880)
now generally, you know,
Lex Fridman (1:30:20.920)
I'm not saying universally that's been true,
Lex Fridman (1:30:22.600)
but generally that's been true.
Lex Fridman (1:30:24.360)
So he's willing to listen.
Travis Oliphant (1:30:25.680)
He's willing to defer.
Lex Fridman (1:30:27.240)
Like on the scientific side,
Travis Oliphant (1:30:28.280)
he would just kind of defer.
Lex Fridman (1:30:29.120)
He didn't really always understand
Lex Fridman (1:30:30.160)
what we were doing.
Lex Fridman (1:30:31.000)
Yeah.
Lex Fridman (1:30:31.840)
And he'd defer.
Lex Fridman (1:30:32.800)
One place where he didn't enough
Travis Oliphant (1:30:35.640)
was we missed a matrix multiply operator.
Lex Fridman (1:30:37.680)
Like that finally got added to Python,
Lex Fridman (1:30:39.600)
but about 10 years later than it should have.
Lex Fridman (1:30:42.240)
But the reason was because nobody,
Travis Oliphant (1:30:44.760)
it takes a lot of effort.
Lex Fridman (1:30:46.200)
And I learned this while I was writing NumPy.
Travis Oliphant (1:30:48.160)
I also wrote tools to Python.
Lex Fridman (1:30:49.320)
I began with Python Dev,
Lex Fridman (1:30:50.160)
and I added some pieces to Python.
Lex Fridman (1:30:52.320)
Like the memory view object.
Travis Oliphant (1:30:53.400)
I wanted the structure of NumPy into Python.
Lex Fridman (1:30:55.680)
So we didn't get NumPy into Python,
Lex Fridman (1:30:56.960)
but we got the basic structure of it into Python.
Lex Fridman (1:30:59.480)
Like, so you could build on it.
Travis Oliphant (1:31:01.000)
Nobody did for a while,
Lex Fridman (1:31:01.880)
but eventually database authors started to.
Lex Fridman (1:31:04.720)
And it's a lot better.
Lex Fridman (1:31:05.760)
They did.
Lex Fridman (1:31:06.600)
And also Antoine Petrou and Stefan Krah
Lex Fridman (1:31:08.960)
actually fixed the memory view object.
Travis Oliphant (1:31:10.760)
Cause I wrote the underlying infrastructure in C,
Lex Fridman (1:31:13.280)
but the Python exposure was terrible
Travis Oliphant (1:31:15.520)
until they came in and fixed it.
Lex Fridman (1:31:16.640)
Partly because I was writing NumPy,
Lex Fridman (1:31:18.080)
and NumPy was the Python exposure.
Lex Fridman (1:31:19.960)
I didn't really care about
Travis Oliphant (1:31:21.240)
if you didn't have NumPy installed.
Lex Fridman (1:31:22.800)
Anyway, Guido opened up ideas,
Travis Oliphant (1:31:25.360)
technologically brilliant.
Lex Fridman (1:31:27.280)
Like really, I really got a lot of respect for him
Travis Oliphant (1:31:29.440)
when I saw what he did
Lex Fridman (1:31:30.360)
with this type class merger thing.
Lex Fridman (1:31:33.320)
It was actually tricky, right?
Lex Fridman (1:31:35.200)
And then willing to share, willing to share his ideas.
Lex Fridman (1:31:38.400)
So the other thing early on in 1998,
Lex Fridman (1:31:40.200)
I said, I wrote my first extension module.
Travis Oliphant (1:31:42.240)
The reason I could is because he'd written this blog post
Lex Fridman (1:31:44.800)
on how to do reference counting, right?
Lex Fridman (1:31:47.360)
And without it, I would have been lost, right?
Lex Fridman (1:31:50.040)
But he was willing to at least try to write this post.
Lex Fridman (1:31:53.240)
And so he's been motivated early on with Python.
Lex Fridman (1:31:56.080)
There's a computer science for everybody.
Travis Oliphant (1:31:58.200)
You kind of have this early on desire to,
Lex Fridman (1:31:59.880)
oh, maybe we should be pushing programming to more people.
Lex Fridman (1:32:02.040)
So he had this populist notion, I guess,
Lex Fridman (1:32:04.560)
or populist sense to learn that there's a certain skill,
Lex Fridman (1:32:08.720)
and I've seen it in other people too,
Lex Fridman (1:32:10.560)
of engaging with contributors sufficiently to,
Travis Oliphant (1:32:13.960)
because when somebody engaged with you
Lex Fridman (1:32:15.640)
and wants to contribute to you,
Travis Oliphant (1:32:16.480)
if you ignore them, they go away.
Lex Fridman (1:32:18.400)
So building that early contributor base
Travis Oliphant (1:32:19.760)
requires real engagement with other people.
Lex Fridman (1:32:23.320)
And he would do that.
Lex Fridman (1:32:24.520)
Can you also comment on this tragic stepping down
Lex Fridman (1:32:29.080)
from his position as the benevolent dictator for life
Lex Fridman (1:32:32.880)
over the wars, you know?
Lex Fridman (1:32:35.640)
The Walrus operator?
Travis Oliphant (1:32:36.560)
The Walrus operator was the last battle.
Lex Fridman (1:32:39.200)
I don't know if that's the cause of it,
Lex Fridman (1:32:40.880)
but there's this, for people who don't know,
Lex Fridman (1:32:43.640)
you can look up, there's the Walrus operator,
Travis Oliphant (1:32:45.640)
which looks like a colon and equal sign.
Lex Fridman (1:32:49.560)
Yeah, colon, equal sign.
Lex Fridman (1:32:50.800)
And it actually does maybe the thing
Lex Fridman (1:32:54.680)
that an equal sign should be doing.
Travis Oliphant (1:32:57.560)
Yeah, maybe, right, exactly.
Lex Fridman (1:33:00.240)
But it's just historically,
Travis Oliphant (1:33:02.080)
equal sign means something else.
Lex Fridman (1:33:03.560)
It just means assignment.
Lex Fridman (1:33:05.240)
So he stepped down over this.
Lex Fridman (1:33:07.280)
What do you think about the pressure of leadership?
Travis Oliphant (1:33:10.360)
It's something that, you mentioned the letter I wrote
Lex Fridman (1:33:12.280)
in NumPy at the time.
Travis Oliphant (1:33:13.640)
That was a hard time, actually.
Lex Fridman (1:33:15.240)
I mean, there's been really hard times.
Travis Oliphant (1:33:17.080)
It was hard.
Lex Fridman (1:33:19.520)
You get criticized, right?
Lex Fridman (1:33:20.840)
And you get pushed, and you get,
Lex Fridman (1:33:22.800)
not everybody loves what you do.
Travis Oliphant (1:33:23.800)
Like anytime you do anything that has impact at all,
Lex Fridman (1:33:26.880)
you're not universally loved, right?
Travis Oliphant (1:33:28.560)
You get some real critics.
Lex Fridman (1:33:29.760)
And that's an important energy,
Travis Oliphant (1:33:31.960)
because it's impossible for you to do everything right.
Lex Fridman (1:33:35.080)
You need people to be pushing.
Lex Fridman (1:33:37.160)
But sometimes people can get mean, right?
Lex Fridman (1:33:39.320)
People can, I prefer to give people the benefit of the doubt.
Travis Oliphant (1:33:43.080)
I don't immediately assume they have bad intentions.
Lex Fridman (1:33:45.800)
And maybe for other, maybe that doesn't happen for everybody.
Travis Oliphant (1:33:49.000)
For whatever reason, their past,
Lex Fridman (1:33:50.200)
their experiences with people, they sometimes have bad,
Lex Fridman (1:33:53.040)
so they immediately attribute to you bad intentions.
Lex Fridman (1:33:54.880)
So you're like, where did this come from?
Travis Oliphant (1:33:56.080)
I mean, I'm definitely open to criticism,
Lex Fridman (1:33:57.760)
but I think you're misinterpreting the whole point.
Travis Oliphant (1:34:00.520)
Because I would get that, certainly when I started Anaconda.
Lex Fridman (1:34:05.800)
Sometimes I say to people,
Travis Oliphant (1:34:08.520)
I care enough about entrepreneurship
Lex Fridman (1:34:09.760)
to make some open source people uncomfortable.
Lex Fridman (1:34:12.240)
And I care enough about open source
Lex Fridman (1:34:13.520)
to make investors uncomfortable.
Lex Fridman (1:34:15.560)
So I sort of, you create kind of doubters on both sides.
Lex Fridman (1:34:19.880)
So when you have, and this is just a plea
Travis Oliphant (1:34:23.840)
to the listener and the public, I've noticed this too,
Lex Fridman (1:34:27.680)
that there's a tendency, and social media makes this worse,
Travis Oliphant (1:34:32.680)
when you don't have perfect information about the situation,
Lex Fridman (1:34:35.560)
you tend to fill the gaps with the worst possible,
Travis Oliphant (1:34:39.280)
or at least a bad story that fills those gaps.
Lex Fridman (1:34:43.080)
And I think it's good to live life,
Travis Oliphant (1:34:46.960)
maybe not fully naively, but filling in the gaps
Lex Fridman (1:34:49.760)
with the good, with the best, with the positive,
Travis Oliphant (1:34:54.720)
with the hopeful explanation of why you see this.
Lex Fridman (1:34:57.280)
So if you see somebody like you trying to make money
Travis Oliphant (1:35:00.280)
on a book about an umpire,
Lex Fridman (1:35:01.960)
there's a million stories around that that are positive.
Lex Fridman (1:35:04.880)
And those are good to think about,
Lex Fridman (1:35:07.840)
to project positive intent on the people.
Travis Oliphant (1:35:10.600)
Because for many reasons, usually because people are good
Lex Fridman (1:35:13.960)
and they do have good intent.
Lex Fridman (1:35:15.560)
And also when you project that positive intent,
Lex Fridman (1:35:17.480)
people will step up to that too.
Travis Oliphant (1:35:19.400)
Yes.
Lex Fridman (1:35:20.240)
It's a great point.
Travis Oliphant (1:35:21.760)
It has this kind of viral nature to it.
Lex Fridman (1:35:24.320)
And of course with Twitter, early on figured out,
Lex Fridman (1:35:27.720)
and Facebook is that they can make a lot of money
Lex Fridman (1:35:30.360)
and engagement from the negative.
Travis Oliphant (1:35:32.280)
Yes.
Lex Fridman (1:35:33.120)
So there's this, we're fighting this mechanism.
Travis Oliphant (1:35:35.440)
I agree.
Lex Fridman (1:35:36.280)
Which is challenging.
Travis Oliphant (1:35:37.120)
It's easier.
Lex Fridman (1:35:37.940)
It's just easier to be.
Travis Oliphant (1:35:38.780)
To be negative.
Lex Fridman (1:35:39.620)
And then for some reason, something in our minds
Travis Oliphant (1:35:41.920)
really enjoys sharing that and getting all excited
Lex Fridman (1:35:45.280)
about the negativity.
Travis Oliphant (1:35:46.280)
We do, yeah.
Lex Fridman (1:35:47.400)
Some protective mechanism perhaps that we're gonna get eaten
Travis Oliphant (1:35:50.440)
if we don't, yeah.
Lex Fridman (1:35:51.280)
Exactly.
Travis Oliphant (1:35:52.100)
For us to be effective as a group of people
Lex Fridman (1:35:53.200)
in a software engineering project,
Travis Oliphant (1:35:54.600)
you have to project positive intent, I think.
Lex Fridman (1:35:56.860)
I totally agree.
Travis Oliphant (1:35:57.820)
Totally agree.
Lex Fridman (1:35:58.660)
And I think that's very,
Lex Fridman (1:35:59.480)
and so that happens in this space.
Lex Fridman (1:36:01.640)
But Python has done a reasonable job in the past,
Lex Fridman (1:36:03.840)
but here is a situation where I think it started
Lex Fridman (1:36:05.920)
to get this pressure where it didn't.
Travis Oliphant (1:36:07.840)
I really didn't, I didn't know enough about what happened.
Lex Fridman (1:36:10.440)
I've talked to several people about it.
Lex Fridman (1:36:12.160)
And I know most of the steering committee members today,
Lex Fridman (1:36:15.840)
one person nominated me for that role,
Lex Fridman (1:36:17.880)
but it's the wrong role for me right now, right?
Lex Fridman (1:36:20.880)
I have a lot of respect for the Python developer space
Lex Fridman (1:36:24.040)
and the Python developers.
Lex Fridman (1:36:25.440)
I also understand the gap between computer science
Travis Oliphant (1:36:27.600)
Python developers and array programming developers
Lex Fridman (1:36:30.440)
or science developers.
Lex Fridman (1:36:31.440)
And in fact, Python succeeds in the array space
Lex Fridman (1:36:34.560)
the more it has people in that boundary.
Lex Fridman (1:36:36.520)
And there's often very few.
Lex Fridman (1:36:37.960)
Like I was playing a role in that boundary
Lex Fridman (1:36:39.440)
and working like everything to try to keep up
Lex Fridman (1:36:42.600)
with even what Guido was saying, like I'm a C programmer,
Lex Fridman (1:36:47.720)
but not a computer scientist.
Lex Fridman (1:36:49.080)
Like I was an engineer and physicist and mathematician,
Lex Fridman (1:36:52.600)
and I didn't always understand
Lex Fridman (1:36:54.840)
what they were talking about
Lex Fridman (1:36:56.360)
and why they would have opinions the way they did.
Lex Fridman (1:36:58.360)
So, you know, you have to listen and try to understand.
Travis Oliphant (1:37:00.280)
Then you also have to explain your point of view
Lex Fridman (1:37:02.120)
in a way they can understand.
Lex Fridman (1:37:03.560)
And that takes a lot of work.
Lex Fridman (1:37:04.840)
And that communication is always the challenge.
Lex Fridman (1:37:07.920)
And it's just what we're describing here
Lex Fridman (1:37:09.200)
about the negativity is just another form of that.
Lex Fridman (1:37:11.520)
Like how do we come together?
Lex Fridman (1:37:12.560)
And it does appear we're wired anyway
Travis Oliphant (1:37:14.520)
to at least have a, there's a part of us
Lex Fridman (1:37:16.560)
that will enemy, you know, friend, enemy.
Lex Fridman (1:37:18.880)
And we see, yeah, it's like,
Lex Fridman (1:37:21.360)
why are we wiring on the enemy front?
Lex Fridman (1:37:23.520)
So why are we pushing that?
Lex Fridman (1:37:24.760)
Why are we promoting that so deeply?
Travis Oliphant (1:37:26.680)
Assume friend until proven otherwise.
Lex Fridman (1:37:28.440)
Yes, yes.
Travis Oliphant (1:37:30.000)
So, cause you have such a fascinating mind in all of this.
Lex Fridman (1:37:32.160)
Let me just ask you these questions.
Lex Fridman (1:37:34.160)
So one interesting side on the Python history
Lex Fridman (1:37:38.000)
is the move from Python two to Python three.
Travis Oliphant (1:37:41.000)
You mentioned move from Python one to Python two,
Lex Fridman (1:37:43.720)
but the move from Python two to Python three
Travis Oliphant (1:37:46.800)
is a little bit interesting
Lex Fridman (1:37:47.920)
because it took a very long time.
Travis Oliphant (1:37:50.040)
It broke, you know, quite a small way
Lex Fridman (1:37:53.520)
backward compatibility, but even that small way
Travis Oliphant (1:37:56.280)
seemed to have been very painful for people.
Lex Fridman (1:37:58.680)
Is there lessons you draw?
Travis Oliphant (1:38:00.640)
Oh man, tons of lessons.
Lex Fridman (1:38:01.480)
From how long it took and how painful it seemed to be?
Travis Oliphant (1:38:05.520)
Yeah, tons of lessons.
Lex Fridman (1:38:07.000)
Well, I mentioned here earlier
Travis Oliphant (1:38:08.240)
that NumPy was written in 2005.
Lex Fridman (1:38:11.840)
It was in 2005 that I actually went to Guido
Travis Oliphant (1:38:15.520)
to talk about getting NumPy into Python three.
Lex Fridman (1:38:17.240)
Like my strategy was to,
Travis Oliphant (1:38:18.880)
oh, we were moving to Python three.
Lex Fridman (1:38:19.960)
Let's have that be, and it seems funny in retrospect
Travis Oliphant (1:38:22.200)
because like, wait, Python three,
Lex Fridman (1:38:23.360)
that was in 2020, right?
Travis Oliphant (1:38:25.480)
When we finally ended the support for Python two
Lex Fridman (1:38:27.760)
or at least 2017.
Travis Oliphant (1:38:29.000)
The reason it took a long time,
Lex Fridman (1:38:30.880)
a lot of time, I think it was because one of the things is
Travis Oliphant (1:38:33.320)
there wasn't much to like about Python three.
Lex Fridman (1:38:36.240)
3.0, 3.1, it really wasn't until 3.3.
Travis Oliphant (1:38:40.280)
Like I consider Python 3.3 to be Python 3.0.
Lex Fridman (1:38:43.600)
But it wasn't until Python 3.3
Travis Oliphant (1:38:44.880)
that I felt there's enough stuff in it
Lex Fridman (1:38:47.200)
to make it worth anybody using it, right?
Lex Fridman (1:38:49.800)
And then 3.4 started to be, oh yeah, I want that.
Lex Fridman (1:38:52.600)
And then 3.5 as the matrix multiply operator,
Lex Fridman (1:38:54.880)
and now it's like, okay, we gotta use that.
Lex Fridman (1:38:56.520)
Plus the libraries that started leveraging
Travis Oliphant (1:38:58.400)
some of the features of Python three.
Lex Fridman (1:38:59.600)
Exactly.
Lex Fridman (1:39:00.760)
So it really, the challenge was it was,
Lex Fridman (1:39:03.800)
but it also illustrated a truism that, you know,
Travis Oliphant (1:39:07.400)
when you have inertia,
Lex Fridman (1:39:08.240)
when you have a group of people using something,
Travis Oliphant (1:39:10.480)
it's really hard to move them away from it.
Lex Fridman (1:39:11.960)
You can't just change the world on them.
Lex Fridman (1:39:13.920)
And Python three, you know, made some,
Lex Fridman (1:39:15.440)
I think it fixed some things Guido had always hated.
Travis Oliphant (1:39:17.240)
I don't think he didn't like the fact
Lex Fridman (1:39:18.440)
that print was a statement.
Travis Oliphant (1:39:19.440)
He wanted to make it a function.
Lex Fridman (1:39:20.760)
But in some sense, that's a bit of gratuitous change
Travis Oliphant (1:39:23.200)
to the language.
Lex Fridman (1:39:24.120)
And you could argue, and people have,
Lex Fridman (1:39:27.320)
but one of the challenges was there wasn't enough features
Lex Fridman (1:39:31.520)
and too many just changes without features.
Lex Fridman (1:39:34.960)
And so the empathy for the end user
Lex Fridman (1:39:37.440)
as to why they would switch wasn't there.
Travis Oliphant (1:39:40.480)
I think also it illustrated just the funding realities.
Lex Fridman (1:39:42.960)
Like Python wasn't funded.
Travis Oliphant (1:39:45.040)
Like it was also a project
Lex Fridman (1:39:46.160)
with a bunch of volunteer labor, right?
Travis Oliphant (1:39:48.280)
It had more people, so more volunteer labor,
Lex Fridman (1:39:50.240)
but it was still, it was fun in the sense
Travis Oliphant (1:39:52.240)
that at least Guido had a job.
Lex Fridman (1:39:53.480)
And I've learned some of the behind the scenes on that now
Travis Oliphant (1:39:55.880)
since talking to people who have lived through it
Lex Fridman (1:39:57.840)
and maybe not on air, we can talk about some of that.
Lex Fridman (1:40:00.560)
But it's interesting to see, but Guido had a job,
Lex Fridman (1:40:03.640)
but his full time job wasn't just work on Python.
Travis Oliphant (1:40:07.080)
Like he had other things to do.
Lex Fridman (1:40:08.880)
Just wild.
Lex Fridman (1:40:09.880)
It is wild, isn't it?
Lex Fridman (1:40:10.720)
It's wild how few people are funded.
Travis Oliphant (1:40:13.320)
Yes.
Lex Fridman (1:40:14.160)
And how much impact they have.
Travis Oliphant (1:40:15.200)
Yes.
Lex Fridman (1:40:16.160)
Maybe that's a feature not a bug, I don't know.
Travis Oliphant (1:40:17.920)
Maybe, yes, exactly.
Lex Fridman (1:40:19.080)
At least early on, like it's sort of, I know, yeah.
Travis Oliphant (1:40:21.840)
It's like Olympic athletes are often severely underfunded,
Lex Fridman (1:40:25.160)
but maybe that's what brings out the greatness.
Travis Oliphant (1:40:27.360)
Perhaps, yes, correct.
Lex Fridman (1:40:28.520)
No, exactly.
Travis Oliphant (1:40:29.680)
Maybe this is the essential part of it.
Lex Fridman (1:40:31.880)
Because I do think about that in terms of,
Travis Oliphant (1:40:33.680)
I currently have an incubator for open source startups.
Lex Fridman (1:40:36.200)
Like what I'm trying to do right now
Travis Oliphant (1:40:37.640)
is create the environment I wished had existed
Lex Fridman (1:40:40.480)
when I was leaving academia with NumPy
Lex Fridman (1:40:42.880)
and trying to figure out what to do.
Lex Fridman (1:40:44.120)
I'm trying to create those opportunities and environments.
Travis Oliphant (1:40:46.120)
So, and that's what drives me still,
Lex Fridman (1:40:49.320)
is how do I make the world easier
Lex Fridman (1:40:50.760)
for the open source entrepreneur?
Lex Fridman (1:40:52.600)
So let me stay, I mean, I could probably stay on NumPy
Travis Oliphant (1:40:55.960)
for a long time, but this is fun question.
Lex Fridman (1:41:00.960)
So Andre Kapathy leads the Tesla Autopilot team,
Lex Fridman (1:41:04.680)
and he's also one of the most like legit programmers I know.
Lex Fridman (1:41:10.720)
It's like he builds stuff from scratch a lot,
Lex Fridman (1:41:13.760)
and that's how he builds intuition about how a problem works.
Lex Fridman (1:41:16.200)
He just builds it from scratch, and I always love that.
Lex Fridman (1:41:18.320)
And the primary language he uses is Python
Lex Fridman (1:41:21.320)
for the intuition building.
Lex Fridman (1:41:23.080)
But he posted something on Twitter saying
Lex Fridman (1:41:27.600)
that they got a significant improvement
Travis Oliphant (1:41:31.280)
on some aspect of their like data loading, I think,
Lex Fridman (1:41:35.640)
by switching away from np.square root,
Lex Fridman (1:41:39.840)
so the NumPy's implementation of square root,
Lex Fridman (1:41:42.160)
to math.square root, and then somebody else commented
Travis Oliphant (1:41:44.520)
that you can get even a much greater improvement
Lex Fridman (1:41:48.120)
by using the vanilla Python square root, which is like.
Travis Oliphant (1:41:52.600)
Power 0.5.
Lex Fridman (1:41:53.640)
Power 0.5.
Lex Fridman (1:41:55.200)
And it's fascinating to me, I just wanted to.
Lex Fridman (1:41:58.640)
So that was some shade throwing at some.
Travis Oliphant (1:42:02.080)
No, no, and yes, we're talking about.
Lex Fridman (1:42:04.640)
It's a good way to ask the trade off
Travis Oliphant (1:42:08.080)
between usability and efficiency broadly in NumPy,
Lex Fridman (1:42:12.080)
but also on these specific weird quirks
Travis Oliphant (1:42:14.920)
of like a single function.
Lex Fridman (1:42:16.680)
Yep, so on that point, if you use a NumPy math function
Travis Oliphant (1:42:21.360)
on a scaler, it's gonna be slower
Lex Fridman (1:42:25.000)
than using a Python function on that scaler.
Lex Fridman (1:42:27.960)
But because the math object in NumPy is more complicated,
Lex Fridman (1:42:33.800)
because you can also call that math object on an array.
Lex Fridman (1:42:36.760)
And so effectively, it goes through a similar machine.
Lex Fridman (1:42:39.200)
There aren't enough of the, which you would do
Lex Fridman (1:42:41.840)
and you could do like checks and fast paths.
Lex Fridman (1:42:45.960)
So yeah, if you're basically doing a list,
Travis Oliphant (1:42:48.800)
if you run over a list, in fact,
Lex Fridman (1:42:50.680)
for problems that are less than 1,000,
Travis Oliphant (1:42:53.700)
even maybe 10,000 is probably the,
Lex Fridman (1:42:55.320)
if you're going more than 10,000,
Travis Oliphant (1:42:56.900)
that's where you definitely need to be using arrays.
Lex Fridman (1:42:59.080)
But if you're less than that, and for reading,
Travis Oliphant (1:43:01.200)
if you're doing a reading process
Lex Fridman (1:43:02.760)
and essentially it's not compute bound, it's IO bound.
Lex Fridman (1:43:05.600)
And so you're really taking lists of 1,000 at a time
Lex Fridman (1:43:08.480)
and doing work on it.
Travis Oliphant (1:43:09.540)
Yeah, you could be faster just using Python,
Lex Fridman (1:43:11.680)
straight up Python.
Travis Oliphant (1:43:12.740)
See, but also, and this is the side to the top,
Lex Fridman (1:43:16.640)
there's the fundamental questions
Travis Oliphant (1:43:18.680)
when you look at the long arc of history,
Lex Fridman (1:43:21.240)
it's very possible that np.square root is much faster.
Travis Oliphant (1:43:25.560)
It could be.
Lex Fridman (1:43:26.400)
So like in terms of like, don't worry about it,
Travis Oliphant (1:43:29.480)
it's the evils of over optimization or whatever,
Lex Fridman (1:43:32.420)
all the different quotes around that,
Travis Oliphant (1:43:34.040)
is sometimes obsessing about this particular little quark
Lex Fridman (1:43:39.520)
is not sufficient.
Travis Oliphant (1:43:41.720)
For somebody like, if you're trying to optimize your path,
Lex Fridman (1:43:45.220)
I mean, I agree, premature optimization
Lex Fridman (1:43:47.680)
creates all kinds of challenges, right?
Lex Fridman (1:43:49.320)
Because now, but you may have to do it.
Travis Oliphant (1:43:51.840)
I believe the quote is, it's the root of all evil.
Lex Fridman (1:43:53.880)
It's the root of all evil, right?
Travis Oliphant (1:43:55.560)
Let's give Donald Knuth, I think,
Lex Fridman (1:43:57.040)
or is he more than somebody else?
Travis Oliphant (1:43:59.160)
Well, Doc Knuth is kind of like Mark Twain,
Lex Fridman (1:44:00.800)
people just attribute stuff to him, I don't know.
Lex Fridman (1:44:02.880)
And it's fine because he's brilliant.
Lex Fridman (1:44:04.640)
So, no, I was a LaTeX user myself,
Lex Fridman (1:44:07.640)
and so I have a lot of respect,
Lex Fridman (1:44:09.280)
and he did more than that, of course,
Lex Fridman (1:44:10.820)
but yeah, someone I really appreciate
Lex Fridman (1:44:14.120)
in the computer science space.
Travis Oliphant (1:44:15.640)
Yeah, I don't, I think that's appropriate.
Lex Fridman (1:44:17.080)
There's a lot of little things like that,
Travis Oliphant (1:44:18.320)
where people actually, if you understood it,
Lex Fridman (1:44:20.120)
you go, yeah, of course, that's the case.
Lex Fridman (1:44:22.640)
And the other part, the other part I didn't mention,
Lex Fridman (1:44:25.040)
and Numba was a thing we wrote early on,
Lex Fridman (1:44:27.960)
and I was really excited by Numba
Lex Fridman (1:44:29.040)
because it's something we wanted,
Travis Oliphant (1:44:30.040)
it was a compiler for Python syntax,
Lex Fridman (1:44:32.160)
and I wanted it from the beginning of writing NumPy
Travis Oliphant (1:44:35.440)
because of this function question,
Lex Fridman (1:44:38.280)
like taking, the power of arrays
Travis Oliphant (1:44:41.900)
is really that you can write functions using all of it.
Lex Fridman (1:44:45.120)
It has implicit looping, right?
Lex Fridman (1:44:47.000)
So you don't worry about,
Lex Fridman (1:44:47.840)
I write this n dimensional for loop
Travis Oliphant (1:44:49.200)
with four loops, four, four statements.
Lex Fridman (1:44:51.240)
You just say, oh, big four dimensional array,
Travis Oliphant (1:44:53.600)
I'm gonna do this operation, this plus, this minus,
Lex Fridman (1:44:55.760)
this reduction, and you get this,
Travis Oliphant (1:44:57.680)
it's called vectorization in other areas,
Lex Fridman (1:44:59.560)
but you can basically think at a high level
Lex Fridman (1:45:01.440)
and get massive amounts of computation done
Lex Fridman (1:45:03.640)
with the added benefit of,
Travis Oliphant (1:45:06.200)
oh, it can be paralyzed easily.
Lex Fridman (1:45:08.040)
It can be put in parallel.
Travis Oliphant (1:45:09.040)
You don't have to think about that.
Lex Fridman (1:45:10.000)
In fact, it's worse to go decompose your,
Travis Oliphant (1:45:12.720)
you write the for loops
Lex Fridman (1:45:14.160)
and then try to infer parallelism from for loops.
Travis Oliphant (1:45:16.280)
That's actually a harder problem
Lex Fridman (1:45:17.600)
than to take the array problem
Lex Fridman (1:45:19.640)
and just automatically parallelize that problem.
Lex Fridman (1:45:22.040)
That's what, and so functions in NumPy
Travis Oliphant (1:45:25.320)
are called universal functions, ufuncs.
Lex Fridman (1:45:27.080)
So square root is an example of a ufunk.
Travis Oliphant (1:45:29.000)
There are others, sine, cosine, add, subtract.
Lex Fridman (1:45:32.400)
In fact, one of the first libraries to SciPy
Travis Oliphant (1:45:34.520)
was something called Special
Lex Fridman (1:45:35.520)
where I added Bessel functions
Lex Fridman (1:45:36.920)
and all these special functions that come up in physics
Lex Fridman (1:45:40.240)
and I added them as ufuncs so they could work on arrays.
Lex Fridman (1:45:43.040)
So I understood ufuncs very, very well
Lex Fridman (1:45:44.720)
from day one inside of numeric.
Travis Oliphant (1:45:45.960)
That was one of the things we tried to make better
Lex Fridman (1:45:47.320)
in NumPy was how do they work?
Lex Fridman (1:45:49.120)
Can they do broadcasting?
Lex Fridman (1:45:50.360)
What does broadcasting mean?
Lex Fridman (1:45:51.960)
But one of the problems is, okay,
Lex Fridman (1:45:54.600)
what do I do with a Python scaler?
Lex Fridman (1:45:57.320)
So what happens, the Python scaler gets broadcast
Lex Fridman (1:45:59.800)
to a zero dimensional array
Lex Fridman (1:46:01.320)
and then it goes through the whole same machinery
Lex Fridman (1:46:02.800)
as if it were a 10,000 dimensional array.
Lex Fridman (1:46:05.080)
And then it kind of unpacks the element
Lex Fridman (1:46:07.640)
and then does the addition.
Travis Oliphant (1:46:09.880)
That's not to mention the function it calls
Lex Fridman (1:46:12.600)
in the case of square root
Lex Fridman (1:46:13.640)
is just the clib square root, right?
Lex Fridman (1:46:15.960)
In some cases, like Python's power,
Travis Oliphant (1:46:18.160)
there's some optimizations they're doing
Lex Fridman (1:46:20.360)
that could be faster
Travis Oliphant (1:46:21.520)
than just calling this the clib square root.
Lex Fridman (1:46:23.760)
In the interpreter or in the?
Travis Oliphant (1:46:25.320)
No, in the C code, in the Python runtime.
Lex Fridman (1:46:27.640)
In the Python runtime, so they really optimize it
Lex Fridman (1:46:30.960)
and they have the freedom to do that
Lex Fridman (1:46:32.120)
because they don't have to worry about.
Travis Oliphant (1:46:32.960)
It's just a scaler.
Lex Fridman (1:46:34.080)
It's just a scaler.
Travis Oliphant (1:46:34.920)
Right, they don't have to worry about the fact
Lex Fridman (1:46:36.200)
that, oh, this could be an object with many pieces.
Travis Oliphant (1:46:39.360)
The ufunc machine is also generic
Lex Fridman (1:46:41.080)
in sense that typecasting and broadcasting,
Travis Oliphant (1:46:44.600)
broadcasting's idea of I'm gonna go,
Lex Fridman (1:46:46.160)
I have a zero dimensional array,
Travis Oliphant (1:46:47.360)
I have a scaler with a four dimensional array
Lex Fridman (1:46:49.240)
and I add them.
Travis Oliphant (1:46:50.480)
Oh, I have to kind of coerce the shape of this guy
Lex Fridman (1:46:54.640)
to make it work against the whole four dimensional array.
Lex Fridman (1:46:56.880)
So it's the idea of I can do a one dimensional array
Lex Fridman (1:46:59.680)
against a two dimensional array and have it make sense.
Travis Oliphant (1:47:02.200)
Well, that's what NumPy does is it challenges you
Lex Fridman (1:47:04.040)
to reformulate, rethink your problem
Travis Oliphant (1:47:07.040)
as a multi dimensional array problem
Lex Fridman (1:47:09.080)
versus move away from scalers completely.
Travis Oliphant (1:47:12.640)
Right, exactly, exactly.
Lex Fridman (1:47:14.240)
In fact, that's where some of the edge cases boundaries are
Travis Oliphant (1:47:16.680)
is that, well, they're still there
Lex Fridman (1:47:18.960)
and this is where array scalers are particular.
Lex Fridman (1:47:21.080)
So array scalers are particularly bad
Lex Fridman (1:47:23.120)
in the sense that they were written
Lex Fridman (1:47:24.360)
so that you could optimize the math on them,
Lex Fridman (1:47:26.840)
but that hasn't happened.
Lex Fridman (1:47:29.040)
And so their default is to coerce the array scaler
Lex Fridman (1:47:32.800)
to a zero dimensional array
Lex Fridman (1:47:33.760)
and then use the NumPy machinery.
Lex Fridman (1:47:36.000)
That's what, and you could specialize,
Lex Fridman (1:47:38.200)
but it doesn't happen all the time.
Lex Fridman (1:47:39.960)
So in fact, when we first wrote Numba,
Travis Oliphant (1:47:41.760)
we do comparisons and say, look, it's 1000X speed up.
Lex Fridman (1:47:45.720)
We were lying a little bit in the sense that,
Travis Oliphant (1:47:47.160)
well, first do the 40X slowdown
Lex Fridman (1:47:50.240)
of using the array scalers inside of a loop.
Travis Oliphant (1:47:52.280)
Cause if you used to use Python scalers,
Lex Fridman (1:47:53.560)
you'd already be 10 times faster.
Lex Fridman (1:47:56.200)
But then we would get a hundred times faster
Lex Fridman (1:47:58.080)
over that using just compilation.
Lex Fridman (1:48:00.320)
But what we do is compile the loop
Lex Fridman (1:48:01.600)
from out of the interpreter to machine code.
Lex Fridman (1:48:04.000)
And then that's always been the power of Python
Lex Fridman (1:48:06.280)
is this extensibility so that you can,
Travis Oliphant (1:48:08.280)
cause people say, oh, Python's so slow.
Lex Fridman (1:48:09.680)
Well, sure, if you do all your logic
Travis Oliphant (1:48:11.520)
in the runtime of the Python interpreter, yeah.
Lex Fridman (1:48:13.920)
But the power is that you don't have to.
Travis Oliphant (1:48:15.800)
You write all the logic,
Lex Fridman (1:48:17.260)
what you do in the high level is just high level logic.
Lex Fridman (1:48:19.860)
And the actual calls you're making
Lex Fridman (1:48:21.920)
could be on gigabyte arrays of data.
Lex Fridman (1:48:24.400)
And that's all done at compiled speeds.
Lex Fridman (1:48:26.880)
And the fact that integration is one can happen,
Lex Fridman (1:48:30.320)
but two is separable.
Lex Fridman (1:48:32.420)
That's one of the, the language like Julia says,
Travis Oliphant (1:48:35.240)
we're going to be all in one.
Lex Fridman (1:48:36.380)
You can do all of it together.
Lex Fridman (1:48:37.400)
And then there's, the jury's out, is that possible?
Lex Fridman (1:48:39.880)
I tend to think that you're going to,
Travis Oliphant (1:48:41.760)
there's separate concerns there.
Lex Fridman (1:48:43.280)
You want to precompile.
Travis Oliphant (1:48:44.320)
In fact, generally you will want to precompile your,
Lex Fridman (1:48:47.560)
some of your loops.
Travis Oliphant (1:48:48.400)
Like SciPy is a compilation step.
Lex Fridman (1:48:50.160)
To install SciPy, it takes about two hours.
Travis Oliphant (1:48:53.240)
If you have many machines,
Lex Fridman (1:48:54.080)
maybe you can get it down to one hour.
Lex Fridman (1:48:55.440)
But to compile those libraries takes about, takes a while.
Lex Fridman (1:48:57.920)
You don't want to do that at runtime.
Travis Oliphant (1:48:59.920)
You don't want to do that all the time.
Lex Fridman (1:49:00.800)
You want to have this precompiled binary available
Travis Oliphant (1:49:02.720)
that you're then just linking into.
Lex Fridman (1:49:04.400)
So there's real questions about the whole source code.
Travis Oliphant (1:49:09.040)
Code is, running binary code is more than source code.
Lex Fridman (1:49:11.840)
It's creating object code, it's the linker, it's the loader,
Travis Oliphant (1:49:14.480)
it's the how does that interpret it
Lex Fridman (1:49:15.600)
inside of virtual memory space.
Travis Oliphant (1:49:17.640)
There's a lot of details there that actually
Lex Fridman (1:49:19.160)
I didn't understand for a long time
Travis Oliphant (1:49:20.520)
until I read books on the topic.
Lex Fridman (1:49:23.000)
And it led to, the more you know, the better off you are
Lex Fridman (1:49:27.060)
and you can do more details,
Lex Fridman (1:49:28.440)
but sometimes it helps with abstractions too.
Travis Oliphant (1:49:31.280)
Well, the problem, as we mentioned earlier
Lex Fridman (1:49:33.480)
with abstractions is you kind of sometimes assume
Travis Oliphant (1:49:37.700)
that whoever implemented this thing
Lex Fridman (1:49:41.520)
had your case in mind and found the optimal solution.
Travis Oliphant (1:49:45.000)
Yes.
Lex Fridman (1:49:45.840)
Or like you assume certain things.
Travis Oliphant (1:49:47.320)
I mean, there's a lot of,
Lex Fridman (1:49:48.160)
Correct.
Travis Oliphant (1:49:49.000)
One of the really powerful things to me early on,
Lex Fridman (1:49:52.800)
I mean, it sounds silly to say, but with Python,
Travis Oliphant (1:49:55.480)
probably one of the reasons I fell in love with it
Lex Fridman (1:49:58.440)
is dictionaries.
Travis Oliphant (1:49:59.800)
Yes.
Lex Fridman (1:50:00.920)
So obviously probably most languages
Travis Oliphant (1:50:03.680)
have some mapping concept,
Lex Fridman (1:50:06.440)
but it felt like it was a first class citizen
Lex Fridman (1:50:09.040)
and it was just my brain was able to think in dictionaries.
Lex Fridman (1:50:12.200)
But then there's the thing that I guess I still use
Travis Oliphant (1:50:14.640)
to this day is order dictionaries
Lex Fridman (1:50:16.920)
because that seems like a more natural way
Travis Oliphant (1:50:20.120)
to construct dictionaries.
Lex Fridman (1:50:21.680)
Yeah.
Lex Fridman (1:50:22.520)
And from a computer science perspective,
Lex Fridman (1:50:23.720)
the running time cost is not that significant,
Lex Fridman (1:50:26.000)
but there's a lot of things to understand about dictionaries
Lex Fridman (1:50:30.400)
that the abstraction kind of
Travis Oliphant (1:50:33.800)
doesn't necessarily incentivize you to understand.
Lex Fridman (1:50:37.400)
Right, do you really understand the notion of a hash map
Lex Fridman (1:50:39.400)
and how the dictionary is implemented?
Lex Fridman (1:50:41.080)
But you're right.
Travis Oliphant (1:50:42.080)
Dictionaries are a good example
Lex Fridman (1:50:43.440)
of an abstraction that's powerful.
Lex Fridman (1:50:44.920)
And I agree with you.
Lex Fridman (1:50:46.000)
I agree, I love dictionaries too.
Travis Oliphant (1:50:47.800)
Took me a while to understand that once you do,
Lex Fridman (1:50:49.160)
you realize, oh, they're everywhere.
Lex Fridman (1:50:50.280)
And Python uses them everywhere too.
Lex Fridman (1:50:52.760)
Like it's actually constructed,
Travis Oliphant (1:50:54.240)
one of the foundational things is dictionaries
Lex Fridman (1:50:55.760)
and it does everything with dictionaries.
Lex Fridman (1:50:57.560)
So it is, it's powerful.
Lex Fridman (1:50:58.600)
Order dictionaries came later,
Lex Fridman (1:51:00.160)
but it is very, very powerful.
Lex Fridman (1:51:02.200)
It took me a little while coming
Travis Oliphant (1:51:03.400)
from just the array programming entirely
Lex Fridman (1:51:05.960)
to understand these other objects,
Travis Oliphant (1:51:07.360)
like dictionaries and lists and tuples and binary trees.
Lex Fridman (1:51:11.600)
Like I said, I wasn't a computer scientist,
Travis Oliphant (1:51:13.360)
I studied arrays first.
Lex Fridman (1:51:15.120)
And so I was very array centric.
Lex Fridman (1:51:16.800)
And you realize, oh, these others
Lex Fridman (1:51:17.960)
don't have purposes and value actually.
Travis Oliphant (1:51:21.200)
I agree.
Lex Fridman (1:51:22.040)
There's a friendliness about,
Travis Oliphant (1:51:24.320)
like one way to think about arrays
Lex Fridman (1:51:26.760)
is arrays are just like full of numbers,
Lex Fridman (1:51:31.920)
but to make them accessible to humans
Lex Fridman (1:51:35.000)
and make them less error prone to human users,
Travis Oliphant (1:51:38.700)
sometimes you want to attach names,
Lex Fridman (1:51:41.480)
human interpretable names
Travis Oliphant (1:51:43.120)
that are sticky to those arrays.
Lex Fridman (1:51:44.720)
So that's how you start to think about dictionaries
Travis Oliphant (1:51:47.160)
is you start to convert numbers
Lex Fridman (1:51:50.520)
into something that's human interpretable.
Lex Fridman (1:51:52.120)
And that's actually the tension I've had with NumPy
Lex Fridman (1:51:55.320)
because I've built so much tooling
Travis Oliphant (1:51:58.160)
around human interpretability
Lex Fridman (1:52:02.320)
and also protecting me from a year later
Travis Oliphant (1:52:05.680)
not making the mistakes by being,
Lex Fridman (1:52:07.960)
I wanted to force myself to use English versus numbers.
Travis Oliphant (1:52:12.880)
Yes, so there's a project called Labeled Arrays.
Lex Fridman (1:52:15.680)
Like very early it was recognized that,
Travis Oliphant (1:52:18.040)
oh, we're indexing NumPy with just numbers,
Lex Fridman (1:52:21.320)
all the columns and particularly the dimensions.
Travis Oliphant (1:52:23.640)
I mean, if you have an image,
Lex Fridman (1:52:25.520)
you don't necessarily need to label each column or row,
Lex Fridman (1:52:27.680)
but if you have a lot of images
Lex Fridman (1:52:29.160)
or you have another dimension,
Travis Oliphant (1:52:30.440)
you'd at least like to label the dimension
Lex Fridman (1:52:31.640)
as this is X, this is Y, this is Z,
Travis Oliphant (1:52:33.120)
or this is give us some human meaning
Lex Fridman (1:52:34.640)
or some domain specific meaning.
Travis Oliphant (1:52:36.760)
That was one of the impetuses for Pandas actually
Lex Fridman (1:52:39.680)
was just, oh, we do need to label these things.
Lex Fridman (1:52:43.040)
And Label Array was an attempt to add
Lex Fridman (1:52:45.240)
that like a lighter weight version of that.
Lex Fridman (1:52:47.680)
And there's been, like, that's an example of something
Lex Fridman (1:52:49.360)
I think NumPy could add, could be added to NumPy,
Lex Fridman (1:52:53.080)
but one of the challenges again, how do you fund this?
Lex Fridman (1:52:55.000)
Like I said, one of the tragedies I think is that,
Lex Fridman (1:52:58.280)
so I never had the chance to,
Lex Fridman (1:53:00.240)
I was never paid to work on NumPy, right?
Lex Fridman (1:53:02.360)
So I've always just done it in my spare time,
Lex Fridman (1:53:04.400)
always taken from one thing,
Travis Oliphant (1:53:05.880)
taken from another thing to do it.
Lex Fridman (1:53:07.920)
And at the time, I mean, today,
Travis Oliphant (1:53:09.800)
it would be the wrong day and today,
Lex Fridman (1:53:11.000)
like paying me to work on NumPy now
Travis Oliphant (1:53:12.160)
would not be a good use of effort,
Lex Fridman (1:53:13.480)
but we are finally at Quansight Labs,
Travis Oliphant (1:53:16.640)
I'm actually paying people to work on NumPy and SciPy,
Lex Fridman (1:53:19.440)
which is I'm thrilled with, I'm excited by.
Travis Oliphant (1:53:22.000)
I've wanted to do that.
Lex Fridman (1:53:22.840)
That's what I always wanted to do from day one.
Travis Oliphant (1:53:24.280)
It just took me a while to figure out a mechanism to do that.
Lex Fridman (1:53:27.640)
Even like in the university setting,
Travis Oliphant (1:53:29.680)
respecting that, like pushing students,
Lex Fridman (1:53:33.840)
young minds and young graduate students to contribute
Lex Fridman (1:53:38.000)
and then figuring out financial mechanisms
Lex Fridman (1:53:41.160)
that enable them to contribute
Lex Fridman (1:53:43.280)
and then sort of reward them
Lex Fridman (1:53:45.280)
for their innovative scientific journey,
Travis Oliphant (1:53:48.000)
that would be nice.
Lex Fridman (1:53:49.160)
But then also just a better allocation of resources.
Travis Oliphant (1:53:53.360)
It's 20 year anniversary since 9.11
Lex Fridman (1:53:55.760)
and I was just looking, we spent over $6 trillion
Travis Oliphant (1:53:59.240)
in the Middle East after 9.11 in the various efforts there.
Lex Fridman (1:54:04.560)
And sort of to put politics and all that aside,
Travis Oliphant (1:54:08.040)
it's just, you think about the education system,
Lex Fridman (1:54:10.120)
all the other ways we could have
Travis Oliphant (1:54:11.320)
possibly allocated that money.
Lex Fridman (1:54:14.280)
To me, to take it back,
Travis Oliphant (1:54:16.560)
the amount of impact you would have
Lex Fridman (1:54:21.200)
by allocating a little bit of money to the programmers
Travis Oliphant (1:54:26.360)
that build the tools that run the world is fascinating.
Lex Fridman (1:54:30.600)
It is.
Travis Oliphant (1:54:32.600)
I don't know, I think, again,
Lex Fridman (1:54:34.920)
there is some aspect to being broke
Travis Oliphant (1:54:38.040)
as somewhat of a feature, not a bug,
Lex Fridman (1:54:40.240)
that you make sure that you're valued.
Lex Fridman (1:54:42.320)
But you can still manage that.
Lex Fridman (1:54:43.440)
Right, no, I know.
Lex Fridman (1:54:45.320)
But I don't think that's a big part.
Lex Fridman (1:54:47.040)
So it's like, I think you can have enough money
Lex Fridman (1:54:50.720)
and actually be wealthy while maintaining your values.
Lex Fridman (1:54:53.880)
Agreed, agreed.
Travis Oliphant (1:54:55.520)
There's an old adage that nations that trade together
Lex Fridman (1:54:57.800)
don't go to war together.
Travis Oliphant (1:54:59.440)
I've often thought about nations that code together.
Lex Fridman (1:55:01.680)
Yeah, code together.
Lex Fridman (1:55:02.520)
Right?
Lex Fridman (1:55:03.360)
I love that.
Travis Oliphant (1:55:04.200)
Because one of the things I love about open source
Lex Fridman (1:55:05.360)
is it's global, it's multinational.
Travis Oliphant (1:55:07.880)
Like there aren't national boundaries.
Lex Fridman (1:55:09.160)
One of the challenges with business and open source
Travis Oliphant (1:55:10.760)
is the fact that, well, business is national.
Lex Fridman (1:55:12.800)
Like businesses are entities
Lex Fridman (1:55:13.960)
that are recognized in legal jurisdictions, right?
Lex Fridman (1:55:16.240)
And have laws that are respected in those jurisdictions
Lex Fridman (1:55:18.280)
and hiring, and yet the open source ecosystem
Lex Fridman (1:55:21.320)
is not, it's not there.
Travis Oliphant (1:55:23.040)
Like currently, one of the problems we're solving
Lex Fridman (1:55:25.080)
is hiring people all over the world, right?
Travis Oliphant (1:55:27.200)
Because we, it's a global effort.
Lex Fridman (1:55:29.600)
And I've had the chance to work, and I've loved the chance.
Travis Oliphant (1:55:31.920)
I've never been to like Iran,
Lex Fridman (1:55:35.280)
but I once had a conference
Lex Fridman (1:55:36.800)
where I was able to talk to people there, right?
Lex Fridman (1:55:38.640)
And talk to folks in Pakistan.
Travis Oliphant (1:55:40.920)
I've never been there, but we had a call
Lex Fridman (1:55:44.080)
where there were people there,
Travis Oliphant (1:55:45.320)
like just scientists and normal people.
Lex Fridman (1:55:47.600)
And there's a certain amount of humanizing, right?
Travis Oliphant (1:55:52.640)
That gets away from the,
Lex Fridman (1:55:54.360)
like we often get the memes of society
Travis Oliphant (1:55:56.200)
that bubble up and get discussed,
Lex Fridman (1:55:58.560)
but the memes are not even an accurate reflection
Travis Oliphant (1:56:00.760)
of the reality of what people are.
Lex Fridman (1:56:02.400)
Well, if you look at the major power centers
Travis Oliphant (1:56:05.440)
that are leading to something like cyber war
Lex Fridman (1:56:08.240)
in the next few decades,
Travis Oliphant (1:56:10.000)
it's the United States, it's Russia, and China.
Lex Fridman (1:56:13.320)
And those three countries in particular
Travis Oliphant (1:56:16.080)
have incredible developers.
Lex Fridman (1:56:18.240)
So if they work together, I think that's one way,
Travis Oliphant (1:56:21.360)
the politicians can do their stupid bickering,
Lex Fridman (1:56:23.360)
but like there's a layer of infrastructure, of humanity.
Travis Oliphant (1:56:27.360)
If they collaborate together,
Lex Fridman (1:56:29.400)
that I think can prevent major military conflict,
Travis Oliphant (1:56:34.080)
which would, I think most likely happen at the cyber level
Lex Fridman (1:56:37.840)
versus the actual hot war level.
Travis Oliphant (1:56:39.800)
You're right.
Lex Fridman (1:56:40.640)
You know, I think that's a good prediction.
Travis Oliphant (1:56:43.320)
Nations that code together don't go to war together.
Lex Fridman (1:56:46.560)
Don't go to war together.
Lex Fridman (1:56:47.880)
That's a hope, right?
Lex Fridman (1:56:48.720)
That's one of the philosophical hopes, but yeah.
Lex Fridman (1:56:52.360)
So you mentioned the project of Numba,
Lex Fridman (1:56:55.640)
which is fascinating.
Lex Fridman (1:56:58.520)
So from the early days,
Lex Fridman (1:56:59.720)
there was kind of a pushback on Python that it's not fast.
Travis Oliphant (1:57:04.560)
You know, you see C plus,
Lex Fridman (1:57:05.520)
if you wanna write something that's fast,
Travis Oliphant (1:57:06.920)
you use C plus plus.
Lex Fridman (1:57:08.240)
If you wanna write something that's usable and friendly,
Lex Fridman (1:57:11.320)
but slow, you use Python.
Lex Fridman (1:57:13.240)
And so what is Numba?
Lex Fridman (1:57:15.840)
What is its goal?
Lex Fridman (1:57:16.800)
How does it work?
Travis Oliphant (1:57:17.640)
Great, yeah.
Lex Fridman (1:57:18.480)
Yes, that's what the argument.
Lex Fridman (1:57:19.760)
And the reality was people would write high level coding
Lex Fridman (1:57:22.440)
and use compiled code,
Lex Fridman (1:57:23.440)
but there's still user stories, use cases,
Lex Fridman (1:57:25.240)
where you want to write Python,
Lex Fridman (1:57:27.440)
but then have it still be fast.
Lex Fridman (1:57:28.880)
You still need to write a for loop.
Travis Oliphant (1:57:30.720)
Like before Numba, it was always don't write a for loop.
Lex Fridman (1:57:33.920)
You know, write it in a vectorized way,
Travis Oliphant (1:57:35.800)
you know, put it in an array.
Lex Fridman (1:57:37.240)
And often that can make a memory trade off.
Travis Oliphant (1:57:39.640)
Like quite often you can do it,
Lex Fridman (1:57:41.080)
but then you make maybe use more memory
Travis Oliphant (1:57:42.720)
because you have to build this array of data
Lex Fridman (1:57:44.920)
that you don't necessarily need all the time.
Lex Fridman (1:57:46.680)
So Numba was, it started from a desire to have
Lex Fridman (1:57:50.960)
kind of a vectorized that worked.
Travis Oliphant (1:57:52.840)
A vectorized was a tool in NumPy, it was released.
Lex Fridman (1:57:56.260)
You give it a Python function
Lex Fridman (1:57:57.800)
and it gave you a universal function,
Lex Fridman (1:57:59.680)
a ufunc that would work on arrays.
Lex Fridman (1:58:01.120)
So you get the function that just worked on a scaler.
Lex Fridman (1:58:03.640)
Like you could make a,
Travis Oliphant (1:58:04.880)
like the classic case was a simple function
Lex Fridman (1:58:07.280)
that an if then statement in it.
Lex Fridman (1:58:08.280)
So sine X over X function, sync function.
Lex Fridman (1:58:12.160)
If X equals zero, return one, otherwise do sine X over X.
Travis Oliphant (1:58:16.080)
The challenge is you don't want that loop
Lex Fridman (1:58:17.760)
peg one in Python.
Lex Fridman (1:58:18.720)
So you want a compiled version of that,
Lex Fridman (1:58:21.480)
but the ufunc, the vectorized in NumPy
Travis Oliphant (1:58:23.160)
would just give you a Python function.
Lex Fridman (1:58:24.840)
So it would take the array of numbers
Lex Fridman (1:58:26.720)
and at every call do a loop back into Python.
Lex Fridman (1:58:29.560)
So it was very slow.
Travis Oliphant (1:58:30.440)
It gave you the appearance of a ufunc,
Lex Fridman (1:58:31.800)
but it was very slow.
Lex Fridman (1:58:32.840)
So I always wanted a vectorized
Lex Fridman (1:58:34.600)
that would take that Python scaler function
Lex Fridman (1:58:36.280)
and produce a ufunc working on binary native code.
Lex Fridman (1:58:39.480)
So in fact, I had somebody work on that with PyPy
Lex Fridman (1:58:42.800)
and see if PyPy could be used to produce a ufunc like that
Lex Fridman (1:58:45.640)
early on in 2009 or something like that, 2010.
Travis Oliphant (1:58:50.560)
They didn't work that well.
Lex Fridman (1:58:51.480)
It was kind of pretty bulky.
Lex Fridman (1:58:52.880)
But in 2012, Peter and I had just started Anaconda.
Lex Fridman (1:58:57.000)
We had, I just, I'd learned to raise money.
Travis Oliphant (1:59:00.680)
That's a different topic,
Lex Fridman (1:59:01.640)
but I'd learned to raise money from friends, family,
Lex Fridman (1:59:04.640)
and fools, as they say.
Lex Fridman (1:59:05.960)
And.
Travis Oliphant (1:59:06.800)
That's a good line.
Lex Fridman (1:59:09.840)
Oh, that's a good line.
Travis Oliphant (1:59:11.200)
But, so we were trying to do something.
Lex Fridman (1:59:13.440)
We were trying to change the world.
Travis Oliphant (1:59:14.680)
Peter and I are super ambitious.
Lex Fridman (1:59:15.840)
We wanted to make array computing
Lex Fridman (1:59:17.600)
and we had ideas for really what's still,
Lex Fridman (1:59:19.480)
it's still the energy right now.
Lex Fridman (1:59:20.640)
How do you do at scale data science?
Lex Fridman (1:59:23.520)
And we had a bunch of ideas there, but one of them,
Travis Oliphant (1:59:25.840)
I had just talked to people about LLVM
Lex Fridman (1:59:27.720)
and I was like, there's a way to do this.
Travis Oliphant (1:59:30.040)
I just, I went, I heard about my friend Dave Beasley
Lex Fridman (1:59:32.600)
at a compiler course.
Lex Fridman (1:59:33.920)
So I was looking at compilers like,
Lex Fridman (1:59:35.560)
and I realized, oh, this is what you do.
Lex Fridman (1:59:37.640)
And so I wrote a version of Numba
Lex Fridman (1:59:40.040)
that just basically mapped Python bytecode to LLVM.
Travis Oliphant (1:59:45.640)
Nice.
Lex Fridman (1:59:46.480)
Right, so, and the first version is like, this works
Lex Fridman (1:59:49.200)
and it produces code that's fast.
Lex Fridman (1:59:50.840)
This is cool for, you know,
Travis Oliphant (1:59:51.960)
obviously a reduced subset of Python.
Lex Fridman (1:59:53.440)
I didn't support all the Python language.
Travis Oliphant (1:59:55.360)
There had been efforts to speed up Python in the past,
Lex Fridman (1:59:57.480)
but those efforts were, I would say,
Travis Oliphant (1:59:59.200)
not from the array computing perspective,
Lex Fridman (20:02.540)
that I would say APLJ was another version that was,
Lex Fridman (20:06.580)
what it did is not have the glyphs,
Lex Fridman (20:08.340)
just have short characters,
Lex Fridman (20:09.700)
but still a Latin keyboard could type them.
Lex Fridman (20:11.740)
And then numeric inherited from that
Travis Oliphant (20:14.540)
in terms of let's add arrays plus broadcasting
Lex Fridman (20:17.660)
plus methods, reduction,
Travis Oliphant (20:19.700)
even some of the language like rank is a concept
Lex Fridman (20:21.780)
that was in Python and is still in Python
Lex Fridman (20:24.660)
for the number of dimensions, right?
Lex Fridman (20:27.180)
That's different than say the rank of a matrix
Travis Oliphant (20:29.460)
which people think of as well.
Lex Fridman (20:31.140)
So it came from that tradition,
Lex Fridman (20:33.060)
but NumPy is a very pragmatic, practical tool.
Lex Fridman (20:37.980)
NumPy inherited from numeric
Lex Fridman (20:39.260)
and we can get to where NumPy came from
Lex Fridman (20:40.820)
which is the current array,
Travis Oliphant (20:43.340)
at least current as of 2015, 2017.
Lex Fridman (20:46.100)
Now there's a ton of them over the past two or three years.
Travis Oliphant (20:49.320)
We can get into that too.
Lex Fridman (20:50.320)
So if we just linger on the early days
Lex Fridman (20:52.780)
of what was your favorite feature of Python?
Lex Fridman (20:56.220)
Do you remember like what?
Lex Fridman (20:58.020)
So it's so interesting to linger on like the,
Lex Fridman (21:02.260)
what really makes you connect with a language?
Travis Oliphant (21:06.300)
I'm not sure it's obvious to introspect that.
Lex Fridman (21:09.400)
No, it isn't.
Lex Fridman (21:10.240)
And I've thought about that at some length.
Lex Fridman (21:12.860)
I think definitely the fact that I could read it later,
Travis Oliphant (21:16.460)
that I could use it productively
Lex Fridman (21:18.140)
without becoming an expert.
Travis Oliphant (21:19.820)
Other language I had to put more effort into.
Lex Fridman (21:22.180)
That's like an empirical observation.
Travis Oliphant (21:23.940)
Like you're not analyzing any one aspect of the language.
Lex Fridman (21:26.500)
It just seems time after time when you look back,
Travis Oliphant (21:29.460)
it's somehow readable.
Lex Fridman (21:30.580)
It's somehow readable.
Travis Oliphant (21:31.420)
Then it was sort of, I could take executable English
Lex Fridman (21:35.380)
and translate it to Python more easily.
Travis Oliphant (21:36.820)
Like I didn't have to go, there was no translation layer.
Lex Fridman (21:39.760)
As an engineer or as a scientist,
Travis Oliphant (21:41.580)
I could think about what I wanted to do.
Lex Fridman (21:43.240)
And then the syntax wasn't that far behind it, right?
Travis Oliphant (21:46.780)
Now there are some warts there still.
Lex Fridman (21:49.220)
It wasn't perfect.
Travis Oliphant (21:50.600)
Like there's some areas where I'm like,
Lex Fridman (21:51.440)
ah, it'd be better if this were different
Travis Oliphant (21:52.820)
or if this were different.
Lex Fridman (21:54.380)
Some of those things got added to the language too.
Travis Oliphant (21:56.580)
I was really grateful for some of the early pioneers
Lex Fridman (21:58.580)
in the Python ecosystem back,
Travis Oliphant (22:00.220)
because Python got written in 91.
Lex Fridman (22:01.900)
That's when the first version came out.
Lex Fridman (22:03.140)
But Guido was very open to users.
Lex Fridman (22:06.540)
And one of the sets of users were people like Jim Huganen
Lex Fridman (22:08.660)
and David Asher and Paul Dubois and Conrad Hinson.
Lex Fridman (22:13.460)
These were people that were on the main list.
Lex Fridman (22:15.380)
And they were just asking for things like,
Lex Fridman (22:16.860)
hey, we really should have complex numbers in this language.
Lex Fridman (22:19.220)
So let's, you know, there's a J, there's a one J, right?
Lex Fridman (22:22.540)
And the fact that they went the engineering route of J
Travis Oliphant (22:24.340)
is interesting.
Lex Fridman (22:26.660)
I don't think that's entirely favoring engineers.
Travis Oliphant (22:28.620)
I think it's because I is so often used
Lex Fridman (22:30.460)
as the index of a for loop.
Lex Fridman (22:32.100)
So I think that's actually why.
Lex Fridman (22:34.260)
Probably, I mean, there's a pragmatic aspect.
Lex Fridman (22:36.740)
But the fact that complex numbers were there, I love that.
Lex Fridman (22:39.100)
The fact that I could write in the array constructs
Lex Fridman (22:41.460)
and that reduction was there,
Lex Fridman (22:42.820)
very simple to write summations and broadcasting was there.
Travis Oliphant (22:46.540)
I could do addition of whole arrays.
Lex Fridman (22:49.440)
So that was cool.
Travis Oliphant (22:50.380)
Those are some things I loved about it.
Lex Fridman (22:52.660)
I don't know what to start talking to you about
Travis Oliphant (22:54.820)
because you've created so many incredible projects
Lex Fridman (22:57.860)
that basically changed the whole landscape of programming.
Lex Fridman (23:00.180)
But okay, let's start with,
Lex Fridman (23:02.380)
let's go chronologically with SciPy.
Lex Fridman (23:06.060)
You created SciPy over two decades ago now?
Lex Fridman (23:09.100)
Yes, yes, I love to talk about SciPy.
Travis Oliphant (23:11.140)
SciPy was really my baby.
Lex Fridman (23:12.980)
What is it?
Lex Fridman (23:14.420)
What was its goal?
Lex Fridman (23:15.420)
What is its goal?
Lex Fridman (23:16.420)
How does it work?
Lex Fridman (23:17.260)
Yeah, fantastic.
Lex Fridman (23:18.100)
So SciPy was effectively, here I am using Python
Lex Fridman (23:21.580)
to do stuff that I previously used MATLAB to use.
Lex Fridman (23:24.980)
And I was using numeric, which is an array library
Lex Fridman (23:26.860)
that made a lot of it possible.
Lex Fridman (23:28.300)
But there's things that were missing.
Lex Fridman (23:29.900)
Like I didn't have an ordinary differential equation solver
Lex Fridman (23:32.100)
I could just call, right?
Lex Fridman (23:33.460)
I didn't have integration.
Travis Oliphant (23:35.260)
Hey, I wanted to integrate this function.
Lex Fridman (23:37.180)
Okay, well, I don't have just a function
Travis Oliphant (23:38.780)
I can call to do that.
Lex Fridman (23:40.580)
These are things I remember being critical things
Travis Oliphant (23:42.540)
that I was missing.
Lex Fridman (23:43.700)
Optimization.
Travis Oliphant (23:44.580)
I just wanna pass a function to an optimizer
Lex Fridman (23:46.780)
and have it tell me what the optimal value is.
Travis Oliphant (23:50.100)
Those are things I'm like, well,
Lex Fridman (23:51.100)
why don't we just write a library that adds these tools?
Lex Fridman (23:54.340)
And I started to post on the mailing list
Lex Fridman (23:55.740)
and there'd previously been, people have discussed,
Travis Oliphant (23:58.100)
I remember Conrad Henson saying,
Lex Fridman (23:59.140)
wouldn't it be great if we had this optimizer library
Travis Oliphant (24:00.980)
or David Ashwood say this stuff.
Lex Fridman (24:02.580)
And I'm a ambitious, ambitious is the wrong word,
Travis Oliphant (24:06.940)
an eager and probably more time than sense.
Lex Fridman (24:11.340)
I was a poor graduate student.
Travis Oliphant (24:13.620)
My wife thinks I'm working on my PhD and I am,
Lex Fridman (24:15.860)
but part of the PhD that I loved
Travis Oliphant (24:17.220)
was the fact that it's exploratory.
Lex Fridman (24:19.180)
You're not just taking orders,
Travis Oliphant (24:21.540)
fulfilling a list of things to do,
Lex Fridman (24:23.500)
you're trying to figure out what to do.
Lex Fridman (24:25.740)
And so I thought, well, I'm running tools
Lex Fridman (24:27.900)
for my own use and a PhD,
Lex Fridman (24:29.140)
so I'll just start this project.
Lex Fridman (24:32.140)
And so in 99, 98 was when I first started
Travis Oliphant (24:34.940)
to write libraries for Python.
Lex Fridman (24:36.620)
Definitely when I fell in love with Python 98,
Travis Oliphant (24:38.260)
I thought, oh, well, there's just a few things missing.
Lex Fridman (24:39.740)
Like, oh, I need a reader to read DICOM files.
Travis Oliphant (24:42.700)
I was in medical imaging and DICOM was a format
Lex Fridman (24:44.580)
that I want to be able to load that into Python.
Lex Fridman (24:46.940)
Okay, how do I write a reader for that?
Lex Fridman (24:48.180)
So I wrote something called, it was an IO package, right?
Lex Fridman (24:51.700)
And that was my very first extension module, which is C.
Lex Fridman (24:55.140)
So I wrote C code to extend Python
Lex Fridman (24:57.060)
so that in Python I could write things more easily.
Lex Fridman (24:59.660)
That combination kind of hooked me.
Travis Oliphant (25:02.260)
It was the idea that I could,
Lex Fridman (25:03.300)
here's this powerful tool I can use as a scripting language
Lex Fridman (25:05.700)
and a high level language to think about,
Lex Fridman (25:07.460)
but that I can extend easily, easily in C,
Travis Oliphant (25:11.420)
easily for me because I knew enough C.
Lex Fridman (25:13.780)
And then Guido had written a link.
Travis Oliphant (25:15.260)
I mean, the only, the hard part of extending Python
Lex Fridman (25:17.220)
was something called the way memory management networks,
Lex Fridman (25:19.500)
and you have to do reference counting.
Lex Fridman (25:21.060)
And so there's a tracking of reference counting
Travis Oliphant (25:23.820)
you have to do manually.
Lex Fridman (25:25.500)
And if you don't, you have memory leaks.
Lex Fridman (25:27.500)
And so that's hard.
Lex Fridman (25:29.020)
Plus then C, you know, it's just much more,
Travis Oliphant (25:31.020)
you have to put more effort into it.
Lex Fridman (25:32.180)
It's not just, I have to now think about pointers
Lex Fridman (25:34.700)
and I have to think about stuff that is different.
Lex Fridman (25:37.620)
I have to kind of,
Travis Oliphant (25:38.460)
you're like putting a new cartridge in your brain.
Lex Fridman (25:40.620)
Like, okay, I'm thinking about MRI.
Travis Oliphant (25:42.380)
Now I'm thinking about programming.
Lex Fridman (25:43.580)
And there are distinct modules
Travis Oliphant (25:45.340)
you end up having to think about.
Lex Fridman (25:46.620)
So it's harder.
Lex Fridman (25:47.460)
And when I was just in Python,
Lex Fridman (25:48.300)
I could just think about MRI and high level writing,
Lex Fridman (25:51.500)
but I could do that.
Lex Fridman (25:52.340)
And that kind of, I liked it.
Travis Oliphant (25:54.020)
I found that to be enjoyable and fun.
Lex Fridman (25:55.780)
And so I ended up, oh,
Travis Oliphant (25:57.220)
well, let me just add a bunch of stuff to Python
Lex Fridman (25:59.020)
to do integration.
Travis Oliphant (26:00.580)
Well, and the cool thing is,
Lex Fridman (26:01.660)
is that the power of the internet,
Travis Oliphant (26:03.060)
just looking around and I found,
Lex Fridman (26:04.300)
oh, there's this NetLive,
Travis Oliphant (26:06.300)
which has hundreds of 4chan routines
Lex Fridman (26:08.860)
that people have written in the 60s and the 70s and the 80s
Travis Oliphant (26:12.260)
in 4chan 77, fortunately, it wasn't 4chan 16.
Lex Fridman (26:14.900)
So it had been ported to 4chan 77.
Lex Fridman (26:18.100)
And 4chan 77 is actually a really great language.
Lex Fridman (26:21.660)
4chan 90 probably is my favorite 4chan
Travis Oliphant (26:24.100)
because it's also, it's got complex numbers,
Lex Fridman (26:26.100)
got arrays and it's pretty high level.
Travis Oliphant (26:27.700)
Now, the problem with it
Lex Fridman (26:28.980)
is you'd never want to write a program in 4chan 90
Travis Oliphant (26:31.020)
or 4chan 77,
Lex Fridman (26:32.260)
but it's totally fine to write a subroutine in, right?
Lex Fridman (26:34.900)
And so, and then 4chan kind of got a little off course
Lex Fridman (26:37.660)
when they tried to compete with C++.
Lex Fridman (26:39.060)
But at the time,
Lex Fridman (26:40.580)
I just want libraries to do something like,
Travis Oliphant (26:42.340)
oh, here's an ordinary differential equation.
Lex Fridman (26:43.940)
Here's integration.
Travis Oliphant (26:44.900)
Here's runge cut integration.
Lex Fridman (26:46.780)
Already done.
Travis Oliphant (26:47.620)
I don't have to think about that algorithm.
Lex Fridman (26:48.780)
I mean, you could,
Lex Fridman (26:49.620)
but it's nice to have somebody who's already done one
Lex Fridman (26:51.020)
and tested it.
Lex Fridman (26:51.860)
And so I sort of started this journey in 98, really.
Lex Fridman (26:55.060)
If you look back at the mailing list,
Travis Oliphant (26:55.980)
there's sort of this productive era of me
Lex Fridman (26:59.660)
writing an extension module
Travis Oliphant (27:01.100)
to connect runge cut integration to Python
Lex Fridman (27:04.580)
and making an ordinary differential equation solver.
Lex Fridman (27:06.660)
And then releasing that as a package.
Lex Fridman (27:09.140)
So we could call ODE pack, I think I called it then.
Travis Oliphant (27:11.820)
Quad pack.
Lex Fridman (27:12.660)
And then I just made these packages.
Travis Oliphant (27:14.420)
Eventually that became multipack
Lex Fridman (27:16.260)
because they're originally modular.
Travis Oliphant (27:17.580)
You can install them separately.
Lex Fridman (27:19.140)
But a massive problem in Python
Travis Oliphant (27:20.700)
was actually just getting your stuff installed.
Lex Fridman (27:23.420)
At the time, releasing software for me,
Lex Fridman (27:25.820)
like today it's people think, what does that mean?
Lex Fridman (27:27.580)
Well, then it meant some poorly written webpage.
Travis Oliphant (27:30.780)
I had some bad webpage up and I put a tarball,
Lex Fridman (27:33.100)
just a GZIP tarball of source code.
Travis Oliphant (27:35.780)
That was the release.
Lex Fridman (27:37.140)
But okay, can we just stand that?
Travis Oliphant (27:39.180)
Because the community aspect
Lex Fridman (27:43.060)
of creating the package and sharing that, that's rare.
Travis Oliphant (27:47.820)
That, to have, to both have the, at that time,
Lex Fridman (27:50.940)
so like the raw.
Travis Oliphant (27:51.780)
Yeah, it was pretty early, yeah.
Lex Fridman (27:52.740)
Oh, well, not rare.
Travis Oliphant (27:54.660)
Maybe you can correct me on this,
Lex Fridman (27:57.020)
but it seems like in the scientific community,
Lex Fridman (27:59.660)
so many people, you were basically solving the problems
Lex Fridman (28:02.420)
you needed to solve to process the particular application,
Travis Oliphant (28:07.100)
the data that you need.
Lex Fridman (28:08.540)
And to also have the mind
Travis Oliphant (28:10.900)
that I'm going to make this usable for others, that's.
Lex Fridman (28:15.340)
I would say I was inspired.
Travis Oliphant (28:16.500)
I'd been inspired by Linux,
Lex Fridman (28:18.060)
been inspired by Linus and him making his code available.
Lex Fridman (28:21.820)
And I was starting to use Linux at the time.
Lex Fridman (28:23.260)
And I went, this is cool.
Lex Fridman (28:24.460)
So I'd kind of been previously primed that way.
Lex Fridman (28:27.060)
And generally I was into science
Travis Oliphant (28:29.180)
because I liked the sharing notion.
Lex Fridman (28:30.980)
I liked the idea of, hey, let's,
Travis Oliphant (28:32.660)
if collectively we build knowledge and share it,
Lex Fridman (28:34.780)
we can all be better off.
Travis Oliphant (28:35.740)
Okay, so you want to energize by that idea.
Lex Fridman (28:37.420)
So I was energized by that idea already, right?
Lex Fridman (28:39.540)
And I can't deny that I was.
Lex Fridman (28:40.940)
I'm sort of had this very,
Travis Oliphant (28:42.900)
I liked that part of science, that part of sharing.
Lex Fridman (28:45.700)
And then all of a sudden, oh, wait, here's something.
Lex Fridman (28:47.300)
And here's something I could do.
Lex Fridman (28:49.940)
And then I slowly over years learned how to share better
Lex Fridman (28:52.780)
so that you could actually engage more people faster.
Lex Fridman (28:55.100)
One of the key things was actually giving people a binary
Lex Fridman (28:57.100)
they could install, right?
Lex Fridman (28:58.980)
So that it wasn't just your source code, good luck.
Travis Oliphant (29:01.460)
Compile this and then.
Lex Fridman (29:02.660)
It's compiled, ready to install, just, you know.
Lex Fridman (29:05.180)
So in fact, a lot of the journey from 98,
Lex Fridman (29:07.380)
even through 2012 when I started Anaconda was about that.
Travis Oliphant (29:10.780)
Like it's why, you know, it's really the key
Lex Fridman (29:13.260)
as to why a scientist with dreams of doing MRI research
Travis Oliphant (29:17.460)
ended up starting a software company
Lex Fridman (29:19.500)
that installs software.
Travis Oliphant (29:22.260)
I work with a few folks now that don't program
Lex Fridman (29:26.700)
like on the creative side and the video side,
Travis Oliphant (29:28.580)
the audio side.
Lex Fridman (29:29.620)
And because my whole life is running on scripts,
Travis Oliphant (29:32.500)
I have to try to get them,
Lex Fridman (29:34.020)
I'm having all the task of teaching them
Lex Fridman (29:35.900)
how to do Python enough to run the scripts.
Lex Fridman (29:39.220)
And so I've been actually facing this,
Travis Oliphant (29:40.820)
whether it's Anaconda or some with the task of
Lex Fridman (29:44.220)
how do I minimally explain basically to my mom
Lex Fridman (29:46.780)
how to write a Python script.
Lex Fridman (29:48.900)
And it's an interesting challenge.
Travis Oliphant (29:50.500)
I have to, it's a to do item for me to figure out like,
Lex Fridman (29:53.020)
what is the minimal amount of information I have to teach?
Lex Fridman (29:56.340)
What are the tools you use that one, you enjoy it,
Lex Fridman (29:59.700)
two, you're effective at it.
Travis Oliphant (2:00:00.840)
not from the perspective of wanting to produce
Lex Fridman (2:00:02.160)
a vectorized improvement.
Travis Oliphant (2:00:03.560)
They were from the perspective of speeding up
Lex Fridman (2:00:05.120)
the runtime of Python, which is fundamentally hard
Travis Oliphant (2:00:07.520)
because Python allows for some constructs
Lex Fridman (2:00:10.520)
that aren't, you can't speed up.
Travis Oliphant (2:00:12.160)
Like it's this generic, you know, when it does this variable.
Lex Fridman (2:00:15.560)
So I, from the start, did not try to replicate
Travis Oliphant (2:00:17.720)
Python's semantics entirely.
Lex Fridman (2:00:20.280)
I said, I'm gonna take a subset of the Python syntax
Lex Fridman (2:00:23.000)
and let people write syntax in Python,
Lex Fridman (2:00:25.080)
but it's kind of a new language really.
Lex Fridman (2:00:27.440)
So it's almost like four loops, like focusing on four loops.
Lex Fridman (2:00:30.480)
Four loops, scalar arithmetic, you know, typed,
Travis Oliphant (2:00:34.400)
you know, really typed language, a typed subset.
Lex Fridman (2:00:38.280)
That was the key.
Travis Oliphant (2:00:39.360)
So, but we wanted to add inference of types.
Lex Fridman (2:00:41.880)
So you didn't have to spell all the types out
Travis Oliphant (2:00:43.400)
because when you call a function,
Lex Fridman (2:00:45.840)
so Python is typed, it's just dynamically typed.
Lex Fridman (2:00:48.040)
So you don't tell it what the types are,
Lex Fridman (2:00:49.360)
but when it runs, every time an object runs,
Travis Oliphant (2:00:52.080)
there's a type for the variables.
Lex Fridman (2:00:53.360)
You know what it is.
Lex Fridman (2:00:54.560)
And so that was the design goals of Numba
Lex Fridman (2:00:56.800)
were to make it possible to write functions
Travis Oliphant (2:00:59.200)
that could be compiled and have them used for NumPy arrays.
Lex Fridman (2:01:03.440)
Like they needed to support NumPy arrays.
Lex Fridman (2:01:05.520)
And so how does it work?
Lex Fridman (2:01:07.040)
Do you add a comment within Python that tells it to do,
Lex Fridman (2:01:10.200)
like how do you help out the compiler?
Lex Fridman (2:01:11.880)
Yeah, so there isn't much actually.
Travis Oliphant (2:01:15.860)
You don't, it's kind of magical in the sense
Lex Fridman (2:01:17.740)
that it just looks at the type of the objects
Lex Fridman (2:01:19.600)
and then it's typed inference to determine
Lex Fridman (2:01:21.320)
any other variables it needs.
Lex Fridman (2:01:23.320)
And then it was also, because we had a use case
Lex Fridman (2:01:26.080)
that could work early.
Travis Oliphant (2:01:28.280)
Like one of the challenges of any kind of new development
Lex Fridman (2:01:30.700)
is if you have something that to make it work,
Travis Oliphant (2:01:32.280)
it was gonna take you a long time,
Lex Fridman (2:01:34.200)
it's really hard to get out off the ground.
Travis Oliphant (2:01:35.960)
If you have a project where there's some incremental story,
Lex Fridman (2:01:39.200)
it can start working today and solve a problem,
Travis Oliphant (2:01:42.300)
then you can start getting it out there, getting feedback.
Lex Fridman (2:01:44.640)
Because Numba today, now Numba is nine years old today,
Lex Fridman (2:01:48.160)
the first two, three versions were not great, right?
Lex Fridman (2:01:52.120)
But they solved a problem and some people could try it
Lex Fridman (2:01:54.120)
and we could get some feedback on it.
Lex Fridman (2:01:55.560)
Not great in that it was very focused.
Travis Oliphant (2:01:57.520)
Very fragile, the subset it would actually compile
Lex Fridman (2:02:02.000)
was small and so if you wrote Python code
Lex Fridman (2:02:04.320)
and said, so the way it worked is you write a function
Lex Fridman (2:02:06.880)
and you say at JIT, use decorators.
Lex Fridman (2:02:09.000)
So decorators, just these little constructs
Lex Fridman (2:02:11.040)
let you decorate code with an at and then a name.
Travis Oliphant (2:02:15.040)
The at JIT would take your Python function
Lex Fridman (2:02:17.760)
and actually just compile it and replace the Python function
Travis Oliphant (2:02:20.240)
with another function that interacts
Lex Fridman (2:02:23.200)
with this compiled function.
Lex Fridman (2:02:24.920)
And it would just do that and we went from Python bytecode
Lex Fridman (2:02:28.480)
then we went to AST.
Travis Oliphant (2:02:29.400)
I mean, writing compilers actually,
Lex Fridman (2:02:31.200)
I learned a lot about why computer science
Travis Oliphant (2:02:32.940)
is taught the way it is because compilers
Lex Fridman (2:02:35.560)
can be hard to write.
Travis Oliphant (2:02:36.640)
They use tree structures, they use all the concepts
Lex Fridman (2:02:39.080)
of computer science that are needed.
Travis Oliphant (2:02:40.520)
It's actually hard to, it's easy to write a compiler
Lex Fridman (2:02:44.600)
and then have it be spaghetti code.
Travis Oliphant (2:02:46.000)
Like the passes become challenging
Lex Fridman (2:02:47.600)
and we ended up with three versions of Numba, right?
Travis Oliphant (2:02:49.940)
Numba got written three times.
Lex Fridman (2:02:51.540)
What programming language is Numba written in?
Travis Oliphant (2:02:55.560)
Python.
Lex Fridman (2:02:56.440)
Wait, okay.
Travis Oliphant (2:02:57.440)
Yeah, Python.
Lex Fridman (2:02:58.640)
So.
Lex Fridman (2:03:00.040)
Really?
Lex Fridman (2:03:00.860)
That's fascinating.
Travis Oliphant (2:03:01.700)
Yeah, so Python, but then the whole goal of Numba
Lex Fridman (2:03:03.520)
is to translate Python bytecode to LLVM.
Lex Fridman (2:03:07.480)
And so LLVM actually does the code generation.
Lex Fridman (2:03:09.400)
In fact, a lot of times they'd say,
Travis Oliphant (2:03:10.780)
yeah, it's super easy to write a compiler
Lex Fridman (2:03:12.780)
if you're not writing the parser nor the code generator.
Lex Fridman (2:03:15.880)
Right?
Lex Fridman (2:03:16.720)
So for people who don't know, LLVM is a compiler itself.
Lex Fridman (2:03:19.440)
So your compiler.
Lex Fridman (2:03:20.360)
Yeah, it's really badly named low level virtual machine,
Travis Oliphant (2:03:22.680)
which that part of it is not used.
Lex Fridman (2:03:24.480)
It's really low level.
Travis Oliphant (2:03:25.320)
Chris, he doesn't mean that.
Lex Fridman (2:03:26.160)
Yeah, love Chris.
Lex Fridman (2:03:29.280)
But the name makes you imply that the virtual machine
Lex Fridman (2:03:31.640)
is what it's all about.
Travis Oliphant (2:03:32.480)
It's actually the IR and the library,
Lex Fridman (2:03:34.520)
the code generation.
Travis Oliphant (2:03:36.000)
That's the real beauty of it.
Lex Fridman (2:03:37.680)
The fact that, what I love about LLVM
Travis Oliphant (2:03:39.360)
was the fact that it was a plateau you could collaborate on.
Lex Fridman (2:03:43.200)
Right?
Travis Oliphant (2:03:44.040)
Instead of the internals of GCC
Lex Fridman (2:03:45.880)
or the internals of the Intel compiler,
Lex Fridman (2:03:47.440)
or like how do I extend that?
Lex Fridman (2:03:49.120)
And it was a place we could collaborate.
Lex Fridman (2:03:51.020)
And we were early.
Lex Fridman (2:03:52.400)
I mean, people had started before.
Travis Oliphant (2:03:54.000)
It's a slow compiler.
Lex Fridman (2:03:55.240)
Like it's not a fast compiler.
Lex Fridman (2:03:56.840)
So for some kind of JITs,
Lex Fridman (2:03:59.520)
like JITs are common in language
Travis Oliphant (2:04:01.040)
because one, every browser has a JavaScript JIT.
Lex Fridman (2:04:04.760)
It does real time compilation
Travis Oliphant (2:04:06.560)
of the JavaScript to machine code.
Lex Fridman (2:04:09.080)
For people who don't know, JIT is just in time compilation.
Travis Oliphant (2:04:11.520)
Thank you.
Lex Fridman (2:04:12.340)
Yeah, just in time compilation.
Travis Oliphant (2:04:13.240)
They're actually really sophisticated.
Lex Fridman (2:04:14.840)
In fact, I got jealous of how much effort
Travis Oliphant (2:04:17.100)
was put into the JavaScript JITs.
Lex Fridman (2:04:18.600)
Yes, well, it's kind of incredible what they've done.
Travis Oliphant (2:04:20.800)
Yes, I completely agree.
Lex Fridman (2:04:22.760)
I'm very impressed.
Lex Fridman (2:04:24.760)
But you know, Numba was an effort
Lex Fridman (2:04:26.880)
to make that happen with Python.
Lex Fridman (2:04:29.320)
And so we used some of the money
Lex Fridman (2:04:30.960)
we raised from Anaconda to do it.
Lex Fridman (2:04:32.440)
And then we also applied for this DARPA grant
Lex Fridman (2:04:34.800)
and used some of that money to continue the development.
Lex Fridman (2:04:36.820)
And then we used proceeds from service projects we would do.
Lex Fridman (2:04:40.680)
We get consulting projects
Travis Oliphant (2:04:41.800)
that we would then use some of the profits
Lex Fridman (2:04:44.480)
to invest in Numba.
Lex Fridman (2:04:45.400)
So we ended up with a team of two or three people
Lex Fridman (2:04:47.160)
working on Numba.
Lex Fridman (2:04:48.880)
It was a fits and starts, right?
Lex Fridman (2:04:50.720)
And ultimately, the fact that we had a commercial version
Travis Oliphant (2:04:53.560)
of it also we were writing.
Lex Fridman (2:04:54.720)
So part of the way I was trying to fund Numba,
Travis Oliphant (2:04:56.640)
say, well, let's do the free Numba
Lex Fridman (2:04:58.560)
and then we'll have a commercial version of Numba
Travis Oliphant (2:04:59.920)
called Numba Pro.
Lex Fridman (2:05:00.820)
And what Numba Pro did is it targeted GPUs.
Lex Fridman (2:05:03.240)
So we had the very first CUDA JIT
Lex Fridman (2:05:05.520)
and the very first at JIT compiler that in 2012 for 13,
Travis Oliphant (2:05:10.840)
you could run not just a view func on CPU,
Lex Fridman (2:05:14.140)
but a view func on GPUs.
Lex Fridman (2:05:15.640)
And it would automatically paralyze it
Lex Fridman (2:05:17.480)
and get 1000X speed on it.
Lex Fridman (2:05:18.840)
And that's an interesting funding mechanism
Lex Fridman (2:05:21.120)
because large companies or larger companies
Travis Oliphant (2:05:26.860)
care about speed in just this way.
Lex Fridman (2:05:30.120)
So it's exactly a really good way.
Travis Oliphant (2:05:33.140)
Yeah, there's been a couple of things
Lex Fridman (2:05:34.240)
you know people will pay for.
Lex Fridman (2:05:35.200)
One, they'll pay for really good user interfaces, right?
Lex Fridman (2:05:37.960)
And so I'm always looking for what are the things
Travis Oliphant (2:05:40.160)
people will pay for that you could actually adapt
Lex Fridman (2:05:41.720)
to the open source infrastructure?
Travis Oliphant (2:05:43.240)
One is definitely user interfaces.
Lex Fridman (2:05:45.560)
The second is speed, like a better runtime, faster runtime.
Lex Fridman (2:05:49.120)
And then when you say people,
Lex Fridman (2:05:50.000)
you mean like a small number of people pay a lot of money,
Lex Fridman (2:05:52.280)
but then there's also this other mechanism that.
Lex Fridman (2:05:54.440)
That's true.
Travis Oliphant (2:05:55.280)
A ton of people pay.
Lex Fridman (2:05:56.400)
That's true.
Travis Oliphant (2:05:57.220)
A little bit.
Lex Fridman (2:05:58.060)
First, I gotta, we mentioned Anaconda,
Travis Oliphant (2:06:00.320)
we mentioned friends, family, and fools.
Lex Fridman (2:06:04.280)
So Anaconda is yet another.
Lex Fridman (2:06:06.800)
So there's a company, but there's also a project.
Lex Fridman (2:06:09.080)
Correct.
Travis Oliphant (2:06:09.920)
That is exceptionally impactful in terms of,
Lex Fridman (2:06:14.600)
for many reasons, but one of which is bringing
Travis Oliphant (2:06:16.880)
a lot more people into the community
Lex Fridman (2:06:21.960)
of folks who use Python.
Lex Fridman (2:06:23.640)
So what is Anaconda?
Lex Fridman (2:06:26.920)
What is its goals?
Lex Fridman (2:06:28.960)
Maybe what is Conda versus Anaconda?
Lex Fridman (2:06:31.540)
Yeah, I'll tell you a little bit of the history of that.
Travis Oliphant (2:06:33.080)
Cause Anaconda, we wanted to do,
Lex Fridman (2:06:35.280)
we wanted to scale Python.
Travis Oliphant (2:06:37.440)
Cause we, you know, that was the goal.
Lex Fridman (2:06:38.680)
Peter and I had the goal of when we started Anaconda,
Travis Oliphant (2:06:40.720)
we actually started as Continuum Analytics
Lex Fridman (2:06:42.440)
was the name of the company that started.
Travis Oliphant (2:06:44.000)
It got renamed Anaconda in 2015.
Lex Fridman (2:06:47.000)
But we said, we want to scale analytics.
Travis Oliphant (2:06:49.880)
NumPy is great, Pandas is emerging,
Lex Fridman (2:06:52.680)
but these need to run at scale with lots of machines.
Travis Oliphant (2:06:55.320)
The other thing we wanted to do was make user interfaces
Lex Fridman (2:06:57.920)
that were web.
Travis Oliphant (2:06:59.360)
We wanted to make sure the web did not pass
Lex Fridman (2:07:01.320)
by the Python community.
Travis Oliphant (2:07:02.920)
That we had ways to translate your data science to the web.
Lex Fridman (2:07:06.000)
So those are the two kind of technical areas.
Travis Oliphant (2:07:07.720)
We thought, oh, we'll build products in this space.
Lex Fridman (2:07:09.920)
And that was the idea.
Travis Oliphant (2:07:12.500)
Very quickly in, but of course,
Lex Fridman (2:07:13.640)
the thing I knew how to do was to do consulting
Travis Oliphant (2:07:15.760)
to make money and to make sure my family and friends
Lex Fridman (2:07:18.920)
and fools that had invested didn't lose their money.
Lex Fridman (2:07:21.680)
So it's a little different
Lex Fridman (2:07:22.640)
than if you take money from a venture fund.
Travis Oliphant (2:07:24.360)
If you take money from a venture fund,
Lex Fridman (2:07:25.520)
the venture fund, they want you to go big or go home.
Lex Fridman (2:07:27.720)
And they're kind of like expecting nine out of 10 to fail
Lex Fridman (2:07:30.280)
or 99 out of 100 to fail.
Travis Oliphant (2:07:33.080)
It's different.
Lex Fridman (2:07:33.920)
I was, I was owed a barbell strategy.
Travis Oliphant (2:07:35.480)
I was like, I can't fail.
Lex Fridman (2:07:37.280)
I mean, I may not do super well,
Lex Fridman (2:07:38.680)
but I cannot lose their money.
Lex Fridman (2:07:40.440)
So I'm going to do something I know can return a profit,
Lex Fridman (2:07:43.560)
but I want to have exposure to an upside.
Lex Fridman (2:07:46.320)
So that's what happened at Anaconda.
Travis Oliphant (2:07:47.920)
We didn't, there was lots of things we did not well
Lex Fridman (2:07:50.320)
in terms of that structure.
Lex Fridman (2:07:51.320)
And I've learned from since and how to do it better.
Lex Fridman (2:07:53.740)
But we've, we did a really good job
Travis Oliphant (2:07:56.700)
of kind of attracting the interest around the area
Lex Fridman (2:07:59.140)
to get good people working
Lex Fridman (2:08:00.360)
and then get funnel some money
Lex Fridman (2:08:01.700)
on some interesting projects.
Travis Oliphant (2:08:03.080)
Super excited about what came out of our energy there.
Lex Fridman (2:08:05.200)
Like a lot did.
Lex Fridman (2:08:06.840)
So what are some of the interesting projects?
Lex Fridman (2:08:08.280)
So Dask, Numba, Bokeh, Conda.
Travis Oliphant (2:08:12.120)
There was a data shader, Panel, Holoviz.
Lex Fridman (2:08:16.200)
These are all tools that are extremely relevant
Travis Oliphant (2:08:19.040)
in terms of helping you build applications,
Lex Fridman (2:08:21.400)
build tools, build, you know, faster code.
Travis Oliphant (2:08:25.060)
There's a couple I'm forgetting.
Lex Fridman (2:08:25.900)
Oh, JupyterLab, JupyterLab came out of this too.
Lex Fridman (2:08:28.680)
And yeah.
Lex Fridman (2:08:30.320)
Okay, so Bokeh does plotting?
Lex Fridman (2:08:32.700)
Is that?
Lex Fridman (2:08:33.540)
Bokeh does plotting.
Lex Fridman (2:08:34.360)
So Bokeh was one of the foundational things to say,
Lex Fridman (2:08:35.880)
I want to do plot in Python,
Lex Fridman (2:08:37.360)
but have the things show up in a web.
Lex Fridman (2:08:39.140)
Right, that's right.
Travis Oliphant (2:08:40.040)
That's right, that's right.
Lex Fridman (2:08:40.880)
And plotting to me still,
Travis Oliphant (2:08:43.280)
with all due respect to Matplotlib and Bokeh,
Lex Fridman (2:08:46.480)
it feels like still an unsolved problem,
Travis Oliphant (2:08:48.760)
not a solved problem.
Lex Fridman (2:08:50.260)
It is, it's a big problem.
Travis Oliphant (2:08:52.160)
Right, because you're, I mean, I don't know,
Lex Fridman (2:08:55.640)
it's visualization broadly, right?
Travis Oliphant (2:08:58.640)
I think we've got a pretty good API story
Lex Fridman (2:09:00.960)
around certain use cases of plotting.
Lex Fridman (2:09:03.440)
But there's a difference between static plots
Lex Fridman (2:09:04.920)
versus interactive plots versus I'm an end user,
Travis Oliphant (2:09:07.800)
I just want to write a simple,
Lex Fridman (2:09:09.760)
for Pandas started the idea of here's a data frame
Travis Oliphant (2:09:12.040)
on a dot plot, I'm just going to attach plot
Lex Fridman (2:09:14.200)
as a method to my object,
Lex Fridman (2:09:16.380)
which was a little bit controversial, right?
Lex Fridman (2:09:18.280)
But works pretty well, actually,
Lex Fridman (2:09:20.160)
because there's a lot less you have to pass in, right?
Lex Fridman (2:09:23.680)
You can just say, here's my object, you know what you are,
Travis Oliphant (2:09:26.280)
you tell the visualization what to do.
Lex Fridman (2:09:29.000)
So that, and there's things like that
Travis Oliphant (2:09:31.320)
that have not been super well developed entirely,
Lex Fridman (2:09:33.720)
but Bokeh was focused on interactive plotting.
Lex Fridman (2:09:36.320)
So you could, it's a short path
Lex Fridman (2:09:38.400)
between interactive plotting and application,
Travis Oliphant (2:09:41.080)
dashboard application.
Lex Fridman (2:09:42.680)
And there's some incredible work that got done there, right?
Lex Fridman (2:09:44.760)
And it was a hard project,
Lex Fridman (2:09:45.800)
because then you're basically doing JavaScript and Python.
Lex Fridman (2:09:49.440)
So we wanted to tackle some of these hard problems
Lex Fridman (2:09:51.560)
and try to just go after them.
Travis Oliphant (2:09:53.440)
We got some DARPA funding to help,
Lex Fridman (2:09:54.920)
and it was super helpful, funny story there,
Travis Oliphant (2:09:56.880)
we actually did two DARPA proposals,
Lex Fridman (2:09:58.320)
but one we were five minutes late for.
Lex Fridman (2:10:00.580)
And DARPA has a very strict cutoff window.
Lex Fridman (2:10:03.040)
And so I, we had two proposals,
Travis Oliphant (2:10:04.760)
one for the Bokeh and one for actually Numba
Lex Fridman (2:10:06.720)
and the other work.
Lex Fridman (2:10:09.320)
Which one were you late for?
Lex Fridman (2:10:10.920)
The Foundation on Numerical Work.
Lex Fridman (2:10:12.920)
So Bokeh got funded. Oh no.
Lex Fridman (2:10:14.880)
Fortunately, Chris let us use some of the money to fund
Travis Oliphant (2:10:17.120)
still some of the other foundational work,
Lex Fridman (2:10:19.320)
but it wasn't as, yeah, his hands were tired,
Travis Oliphant (2:10:22.040)
he couldn't do anything about it.
Lex Fridman (2:10:23.880)
That was a whole interesting story.
Lex Fridman (2:10:25.880)
So one of the incredible projects
Lex Fridman (2:10:27.700)
that you worked on is Conda.
Travis Oliphant (2:10:29.200)
Yes.
Lex Fridman (2:10:30.040)
So what is Conda? So how that came about,
Travis Oliphant (2:10:31.400)
yeah, Conda, it was early on, like I said, with SciPy.
Lex Fridman (2:10:35.480)
SciPy was a distribution mass generation library.
Lex Fridman (2:10:37.880)
And he said, he heard me talking about compiler issues
Lex Fridman (2:10:40.320)
and trying to get the stuff shipped
Lex Fridman (2:10:41.480)
and the fact that people can use your libraries
Lex Fridman (2:10:43.320)
if they have it.
Lex Fridman (2:10:44.660)
So for a long time,
Lex Fridman (2:10:45.500)
we'd understood the packaging problem in Python.
Lex Fridman (2:10:47.800)
And one of the first things he did at Conda Analytics
Lex Fridman (2:10:50.680)
became Anaconda was organize the Pi data ecosystem
Travis Oliphant (2:10:54.240)
in conjunction with NumFocus.
Lex Fridman (2:10:56.160)
We actually started NumFocus
Travis Oliphant (2:10:58.960)
with some other folks in the community
Lex Fridman (2:11:00.480)
the same year we started Anaconda.
Travis Oliphant (2:11:02.880)
I said, we're gonna build a corporation,
Lex Fridman (2:11:04.200)
but we're also gonna reify the community aspect
Lex Fridman (2:11:07.040)
and build a nonprofit.
Lex Fridman (2:11:08.280)
So we did both of those.
Travis Oliphant (2:11:09.400)
Can we pause real quick and can you say what is PyPy,
Lex Fridman (2:11:13.280)
the Python package index,
Lex Fridman (2:11:14.720)
like this whole story of packaging in Python?
Lex Fridman (2:11:19.300)
Yeah, that's what I'm gonna get to actually.
Travis Oliphant (2:11:20.880)
This is exactly the journey I'm on.
Lex Fridman (2:11:22.240)
It's to sort of explain packaging in Python.
Travis Oliphant (2:11:24.200)
I think it's best expressed to the conversation
Lex Fridman (2:11:26.080)
I had with Guido at a conference,
Travis Oliphant (2:11:27.600)
where I said, so packaging is kind of a problem.
Lex Fridman (2:11:31.280)
And Guido said, I don't ever care about packaging.
Travis Oliphant (2:11:34.080)
I don't use it.
Lex Fridman (2:11:34.920)
I don't install new libraries.
Travis Oliphant (2:11:36.320)
I'm like, I guess if you're the language creator
Lex Fridman (2:11:38.200)
and if you need something, you just put it in the distribution
Travis Oliphant (2:11:40.480)
maybe you don't worry about packaging.
Lex Fridman (2:11:42.520)
But Guido has never really cared about packaging, right?
Lex Fridman (2:11:45.200)
And never really cared about the problem of distribution.
Lex Fridman (2:11:47.400)
It's somebody else's problem.
Lex Fridman (2:11:48.480)
And that's a fair position to take, I think,
Lex Fridman (2:11:50.240)
as a language creator.
Travis Oliphant (2:11:51.480)
In fact, there's a philosophical question about
Lex Fridman (2:11:54.160)
should you have different development packaging managers?
Lex Fridman (2:11:56.680)
Should you have a package manager per language?
Lex Fridman (2:11:58.400)
Is that really the right approach?
Travis Oliphant (2:11:59.800)
I think there are some answers of
Lex Fridman (2:12:01.900)
it is appropriate to have development tools.
Lex Fridman (2:12:04.200)
And there's an aspect of a development tool
Lex Fridman (2:12:06.040)
that is related to packaging.
Lex Fridman (2:12:07.680)
And every language should have some story there
Lex Fridman (2:12:10.600)
to help their developers create.
Lex Fridman (2:12:12.120)
So you should have language specific development tools.
Lex Fridman (2:12:14.960)
Development tools that relate to package managers.
Lex Fridman (2:12:17.080)
But then there's a very specific user story
Lex Fridman (2:12:19.520)
around package management
Travis Oliphant (2:12:20.680)
that those language specific package managers
Lex Fridman (2:12:22.240)
have to interact with.
Lex Fridman (2:12:23.560)
And currently aren't doing a good job of that.
Lex Fridman (2:12:25.920)
That was one of the challenges
Travis Oliphant (2:12:27.000)
that not seeing that difference,
Lex Fridman (2:12:29.140)
and it still exists in the difference today.
Travis Oliphant (2:12:31.720)
Conda always was a user.
Lex Fridman (2:12:34.480)
I'm gonna use Python to do data science.
Travis Oliphant (2:12:36.540)
I'm gonna use Python to do something.
Lex Fridman (2:12:38.240)
How do I get this installed?
Travis Oliphant (2:12:39.560)
It was always focused on that.
Lex Fridman (2:12:41.160)
So it didn't have a develop.
Travis Oliphant (2:12:43.880)
Classic example is pip has a pip develop.
Lex Fridman (2:12:45.960)
It's like, I wanna install this
Travis Oliphant (2:12:47.480)
into my current development environment today.
Lex Fridman (2:12:50.280)
Conda doesn't have that concept
Travis Oliphant (2:12:51.520)
because it's not part of the story.
Lex Fridman (2:12:52.840)
For people who don't know,
Travis Oliphant (2:12:54.640)
pip is a Python specific package manager.
Lex Fridman (2:12:59.640)
That's exceptionally popular.
Travis Oliphant (2:13:04.640)
That's probably like the default thing you've learned.
Lex Fridman (2:13:06.520)
It's the default user.
Lex Fridman (2:13:07.360)
And so the story there emerged
Lex Fridman (2:13:08.840)
because what happened is in 2012,
Travis Oliphant (2:13:11.480)
we had this meeting at the Googleplex
Lex Fridman (2:13:13.760)
and Guido was there to come talk about what we're gonna do,
Lex Fridman (2:13:15.600)
how we're gonna make things work better.
Lex Fridman (2:13:17.240)
And Wes McKinney, me, Peter,
Travis Oliphant (2:13:19.960)
Peter has a great photo of me talking to Guido
Lex Fridman (2:13:21.880)
and he pretends we're talking about this story.
Travis Oliphant (2:13:23.560)
Maybe we were, maybe we weren't.
Lex Fridman (2:13:24.680)
But we did at that meeting talk about it
Lex Fridman (2:13:26.320)
and asked Guido, we need to fix packaging in Python.
Lex Fridman (2:13:29.920)
People can't get the stuff.
Lex Fridman (2:13:31.040)
And he said, go fix it yourself.
Lex Fridman (2:13:32.400)
I don't think we're gonna do it.
Travis Oliphant (2:13:33.600)
All right.
Lex Fridman (2:13:35.720)
The origin story right there.
Travis Oliphant (2:13:36.960)
All right, you said, okay, you said to do this ourselves.
Lex Fridman (2:13:39.440)
So at the same time,
Travis Oliphant (2:13:41.640)
people did start to work on the packaging story in Python.
Lex Fridman (2:13:44.600)
It just took a little longer.
Lex Fridman (2:13:45.680)
So in 2012, kind of motivated
Lex Fridman (2:13:48.160)
by our training courses we were teaching,
Travis Oliphant (2:13:49.600)
like very similar to what you just mentioned
Lex Fridman (2:13:51.440)
about your mother.
Travis Oliphant (2:13:52.280)
Like it was motivated by the same purpose.
Lex Fridman (2:13:54.160)
Like how do we get this into people's hands?
Travis Oliphant (2:13:56.040)
It's this big, long process.
Lex Fridman (2:13:57.120)
It takes too expensive.
Travis Oliphant (2:13:58.520)
It was actually hurting NumPy development
Lex Fridman (2:14:00.200)
because I would hear people were saying,
Travis Oliphant (2:14:02.280)
don't make that change to NumPy
Lex Fridman (2:14:03.480)
because I just spent a week getting my Python environment.
Lex Fridman (2:14:05.480)
And if you change NumPy, I have to reinstall everything.
Lex Fridman (2:14:09.160)
And reinstalling is such a pain, don't do it.
Travis Oliphant (2:14:10.880)
I'm like, wait, okay.
Lex Fridman (2:14:12.120)
So now we're not making changes to a library
Travis Oliphant (2:14:14.640)
because of the installation problem
Lex Fridman (2:14:16.000)
that it'll cause for end users.
Travis Oliphant (2:14:17.440)
Okay, there's a problem with installation.
Lex Fridman (2:14:19.400)
We gotta fix this.
Lex Fridman (2:14:20.520)
So we said, we're gonna make a distribution in Python.
Lex Fridman (2:14:23.760)
And we'd previously done that.
Travis Oliphant (2:14:24.760)
I'd previously done that at mthought.
Lex Fridman (2:14:26.920)
I wanted to make one that would give away for free,
Travis Oliphant (2:14:28.520)
that everyone could just get.
Lex Fridman (2:14:29.840)
Like that was critical that we could just get it.
Travis Oliphant (2:14:32.080)
It wasn't tied to a product.
Lex Fridman (2:14:33.880)
It was just you could get it.
Lex Fridman (2:14:35.360)
And then we had constantly thought about,
Lex Fridman (2:14:36.960)
well, do we just leverage RPM?
Lex Fridman (2:14:39.120)
But the challenge had always been,
Lex Fridman (2:14:40.400)
we want a package manager that works on Windows,
Lex Fridman (2:14:42.240)
Mac OS X, and Linux the same, right?
Lex Fridman (2:14:45.040)
And it wasn't there.
Travis Oliphant (2:14:46.560)
Like you don't have anything like that.
Lex Fridman (2:14:47.960)
You have...
Lex Fridman (2:14:48.800)
And for people who don't know,
Lex Fridman (2:14:49.640)
RPM is an operating system specific package manager.
Travis Oliphant (2:14:54.560)
Correct, it's an operating specific.
Lex Fridman (2:14:55.960)
Yes, exactly.
Lex Fridman (2:14:56.800)
So do you create the design questions,
Lex Fridman (2:15:00.160)
do you create an umbrella package manager
Lex Fridman (2:15:02.240)
that works across operating systems?
Lex Fridman (2:15:03.840)
Yes, that was the decision.
Lex Fridman (2:15:05.680)
And in neighboring design questions,
Lex Fridman (2:15:08.080)
do you also create a package manager
Lex Fridman (2:15:09.920)
that spans multiple programming languages?
Lex Fridman (2:15:11.840)
Correct, exactly.
Travis Oliphant (2:15:12.760)
That was the world we faced.
Lex Fridman (2:15:14.280)
And we decided to go multiple operating systems,
Travis Oliphant (2:15:17.080)
multiple and programming language independent.
Lex Fridman (2:15:19.220)
Because even Python, and particularly what was important
Lex Fridman (2:15:21.800)
was SciPy has a bunch of Fortran in it, right?
Lex Fridman (2:15:24.920)
And scikit learn has links to a bunch of C++.
Travis Oliphant (2:15:27.760)
There's a lot of compiled code.
Lex Fridman (2:15:29.960)
And the Python package managers, especially early on,
Travis Oliphant (2:15:32.920)
didn't even support that.
Lex Fridman (2:15:34.320)
So in 2000, so we released Anaconda,
Travis Oliphant (2:15:38.520)
which was just a distribution of libraries,
Lex Fridman (2:15:39.960)
but we started to work on Conda in 2012.
Travis Oliphant (2:15:42.480)
First version of Conda came out in early 2013,
Lex Fridman (2:15:44.680)
summer of 2013, and it was a package manager.
Lex Fridman (2:15:47.840)
So you could say, Conda install scikit learn.
Lex Fridman (2:15:49.560)
In fact, scikit learn was a fantastic project that emerged.
Travis Oliphant (2:15:54.280)
It was the classic example of the scikits.
Lex Fridman (2:15:57.120)
I talked to you earlier about SciPy being too big
Travis Oliphant (2:15:59.760)
to be a single library.
Lex Fridman (2:16:01.240)
Well, what the community had done is said,
Travis Oliphant (2:16:02.680)
let's make scikits.
Lex Fridman (2:16:04.160)
And there's scikit image, there's scikit learn,
Travis Oliphant (2:16:05.840)
there's a lot of scikits.
Lex Fridman (2:16:07.640)
And it was a fantastic move that the community did.
Travis Oliphant (2:16:10.200)
I didn't do it.
Lex Fridman (2:16:11.460)
I was like, okay, that's a good idea.
Travis Oliphant (2:16:12.560)
I didn't like the name.
Lex Fridman (2:16:13.540)
I didn't like the fact you typed scikit image.
Travis Oliphant (2:16:15.500)
I was like, that's gotta be simpler.
Lex Fridman (2:16:17.400)
That's scikit learn, we gotta make that smaller.
Travis Oliphant (2:16:19.800)
I don't like typing all this stuff from imports.
Lex Fridman (2:16:21.940)
So I was kind of a pressure that way,
Lex Fridman (2:16:23.220)
but I love the energy and love the fact
Lex Fridman (2:16:25.280)
that they went out and they did it,
Lex Fridman (2:16:26.200)
and DOS people, Jared Millman, and then of course, Gael,
Lex Fridman (2:16:29.400)
and there's people I'm not even naming.
Travis Oliphant (2:16:31.280)
Scikit learn really emerged as a fantastic project.
Lex Fridman (2:16:34.640)
And the documentation around that is also incredible.
Lex Fridman (2:16:36.680)
And the documentation was incredible, exactly.
Lex Fridman (2:16:37.840)
I don't know who did that, but they did a great job.
Travis Oliphant (2:16:40.160)
A lot of people in Inria, a lot of European contributors.
Lex Fridman (2:16:45.120)
There's some Andreas in the US.
Travis Oliphant (2:16:47.120)
There's a lot of just people I just adore,
Lex Fridman (2:16:48.920)
I think are amazing people.
Lex Fridman (2:16:51.180)
Awesome use of SciPy, right?
Lex Fridman (2:16:52.480)
I love the fact that they were using SciPy effectively
Travis Oliphant (2:16:54.600)
to do something I love, which is machine learning,
Lex Fridman (2:16:57.160)
but couldn't install it.
Travis Oliphant (2:16:58.980)
Because there's so many pieces involved.
Lex Fridman (2:17:00.600)
So many dependencies, right?
Lex Fridman (2:17:02.160)
So our use case of Conda was Conda install scikit learn.
Lex Fridman (2:17:06.080)
Right, and it was the best way to install scikit learn
Travis Oliphant (2:17:09.440)
in 2013 to really 2018, 17, 18, PIP finally caught up.
Lex Fridman (2:17:14.440)
I still think it's you should Conda install scikit learn
Travis Oliphant (2:17:16.440)
for the PIP install scikit learn,
Lex Fridman (2:17:17.560)
but you can PIP install scikit learn.
Travis Oliphant (2:17:19.360)
The issue is the package they created was wheels
Lex Fridman (2:17:21.840)
and PIP does not handle the multi vendor approach.
Travis Oliphant (2:17:24.480)
They don't handle the fact you have C++ libraries
Lex Fridman (2:17:26.600)
you're depending on.
Travis Oliphant (2:17:27.680)
They just stop at the Python boundary.
Lex Fridman (2:17:29.240)
And so what you have to do in the wheel world
Travis Oliphant (2:17:31.280)
is you have to vendor.
Lex Fridman (2:17:33.200)
You have to take all of the binary and vendor it.
Travis Oliphant (2:17:35.640)
Now, if your change happens in underlying dependency,
Lex Fridman (2:17:38.480)
you have to redo the whole wheel.
Lex Fridman (2:17:40.280)
So TensorFlow, as you know,
Lex Fridman (2:17:42.080)
you should not PIP install TensorFlow.
Travis Oliphant (2:17:44.680)
It's a terrible idea.
Lex Fridman (2:17:45.520)
People do it because the popularity of PIP,
Travis Oliphant (2:17:48.640)
many people think, oh, of course,
Lex Fridman (2:17:49.480)
that's how I install everything in Python.
Travis Oliphant (2:17:51.480)
Yeah, this is one of the big challenges.
Lex Fridman (2:17:53.960)
You take a GitHub repository or just a basic blog post.
Travis Oliphant (2:17:57.920)
The number of time PIP is mentioned over Conda
Lex Fridman (2:18:00.840)
is like 100 X to one.
Travis Oliphant (2:18:02.760)
Correct, correct.
Lex Fridman (2:18:03.600)
So it just has to do with the.
Lex Fridman (2:18:04.440)
And that was increasing.
Lex Fridman (2:18:05.280)
It wasn't true early because PIP didn't exist.
Travis Oliphant (2:18:07.520)
Like Conda came first.
Lex Fridman (2:18:08.840)
So but that's the problem.
Travis Oliphant (2:18:10.160)
Like Conda came first, but that's like the long tail
Lex Fridman (2:18:13.040)
of the internet documentation user generated.
Lex Fridman (2:18:15.840)
So that like you think, how do I install Google?
Lex Fridman (2:18:19.160)
How do I install TensorFlow?
Travis Oliphant (2:18:20.400)
You're just not gonna see Conda in that first page.
Lex Fridman (2:18:23.000)
Correct, exactly.
Lex Fridman (2:18:24.120)
And that.
Lex Fridman (2:18:24.960)
Not today, you would have in 2016, 2017.
Lex Fridman (2:18:29.400)
And it's sad because Conda solves
Lex Fridman (2:18:32.760)
a lot of usability issues.
Travis Oliphant (2:18:34.160)
Correct.
Lex Fridman (2:18:35.000)
Like for especially super challenging thing.
Travis Oliphant (2:18:36.480)
I don't know.
Lex Fridman (2:18:37.320)
One of the big pain points for me was
Travis Oliphant (2:18:39.520)
just on the computer vision side, OpenCV installation.
Lex Fridman (2:18:43.560)
Perfect example.
Travis Oliphant (2:18:44.400)
Yes.
Lex Fridman (2:18:45.240)
I think Conda, I don't know if Conda solved that one.
Travis Oliphant (2:18:47.400)
Conda has an OpenCV package.
Lex Fridman (2:18:49.080)
I don't know.
Travis Oliphant (2:18:49.920)
I certainly know PIP has not solved.
Lex Fridman (2:18:53.440)
I mean, there's complexities there because.
Travis Oliphant (2:18:55.840)
Right.
Lex Fridman (2:18:56.680)
I actually don't know.
Travis Oliphant (2:18:57.640)
I should probably know a good answer for this,
Lex Fridman (2:18:59.120)
but if you compile OpenCV with certain dependencies,
Travis Oliphant (2:19:05.440)
you'll be able to do certain things.
Lex Fridman (2:19:07.440)
So there's this kind of flexibility of what you,
Travis Oliphant (2:19:09.840)
like what options you compile with.
Lex Fridman (2:19:12.960)
Yes.
Lex Fridman (2:19:13.800)
And I don't think it's trivial to do that with Conda or.
Lex Fridman (2:19:17.840)
So Conda has a notion of variance of a package.
Travis Oliphant (2:19:20.520)
You can actually have different compilation versions
Lex Fridman (2:19:23.120)
of a package.
Lex Fridman (2:19:23.960)
So not just the version is different,
Lex Fridman (2:19:24.800)
but oh, this is compiled with these optimizations on.
Lex Fridman (2:19:26.880)
So Conda does have an answer.
Lex Fridman (2:19:28.000)
Has those flavors.
Travis Oliphant (2:19:28.840)
Has flavors, basically.
Lex Fridman (2:19:30.080)
Well, PIP, as far as I know, does not have flavors.
Travis Oliphant (2:19:32.360)
No, no.
Lex Fridman (2:19:33.280)
PIP generally hasn't thought deeply
Lex Fridman (2:19:36.440)
about the binary dependency problem, right?
Lex Fridman (2:19:38.400)
And that's why fundamentally it doesn't work
Travis Oliphant (2:19:41.840)
for the SciPy ecosystem.
Lex Fridman (2:19:43.640)
It barely, you can sort of paper over it and duct tape
Lex Fridman (2:19:46.120)
and it kind of works until it doesn't
Lex Fridman (2:19:48.040)
and it falls apart entirely.
Lex Fridman (2:19:49.560)
So it's been a mixed bag.
Lex Fridman (2:19:51.520)
Like, and I've been having lots of conversations
Travis Oliphant (2:19:54.360)
with people over the years because again,
Lex Fridman (2:19:56.120)
it's an area where if you understand some things,
Lex Fridman (2:19:58.400)
but not all the things,
Lex Fridman (2:19:59.240)
but they've done a great job of community appeal.
Travis Oliphant (2:20:02.200)
This is an area where I think Anaconda as a company
Lex Fridman (2:20:05.560)
needed to do some things
Lex Fridman (2:20:07.040)
in order to make Conda more community centric, right?
Lex Fridman (2:20:10.440)
And this is a, I talk about this all the time.
Travis Oliphant (2:20:13.080)
There's a balance between you have every project starts
Lex Fridman (2:20:16.640)
with what I called company backed open source.
Travis Oliphant (2:20:18.280)
Even if the company is yourself, it's just one person,
Lex Fridman (2:20:20.320)
just doing business as.
Lex Fridman (2:20:23.360)
But ultimately for products to succeed virally
Lex Fridman (2:20:26.080)
and become massive influencers,
Travis Oliphant (2:20:28.320)
they have to create,
Lex Fridman (2:20:29.160)
they have to get community people on board.
Travis Oliphant (2:20:30.520)
They have to get other people on board.
Lex Fridman (2:20:32.120)
So it has to become community driven.
Lex Fridman (2:20:33.680)
And a big part of that is engagement with those people.
Lex Fridman (2:20:35.520)
Empowering people, governance around it.
Lex Fridman (2:20:38.600)
And what happened with Conda in the early days,
Lex Fridman (2:20:41.360)
PIP emerged and we did do some good things.
Travis Oliphant (2:20:43.720)
Conda Forge, Conda Forge community
Lex Fridman (2:20:46.400)
is sort of the community recipe creation community.
Lex Fridman (2:20:49.880)
But Conda itself, I still believe,
Lex Fridman (2:20:52.160)
and Peter is CEO of Anaconda, he's my co founder.
Travis Oliphant (2:20:55.120)
I ran Anaconda until 2017, 2018.
Lex Fridman (2:20:58.160)
Is Peter still Anaconda?
Lex Fridman (2:20:59.000)
Peter's still Anaconda, right?
Lex Fridman (2:21:00.000)
And we're still great friends.
Travis Oliphant (2:21:01.360)
We talk all the time.
Lex Fridman (2:21:02.560)
I love him to death.
Travis Oliphant (2:21:03.600)
There's a long story there about like why and how
Lex Fridman (2:21:06.080)
and we can cover in some other podcast perhaps.
Travis Oliphant (2:21:08.640)
Yeah.
Lex Fridman (2:21:09.480)
It's sort of a more, maybe a more business focused one.
Lex Fridman (2:21:11.400)
But this is one area where I think Conda
Lex Fridman (2:21:15.160)
should be more community driven.
Travis Oliphant (2:21:17.280)
Like he should be pushing more
Lex Fridman (2:21:18.960)
to get more community contributors to Conda
Lex Fridman (2:21:21.200)
and let the, Anaconda shouldn't be fighting this battle.
Lex Fridman (2:21:26.080)
Yeah.
Lex Fridman (2:21:26.920)
Right?
Lex Fridman (2:21:27.760)
It's actually, it's really a developers.
Travis Oliphant (2:21:28.600)
Like you said, like help the developers
Lex Fridman (2:21:30.400)
and then they'll actually move us the right direction.
Travis Oliphant (2:21:32.200)
Well, that was the problem I have is many
Lex Fridman (2:21:34.040)
of the cool kids I know don't use Conda.
Lex Fridman (2:21:36.520)
And that to me is confusing.
Lex Fridman (2:21:38.880)
It is confusing.
Travis Oliphant (2:21:39.800)
It's really a matter of, Conda has some challenges.
Lex Fridman (2:21:42.640)
First of all, Conda still needs to be improved.
Travis Oliphant (2:21:44.120)
There's lots of improvements to be made.
Lex Fridman (2:21:45.320)
And it's that aspect of wait, who's doing this?
Lex Fridman (2:21:47.600)
And the fact that then the Pi PA really stepped up.
Lex Fridman (2:21:50.960)
Like they were not solving the problem at all.
Lex Fridman (2:21:53.400)
And now they kind of got to where they're solving it
Lex Fridman (2:21:55.640)
for the most part.
Lex Fridman (2:21:56.720)
And then effectively you could get,
Lex Fridman (2:21:58.160)
like Conda solved a problem that was there.
Lex Fridman (2:22:00.360)
And it still does.
Lex Fridman (2:22:01.200)
It's still, you know, there's still great things it can do.
Travis Oliphant (2:22:03.960)
But, and we still use it all the time at one site
Lex Fridman (2:22:06.920)
and with other clients, but with,
Lex Fridman (2:22:08.960)
but you can kind of do similar things with PIP and Docker.
Lex Fridman (2:22:12.160)
Right?
Lex Fridman (2:22:13.000)
So especially with the web development community,
Lex Fridman (2:22:15.280)
that part of it, again, is this is the,
Travis Oliphant (2:22:17.080)
there's a lot of different kinds of developers
Lex Fridman (2:22:19.200)
in the Python ecosystem.
Lex Fridman (2:22:20.200)
And there's still a lack of some clear understanding.
Lex Fridman (2:22:23.720)
I go to the Python conference all the time
Lex Fridman (2:22:25.320)
and then there's only a few people in the Pi PA who get it.
Lex Fridman (2:22:28.280)
And then others who are just massively trumpeting
Travis Oliphant (2:22:30.680)
the power of PIP, but just do not understand the problem.
Lex Fridman (2:22:32.840)
Yeah.
Lex Fridman (2:22:33.680)
So one of the obvious things to me from a mom,
Lex Fridman (2:22:36.040)
from a non programmer perspective,
Travis Oliphant (2:22:37.840)
is the across operating system usability.
Lex Fridman (2:22:41.760)
That's much more natural.
Lex Fridman (2:22:42.680)
So there's people that use Windows and just,
Lex Fridman (2:22:45.440)
it seems much easier to recommend Conda there,
Lex Fridman (2:22:49.080)
but then it, you should also recommend it across the board.
Lex Fridman (2:22:51.840)
So I'll definitely sort of.
Lex Fridman (2:22:53.520)
But what I recommend now is a hybrid.
Lex Fridman (2:22:55.320)
I do.
Travis Oliphant (2:22:56.160)
I mean, I have no problem.
Lex Fridman (2:22:57.000)
Is it possible to use?
Travis Oliphant (2:22:57.840)
Oh, it is.
Lex Fridman (2:22:58.660)
It is.
Lex Fridman (2:22:59.500)
But like build the environment with PIP, with Conda,
Lex Fridman (2:23:01.600)
build an environment with Conda
Lex Fridman (2:23:03.360)
and then PIP install on top of that.
Lex Fridman (2:23:04.600)
That's fine.
Travis Oliphant (2:23:05.440)
Be careful about PIP installing OpenCV or TensorFlow
Lex Fridman (2:23:09.400)
or because if somebody's allowed that,
Travis Oliphant (2:23:11.360)
it's gonna be most surely done in a way
Lex Fridman (2:23:13.320)
that can't be updated that easily.
Lex Fridman (2:23:15.120)
So install like the big packages,
Lex Fridman (2:23:17.680)
the infrastructure with Conda and then the weirdos.
Travis Oliphant (2:23:21.000)
Yeah.
Lex Fridman (2:23:21.840)
That like the weird like implementation for some.
Travis Oliphant (2:23:24.720)
I had a, there's a cool library I used
Lex Fridman (2:23:28.440)
that based on your location and time of day and date
Travis Oliphant (2:23:33.520)
tells you the exact position of the sun
Lex Fridman (2:23:35.640)
relative to the earth.
Lex Fridman (2:23:38.160)
And it's just like a simple library,
Lex Fridman (2:23:39.700)
but it's very precise.
Lex Fridman (2:23:41.360)
And I was like, all right.
Lex Fridman (2:23:42.200)
But that was, that was, and it's like PIP.
Travis Oliphant (2:23:45.120)
Well, the thing they did really well is Python developers
Lex Fridman (2:23:48.600)
who wanna get their stuff published,
Travis Oliphant (2:23:50.600)
you have to have a PIP recipe.
Lex Fridman (2:23:51.920)
Yeah.
Lex Fridman (2:23:52.760)
Right?
Lex Fridman (2:23:53.600)
I mean, even if it's, you know, the challenge is,
Lex Fridman (2:23:56.440)
and there's a key thing that needs to be added to PIP,
Lex Fridman (2:23:58.800)
just simply add to PIP the ability to defer
Travis Oliphant (2:24:01.680)
to a system package manager.
Lex Fridman (2:24:03.440)
Like, cause it's, you know,
Travis Oliphant (2:24:04.460)
recognize you're not gonna solve all the dependency problem.
Lex Fridman (2:24:07.280)
So let like give up and allow the system package to work.
Travis Oliphant (2:24:12.420)
That way Anaconda is installed and it has PIP.
Lex Fridman (2:24:15.140)
It would default to Conda to install stuff,
Lex Fridman (2:24:16.960)
but Red Hat RPM would default to RPM
Lex Fridman (2:24:19.240)
to install some more things.
Travis Oliphant (2:24:20.600)
Like that's the, that's a key, not difficult,
Lex Fridman (2:24:23.480)
but somewhat work, some work feature needs to be added.
Travis Oliphant (2:24:25.960)
That's an example of something like,
Lex Fridman (2:24:27.440)
I've known we need to do it.
Travis Oliphant (2:24:28.620)
I mean, it's where I wish I had more money.
Lex Fridman (2:24:30.920)
I wish I was more successful in the business side,
Travis Oliphant (2:24:33.480)
trying to get there, but I wish my, you know,
Lex Fridman (2:24:35.060)
my family, friends and full community that I know.
Travis Oliphant (2:24:37.280)
Was larger.
Lex Fridman (2:24:38.120)
Was larger and had more money.
Travis Oliphant (2:24:39.320)
Cause I know tons of things to do effectively
Lex Fridman (2:24:42.680)
with more resources, but you know,
Travis Oliphant (2:24:46.280)
I have not yet been successful at channel.
Lex Fridman (2:24:48.720)
Tons of, you know, some, you know,
Travis Oliphant (2:24:49.960)
I'm happy with what we've done.
Lex Fridman (2:24:51.480)
We created again at Quansight,
Lex Fridman (2:24:54.840)
what we created to get Anaconda started.
Lex Fridman (2:24:56.480)
We created community to get Anaconda started.
Travis Oliphant (2:24:58.160)
Done it again with Quansight.
Lex Fridman (2:24:59.280)
Super excited by that.
Lex Fridman (2:25:00.480)
But it took three years to do it.
Lex Fridman (2:25:02.200)
What is Quansight?
Lex Fridman (2:25:03.200)
What is its mission?
Lex Fridman (2:25:04.440)
We've talked a few times about different fascinating
Travis Oliphant (2:25:06.920)
aspects of it, but let's like big picture,
Lex Fridman (2:25:08.920)
what is Quansight?
Travis Oliphant (2:25:09.760)
Big picture Quansight.
Lex Fridman (2:25:10.600)
Quansight is, its mission is to connect data
Travis Oliphant (2:25:13.480)
to an open economy.
Lex Fridman (2:25:14.480)
So it's basically consulting of the pie data ecosystem,
Lex Fridman (2:25:17.520)
right?
Lex Fridman (2:25:18.360)
It's a consulting company.
Lex Fridman (2:25:19.280)
And what I've said when I started it was we're trying
Lex Fridman (2:25:21.200)
to create products, people, and technology.
Lex Fridman (2:25:24.700)
So it's divided into two groups.
Lex Fridman (2:25:26.700)
And a third one as well.
Travis Oliphant (2:25:28.300)
The two groups are a consulting services company
Lex Fridman (2:25:30.360)
that just helps people do data science
Lex Fridman (2:25:31.960)
and data engineering and data management better
Lex Fridman (2:25:35.080)
and more efficiently.
Travis Oliphant (2:25:35.920)
Like full stack, like full thing.
Lex Fridman (2:25:36.760)
Full stack data science, full thing.
Travis Oliphant (2:25:38.200)
We'll help you build a infrastructure.
Lex Fridman (2:25:40.020)
If you're using Jupiter, we need,
Travis Oliphant (2:25:41.380)
we do staff augmentation, need more pro programmers,
Lex Fridman (2:25:43.820)
help you use Dask more effectively,
Travis Oliphant (2:25:44.900)
help you use GPUs more effectively.
Lex Fridman (2:25:46.520)
Just basically a lot of people need help.
Lex Fridman (2:25:48.400)
So we do training as well to help people, you know,
Lex Fridman (2:25:50.800)
both immediate help and then get, learn from somebody.
Travis Oliphant (2:25:55.860)
We've added a bunch of stuff too.
Lex Fridman (2:25:57.080)
We've kind of separated some of these other things
Travis Oliphant (2:25:58.600)
into another company called Open Teams
Lex Fridman (2:26:00.120)
that we currently started.
Travis Oliphant (2:26:01.760)
One of the things I loved about what we did at Anaconda
Lex Fridman (2:26:03.380)
was creating a community innovation team.
Lex Fridman (2:26:05.520)
And so I wanted to replicate that.
Lex Fridman (2:26:06.700)
This time we did a lot of innovation at Anaconda.
Travis Oliphant (2:26:09.360)
I wanted to do innovation,
Lex Fridman (2:26:10.600)
but also contribute to the projects that existed,
Travis Oliphant (2:26:13.680)
like create a place where maintainers,
Lex Fridman (2:26:16.440)
so the SciPy and NumPy and Numba
Lex Fridman (2:26:18.480)
and all these projects we already started
Lex Fridman (2:26:20.400)
can pay people to work on them and keep them going.
Lex Fridman (2:26:22.700)
So that's Labs.
Lex Fridman (2:26:23.540)
Quansight Labs is a separate organization.
Travis Oliphant (2:26:25.960)
It's a nonprofit mission.
Lex Fridman (2:26:28.060)
The profits of Quansight help fund it.
Lex Fridman (2:26:29.940)
And in fact, every project that we have at Quansight,
Lex Fridman (2:26:33.240)
a portion of the money goes directly to Quansight Labs
Travis Oliphant (2:26:36.040)
to help keep it funded.
Lex Fridman (2:26:37.060)
So we've gotten several mechanisms
Travis Oliphant (2:26:38.280)
that we keep Quansight Labs funded.
Lex Fridman (2:26:40.040)
And currently, so I'm really excited about Labs
Travis Oliphant (2:26:41.960)
because it's been a mission for a long time.
Lex Fridman (2:26:43.680)
What kind of projects are within Labs?
Lex Fridman (2:26:45.240)
So Labs is working to make the software better,
Lex Fridman (2:26:47.680)
like make NumPy better, make SciPy better.
Travis Oliphant (2:26:49.760)
It only works on open source.
Lex Fridman (2:26:52.340)
So if somebody wants to, so companies do,
Travis Oliphant (2:26:55.440)
we have a thing called a community work order, we call it.
Lex Fridman (2:26:57.480)
If a company says, I wanna make Spyder better.
Travis Oliphant (2:27:00.020)
Okay, cool.
Lex Fridman (2:27:01.680)
You can pay for a month of a developer of Spyder
Travis Oliphant (2:27:05.440)
or a developer of NumPy or a developer of SciPy.
Lex Fridman (2:27:08.400)
You can't tell them what you want them to do.
Travis Oliphant (2:27:09.840)
You can give them your priorities and things you wish existed
Lex Fridman (2:27:12.800)
and they'll work on those priorities with the community
Travis Oliphant (2:27:16.080)
to get what the community wants
Lex Fridman (2:27:17.560)
and what emerges of what the community wants.
Travis Oliphant (2:27:18.880)
Is there some aspect on the consulting side
Lex Fridman (2:27:21.080)
that is helping, as we were talking about morphology
Lex Fridman (2:27:24.320)
and so on, is there specific application
Lex Fridman (2:27:26.600)
that are particularly like driving,
Lex Fridman (2:27:29.120)
sort of inspiring the need for updates to SciPy?
Lex Fridman (2:27:32.000)
Correct, absolutely, absolutely.
Travis Oliphant (2:27:33.360)
GPUs are absolutely one of them.
Lex Fridman (2:27:34.840)
And new hardware beyond GPUs.
Travis Oliphant (2:27:36.840)
I mean, Tesla's Dojo chip, I'm hoping we'll have a chance
Lex Fridman (2:27:39.720)
to work on that perhaps.
Travis Oliphant (2:27:42.320)
Things like that are definitely driving it.
Lex Fridman (2:27:43.840)
The other thing that's driving it is scalable,
Travis Oliphant (2:27:45.520)
like speed and scale.
Lex Fridman (2:27:47.640)
How do I write NumPy code or NumPy Lite code
Lex Fridman (2:27:50.360)
if I want it to run across a cluster?
Lex Fridman (2:27:52.520)
That's Dask or maybe it's Ray.
Travis Oliphant (2:27:54.240)
I mean, there's sort of ways to do that now.
Lex Fridman (2:27:56.360)
Or there's Moden and there's, so Pandas code,
Travis Oliphant (2:27:59.720)
NumPy code, SciPy code, Scikit learn code
Lex Fridman (2:28:02.080)
that I want to scale.
Lex Fridman (2:28:03.240)
So that's one big area.
Lex Fridman (2:28:04.880)
Have you gotten a chance to chat with Andre and Elon
Travis Oliphant (2:28:08.400)
about particular, because like.
Lex Fridman (2:28:09.840)
No, I would love to, by the way.
Travis Oliphant (2:28:11.360)
I have not, but I'd love to.
Lex Fridman (2:28:12.280)
I just saw their Tesla AI Days video.
Travis Oliphant (2:28:15.520)
Super excited.
Lex Fridman (2:28:16.360)
That's one of the, you know, I love great engineering,
Travis Oliphant (2:28:18.600)
software engineering teams and engineering teams in general.
Lex Fridman (2:28:21.000)
And they're doing a lot of incredible stuff with Python.
Travis Oliphant (2:28:23.040)
They're like revolutionary.
Lex Fridman (2:28:25.040)
So many aspects of the machine learning pipeline.
Travis Oliphant (2:28:28.800)
I agree.
Lex Fridman (2:28:29.640)
That's operating in the real world.
Lex Fridman (2:28:30.600)
And so much of that is Python.
Lex Fridman (2:28:31.880)
Like you said, the guy running, you know, Andre Kapathy,
Travis Oliphant (2:28:35.000)
running Autopilot is tweeting about optimization
Lex Fridman (2:28:38.680)
of NumPy versus.
Travis Oliphant (2:28:41.200)
I would love to talk to him.
Lex Fridman (2:28:42.920)
In fact, we have at Quonset, we've been fortunate enough
Travis Oliphant (2:28:45.080)
to work with Facebook on PyTorch directly.
Lex Fridman (2:28:47.560)
So we have about 13 developers at Quonset.
Travis Oliphant (2:28:49.880)
Some of them are in labs working directly on PyTorch.
Lex Fridman (2:28:52.560)
On PyTorch.
Travis Oliphant (2:28:53.400)
On PyTorch, right.
Lex Fridman (2:28:54.240)
So I basically started Quonset.
Travis Oliphant (2:28:55.680)
I went to both TensorFlow and PyTorch and said,
Lex Fridman (2:28:57.160)
hey, I want to help connect what you're doing
Travis Oliphant (2:29:00.200)
to the broader SciPy ecosystem.
Lex Fridman (2:29:01.920)
Because I see what you're doing.
Travis Oliphant (2:29:03.240)
We have this bigger mission that we want to make sure
Lex Fridman (2:29:04.760)
we don't, you know, lose energy here.
Travis Oliphant (2:29:06.760)
So, and Facebook responded really positively
Lex Fridman (2:29:09.840)
and I didn't get the same reaction.
Travis Oliphant (2:29:12.400)
Not yet, not yet.
Lex Fridman (2:29:13.560)
Not yet.
Lex Fridman (2:29:14.400)
So I really love the folks at TensorFlow, too.
Lex Fridman (2:29:17.480)
They're fantastic.
Travis Oliphant (2:29:18.480)
I think it's the, just how it integrates
Lex Fridman (2:29:21.120)
with their business.
Travis Oliphant (2:29:21.960)
I mean, like I said, there's a lot of reasons.
Lex Fridman (2:29:23.800)
Just the timing, the integration with their business,
Lex Fridman (2:29:25.720)
what they're looking for.
Lex Fridman (2:29:27.160)
They're probably looking for more users.
Lex Fridman (2:29:28.760)
And I was looking to kind of cut up some development effort
Lex Fridman (2:29:31.600)
and they couldn't receive that as easily, I think.
Lex Fridman (2:29:33.840)
So I'm hoping, I'm really hopeful
Lex Fridman (2:29:36.040)
and love the people there.
Lex Fridman (2:29:37.640)
What's the idea behind OpenTeams?
Lex Fridman (2:29:39.800)
So OpenTeams, I'm super excited about OpenTeams
Travis Oliphant (2:29:41.960)
because it's one of the,
Lex Fridman (2:29:43.400)
I mentioned my idea for investing directly in open source.
Lex Fridman (2:29:46.760)
So that's a concept called fair OSS.
Lex Fridman (2:29:48.880)
But one of the things we, when we started Quansight,
Travis Oliphant (2:29:51.000)
we knew we would do is we develop products and ideas
Lex Fridman (2:29:53.680)
and new companies might come out.
Lex Fridman (2:29:55.440)
At Anaconda, this was clear, right?
Lex Fridman (2:29:57.680)
Anaconda, we did so much innovation
Travis Oliphant (2:30:00.240)
that like five or six companies could have come out of that.
Lex Fridman (2:30:02.960)
And we just didn't structure it so they could.
Lex Fridman (2:30:05.000)
But in fact, they have, you look at Dask,
Lex Fridman (2:30:07.240)
there's two companies going out of Dask.
Travis Oliphant (2:30:08.880)
You know, Bokeh could be a company.
Lex Fridman (2:30:10.080)
There's like lots of companies that could exist
Travis Oliphant (2:30:11.720)
off the work we did there.
Lex Fridman (2:30:13.120)
And so I thought, oh, here's a recipe for an incubation,
Travis Oliphant (2:30:16.400)
a concept that we could actually spawn new companies
Lex Fridman (2:30:19.480)
and new innovations.
Lex Fridman (2:30:20.800)
And then the idea has always been,
Lex Fridman (2:30:22.800)
well, money they earn should come back
Travis Oliphant (2:30:24.680)
to fund the open source projects.
Lex Fridman (2:30:26.520)
So labs is, you know, I think there should be
Travis Oliphant (2:30:29.240)
a lot of things like Quansight Labs.
Lex Fridman (2:30:30.720)
I think this concept is one that scales.
Travis Oliphant (2:30:32.560)
You could have a lot of open source research labs.
Lex Fridman (2:30:35.080)
Along the way, so in 2018, when the bigger idea came,
Lex Fridman (2:30:37.480)
how to make open source investable, I said,
Lex Fridman (2:30:38.800)
oh, I need to write, I need to create a venture fund.
Lex Fridman (2:30:41.120)
So we created a venture fund called Quansight Initiate
Lex Fridman (2:30:43.840)
at the same time.
Travis Oliphant (2:30:44.680)
It's an angel fund, really.
Lex Fridman (2:30:45.520)
It's, you know, we started to learn that process.
Lex Fridman (2:30:47.840)
How do we actually do this?
Lex Fridman (2:30:48.680)
How do we get LPs?
Lex Fridman (2:30:49.520)
How do we actually go in this direction and build a fund?
Lex Fridman (2:30:52.480)
And I'm like, every venture fund should have
Travis Oliphant (2:30:54.280)
an associated open source research lab,
Lex Fridman (2:30:55.720)
which is no reason.
Travis Oliphant (2:30:56.560)
Like our venture fund, the carried interest,
Lex Fridman (2:30:59.520)
a portion of it goes to the lab.
Travis Oliphant (2:31:01.840)
It directly will fund the lab.
Lex Fridman (2:31:03.280)
That's fascinating, brother.
Lex Fridman (2:31:04.120)
So you use the power of the organic formation of teams
Lex Fridman (2:31:06.800)
in the open source community, and then like naturally,
Travis Oliphant (2:31:10.680)
that leads to a business that can make money.
Lex Fridman (2:31:13.920)
Yeah, correct.
Lex Fridman (2:31:14.760)
And then it always maintains and loops back
Lex Fridman (2:31:16.680)
to the open source.
Travis Oliphant (2:31:17.520)
Loops back to open source, exactly.
Lex Fridman (2:31:18.440)
I mean, to me, it's a natural fit.
Travis Oliphant (2:31:19.640)
There's something, there's absolutely
Lex Fridman (2:31:20.960)
a repeatable pattern there, and it's also beneficial
Travis Oliphant (2:31:23.640)
because, oh, I have, I have natural connections
Lex Fridman (2:31:26.800)
to the open source if I have an open source research lab.
Travis Oliphant (2:31:29.200)
Like, they'll always, they'll be out there
Lex Fridman (2:31:31.160)
talking to people, and so we've had a chance
Travis Oliphant (2:31:34.280)
to talk to a lot of early stage companies.
Lex Fridman (2:31:35.920)
And we, and our fund focuses on the early stage.
Lex Fridman (2:31:37.880)
So Quansight has the services, the lab, the fund, right?
Lex Fridman (2:31:41.880)
In that process, a lot of stuff started to happen.
Travis Oliphant (2:31:44.200)
They're like, oh, you know, we started to do recruiting
Lex Fridman (2:31:46.320)
and support and training, and I was starting
Travis Oliphant (2:31:48.600)
to build a bigger sales team and marketing team
Lex Fridman (2:31:50.960)
and people besides just developers.
Lex Fridman (2:31:52.880)
And one of the challenges with that
Lex Fridman (2:31:54.080)
is you end up with different cultural aspects.
Travis Oliphant (2:31:55.960)
You know, developers, you know, there's a,
Lex Fridman (2:31:58.800)
in any company you go to, you kind of go look,
Lex Fridman (2:32:00.760)
is this a business led company, a developer led company?
Lex Fridman (2:32:03.080)
Do they kind of coexist?
Lex Fridman (2:32:04.280)
Are they, what's the interface between them?
Lex Fridman (2:32:06.120)
There's always a bit of a tension there.
Travis Oliphant (2:32:07.280)
Like we were talking about before.
Lex Fridman (2:32:08.760)
You know, what is the tension there?
Travis Oliphant (2:32:10.200)
With OpenTeams, I thought, wait a minute,
Lex Fridman (2:32:11.360)
we can actually just create,
Travis Oliphant (2:32:13.160)
like this concept of Quansight plus labs,
Lex Fridman (2:32:15.560)
it's, well, it's specific to the Pi data ecosystem.
Travis Oliphant (2:32:18.480)
The concept is general for all open source.
Lex Fridman (2:32:20.800)
So OpenTeams emerged as a, oh,
Travis Oliphant (2:32:22.640)
we can create a business development company
Lex Fridman (2:32:24.400)
for many, many Quansights, like thousands of Quansights.
Lex Fridman (2:32:28.440)
And it can be a marketplace to connect,
Lex Fridman (2:32:30.840)
essentially be the enterprise software company
Travis Oliphant (2:32:33.440)
of the future.
Lex Fridman (2:32:34.440)
If you look at what enterprise software wants
Travis Oliphant (2:32:36.760)
from the customer side, and during this journey,
Lex Fridman (2:32:38.640)
I've had the chance to work and sell to lots of companies,
Travis Oliphant (2:32:42.360)
Exxon and Shell and Davey Morgan Bank of America,
Lex Fridman (2:32:45.240)
like the Fortune 100,
Lex Fridman (2:32:46.680)
and talk to a lot of people in procurement
Lex Fridman (2:32:48.240)
and see what are they buying and why are they buying?
Travis Oliphant (2:32:50.400)
So, you know, I don't know everything,
Lex Fridman (2:32:51.760)
but I've learned a lot about,
Lex Fridman (2:32:52.720)
oh, what are they really looking for?
Lex Fridman (2:32:54.480)
And they're looking for solutions.
Travis Oliphant (2:32:56.400)
They're constantly given products
Lex Fridman (2:32:58.160)
from enterprise software.
Travis Oliphant (2:33:01.160)
Here's open source, leave the enterprise software,
Lex Fridman (2:33:02.560)
now I buy it.
Lex Fridman (2:33:03.400)
And then they have to stitch it together into a solution.
Lex Fridman (2:33:05.880)
Open source is fantastic for gluing
Travis Oliphant (2:33:07.360)
those solutions together.
Lex Fridman (2:33:08.760)
So, whereas they keep getting new platforms
Travis Oliphant (2:33:11.480)
they're trying to buy,
Lex Fridman (2:33:12.360)
but most open source, what most enterprises want
Travis Oliphant (2:33:15.000)
is tools that they can customize
Lex Fridman (2:33:16.800)
that are as inexpensive as they can.
Travis Oliphant (2:33:18.920)
Yeah, and so you always want to maintain
Lex Fridman (2:33:20.400)
the connection to the open source
Travis Oliphant (2:33:21.560)
because that's going to be the tools.
Lex Fridman (2:33:22.400)
Yes, so open teams is about solving
Travis Oliphant (2:33:24.840)
enterprise software problems.
Lex Fridman (2:33:26.720)
Brilliant, brilliant idea, by the way.
Travis Oliphant (2:33:28.120)
With a connect, but we do it honoring the topology.
Lex Fridman (2:33:30.960)
We don't hire all the people.
Travis Oliphant (2:33:32.360)
We are a network connecting the sales energy
Lex Fridman (2:33:35.120)
and the procurement energy,
Lex Fridman (2:33:36.520)
and we work on the business side,
Lex Fridman (2:33:37.960)
get the deals closed,
Lex Fridman (2:33:39.080)
and then have a network of partners
Lex Fridman (2:33:40.560)
like Quonsight and others who we hand the deals to,
Travis Oliphant (2:33:44.080)
to actually do the work.
Lex Fridman (2:33:44.920)
And then we have to maintain,
Travis Oliphant (2:33:46.480)
I feel like we have to maintain
Lex Fridman (2:33:47.320)
some level of quality control
Lex Fridman (2:33:48.760)
so that the client can rely on open teams
Lex Fridman (2:33:50.960)
to ensure the delivery.
Travis Oliphant (2:33:52.080)
It's not just, here's a lead, go figure that out.
Lex Fridman (2:33:54.640)
But no, we're going to make sure you get what you need.
Travis Oliphant (2:33:57.040)
By the way, it's such a skill,
Lex Fridman (2:33:58.840)
and I don't know if I have the patience.
Travis Oliphant (2:34:00.640)
I will have the patience to talk to the business people
Lex Fridman (2:34:04.080)
or more specific, I mean,
Travis Oliphant (2:34:05.600)
there's all kinds of flavors of business people
Lex Fridman (2:34:07.480)
or like marketing people.
Travis Oliphant (2:34:11.960)
There's a challenge.
Lex Fridman (2:34:12.800)
I hear what you're saying
Travis Oliphant (2:34:13.640)
because I've had the same challenge.
Lex Fridman (2:34:14.880)
And it's true.
Travis Oliphant (2:34:15.720)
There's sometimes you think, okay, this is way overwrought.
Lex Fridman (2:34:18.440)
Yeah, but you have to become an adult
Lex Fridman (2:34:20.240)
and you have to, because the companies have needs.
Lex Fridman (2:34:22.320)
They have ways to make money
Lex Fridman (2:34:24.320)
and they also want to learn and grow,
Lex Fridman (2:34:26.480)
and it's your job to kind of educate them on the best way,
Travis Oliphant (2:34:28.960)
like the value of open source, for example.
Lex Fridman (2:34:31.000)
Right, and I'm really grateful for all my experiences
Travis Oliphant (2:34:32.960)
over the past 14 years, understanding that side of it
Lex Fridman (2:34:35.720)
and still learning for sure,
Lex Fridman (2:34:37.160)
but not just understanding from companies,
Lex Fridman (2:34:38.640)
but also dealing with marketing professionals
Lex Fridman (2:34:40.560)
and sales professionals
Lex Fridman (2:34:41.600)
and people that make a career out of that
Lex Fridman (2:34:43.120)
and understanding what they're thinking about
Lex Fridman (2:34:44.360)
and also understanding, well, let's make this better.
Travis Oliphant (2:34:46.840)
We can really make a place.
Lex Fridman (2:34:48.160)
Open teams I see as the transmission layer
Travis Oliphant (2:34:50.480)
between companies and open source communities
Lex Fridman (2:34:53.720)
producing enterprise software solutions.
Travis Oliphant (2:34:55.600)
Eventually we want to,
Lex Fridman (2:34:56.880)
today we're taking on SaaS and MATLAB
Lex Fridman (2:34:59.320)
and tools that we know we can replace for folks.
Lex Fridman (2:35:01.720)
Really, anytime you have a software tool at an organization
Travis Oliphant (2:35:04.560)
where you have to do a lot of customization
Lex Fridman (2:35:06.200)
to make it work for you.
Travis Oliphant (2:35:07.360)
It's not you're just buying this thing off the shelf
Lex Fridman (2:35:09.000)
and it works.
Travis Oliphant (2:35:09.840)
It's like, okay, you buy this system
Lex Fridman (2:35:11.080)
and then you customize it a lot,
Travis Oliphant (2:35:12.840)
usually with expensive consultants
Lex Fridman (2:35:15.280)
to actually make it work for you.
Travis Oliphant (2:35:17.200)
All of those should be replaced by open source foundations
Lex Fridman (2:35:19.760)
with the same customization.
Travis Oliphant (2:35:20.600)
You're doing such important work,
Lex Fridman (2:35:22.360)
such important work in these giant organizations
Travis Oliphant (2:35:25.440)
that do exactly that,
Lex Fridman (2:35:26.520)
taking some proprietary software
Lex Fridman (2:35:28.360)
and hiring a huge team of consultants
Lex Fridman (2:35:30.520)
that customize it and then that whole thing
Travis Oliphant (2:35:32.760)
gets outdated quick.
Lex Fridman (2:35:33.680)
Correct.
Lex Fridman (2:35:34.520)
And so, I mean, that's brilliant.
Lex Fridman (2:35:36.760)
So the one solution to that
Travis Oliphant (2:35:39.360)
is kind of what Tesla's doing a little bit of,
Lex Fridman (2:35:43.240)
which is basically build up a software engineering team.
Travis Oliphant (2:35:46.680)
Like build a team from scratch.
Lex Fridman (2:35:48.320)
Build a team from scratch.
Lex Fridman (2:35:49.160)
And companies are doing it well,
Lex Fridman (2:35:50.000)
that's what they're doing right now.
Travis Oliphant (2:35:50.840)
Yeah, exactly.
Lex Fridman (2:35:51.680)
And that's okay.
Lex Fridman (2:35:52.520)
And you're creating a topology for some of that.
Lex Fridman (2:35:54.360)
You're right.
Travis Oliphant (2:35:55.200)
You just don't have to do it.
Lex Fridman (2:35:56.040)
That's not the only answer, right?
Lex Fridman (2:35:57.040)
And so other companies can access this,
Lex Fridman (2:35:58.880)
be more accessible.
Travis Oliphant (2:35:59.880)
We literally say,
Lex Fridman (2:36:01.120)
open team is the future of enterprise software.
Travis Oliphant (2:36:03.920)
We're still early.
Lex Fridman (2:36:04.760)
Like this idea just percolated over the past year
Travis Oliphant (2:36:07.400)
as we've kind of grown Quansight
Lex Fridman (2:36:08.520)
and realized the extensibility of it.
Travis Oliphant (2:36:10.440)
We just finished in our seed round
Lex Fridman (2:36:13.240)
to help get more sales people
Lex Fridman (2:36:15.160)
and then push the messaging correctly.
Lex Fridman (2:36:17.640)
And there's lots of tools we're building
Travis Oliphant (2:36:19.160)
to make this easier.
Lex Fridman (2:36:20.000)
Like we wanna automate the processes.
Travis Oliphant (2:36:21.720)
We feel like a lot of the power
Lex Fridman (2:36:23.560)
is the efficiency of the sales process.
Travis Oliphant (2:36:25.600)
There's a lot of wasted energy in small teams
Lex Fridman (2:36:29.400)
and the sales energy to get into large companies
Lex Fridman (2:36:31.640)
and make a deal.
Lex Fridman (2:36:32.680)
There's a lot of money spent on that process.
Travis Oliphant (2:36:34.720)
Creating the tools and processes for that sales.
Lex Fridman (2:36:36.560)
So make that super seamless.
Lex Fridman (2:36:38.160)
So a single company can go,
Lex Fridman (2:36:39.680)
oh, I've got my contract with open teams.
Travis Oliphant (2:36:41.400)
We've got a subscription they can get.
Lex Fridman (2:36:43.040)
They can make that procurement seamless.
Lex Fridman (2:36:45.200)
And then the fact they have access
Lex Fridman (2:36:46.720)
to the entire open source ecosystem.
Lex Fridman (2:36:48.840)
And we have a part of our work
Lex Fridman (2:36:51.240)
that's embracing open source ecosystems
Lex Fridman (2:36:53.400)
and making sure we're doing things useful for them
Lex Fridman (2:36:55.080)
or serving them.
Lex Fridman (2:36:56.160)
And then companies making sure
Lex Fridman (2:36:57.560)
they're getting solutions they care about.
Lex Fridman (2:36:59.200)
And then figuring out which targets we have.
Lex Fridman (2:37:02.480)
We're not taking on all of open source,
Travis Oliphant (2:37:04.720)
all of enterprise software yet.
Lex Fridman (2:37:06.040)
But we're step by step.
Travis Oliphant (2:37:07.440)
Well this feels like the future.
Lex Fridman (2:37:08.520)
The idea and the vision is brilliant.
Travis Oliphant (2:37:10.600)
Can I ask you, why do you think Microsoft bought GitHub
Lex Fridman (2:37:14.440)
and what do you think is the future of GitHub?
Travis Oliphant (2:37:16.560)
Great point.
Lex Fridman (2:37:17.400)
I thought it was a brilliant move.
Travis Oliphant (2:37:18.220)
I think they did because Microsoft has always
Lex Fridman (2:37:20.620)
had a developer centric culture.
Travis Oliphant (2:37:22.660)
Like they always have.
Lex Fridman (2:37:23.500)
Like one of the things Microsoft's always done well
Travis Oliphant (2:37:25.160)
is understand that their power is the developers.
Lex Fridman (2:37:27.440)
It's been, Ballmer didn't necessarily make a good meme
Travis Oliphant (2:37:31.600)
about how he approached that.
Lex Fridman (2:37:32.560)
But they're broadening that.
Travis Oliphant (2:37:34.520)
I think that's why.
Lex Fridman (2:37:35.360)
Because they recognize GitHub is where developers are at.
Lex Fridman (2:37:38.080)
Right?
Lex Fridman (2:37:38.920)
And so.
Lex Fridman (2:37:39.740)
But do they have a vision like open teams
Lex Fridman (2:37:41.080)
type of situation, right?
Travis Oliphant (2:37:41.920)
I don't think so yet.
Lex Fridman (2:37:43.600)
Are they just basically throwing money at developers
Lex Fridman (2:37:46.680)
to show their support?
Lex Fridman (2:37:47.960)
I think so.
Travis Oliphant (2:37:48.800)
Without a topology like you put it.
Lex Fridman (2:37:50.840)
Like a way to leverage that.
Travis Oliphant (2:37:53.280)
Like to give developers actual money.
Lex Fridman (2:37:55.480)
Right.
Travis Oliphant (2:37:56.320)
I don't think so.
Lex Fridman (2:37:57.160)
They're still, it's an enterprise software company.
Lex Fridman (2:37:59.440)
And they make a bunch of money.
Lex Fridman (2:38:00.520)
They make a bunch of games.
Travis Oliphant (2:38:01.360)
They're a big company.
Lex Fridman (2:38:02.640)
They sell products.
Travis Oliphant (2:38:03.760)
I think part of it is they know there's opportunity
Lex Fridman (2:38:06.080)
to make money from GitHub.
Lex Fridman (2:38:07.760)
Right?
Lex Fridman (2:38:08.600)
There's definitely a business there.
Travis Oliphant (2:38:09.440)
You know, to sell to developers.
Lex Fridman (2:38:11.340)
Or to sell to people using development.
Travis Oliphant (2:38:13.280)
I think there's part of that.
Lex Fridman (2:38:14.240)
I think part of it is also there's,
Travis Oliphant (2:38:15.880)
they had definitely wanted to recognize
Lex Fridman (2:38:18.080)
that you need to value open source
Travis Oliphant (2:38:20.560)
to get great developers.
Lex Fridman (2:38:21.920)
Which is an important concept that was emerging
Travis Oliphant (2:38:24.000)
over the past 10 years.
Lex Fridman (2:38:25.000)
That, you know, pay at Pi Data.
Travis Oliphant (2:38:28.000)
We were able to convince J.P. Morgan
Lex Fridman (2:38:29.880)
to support Pi Data because of that fact.
Lex Fridman (2:38:31.480)
Right?
Lex Fridman (2:38:32.320)
That was where the money for them putting
Travis Oliphant (2:38:33.440)
a couple hundred thousand into supporting Pi Data
Lex Fridman (2:38:35.160)
for several conferences was they want developers.
Lex Fridman (2:38:37.800)
And they realized that developers want
Lex Fridman (2:38:39.480)
to participate in open source.
Lex Fridman (2:38:40.720)
So enterprise software folks don't always understand
Lex Fridman (2:38:43.200)
how their software gets used.
Travis Oliphant (2:38:44.600)
Having spent a lot of time on the floors
Lex Fridman (2:38:46.560)
at J.P. Morgan, at InShell, at ExxonMobil,
Travis Oliphant (2:38:49.600)
you see, oh, these companies have large development teams.
Lex Fridman (2:38:52.880)
And then they're kind of dealing with
Travis Oliphant (2:38:55.280)
what's being delivered to them.
Lex Fridman (2:38:56.720)
So I really feel kind of a privilege
Travis Oliphant (2:38:58.360)
that I had a chance to learn some of these people
Lex Fridman (2:39:00.480)
and see what they're doing.
Lex Fridman (2:39:01.800)
And even work alongside them, you know,
Lex Fridman (2:39:04.000)
as a consultant, using open source and trying to figure,
Lex Fridman (2:39:07.640)
how do we make this work inside of our large organization?
Lex Fridman (2:39:09.960)
Some of it is actually, for a large organization,
Travis Oliphant (2:39:13.000)
some of it is messaging to the world
Lex Fridman (2:39:14.800)
that you care about developers
Lex Fridman (2:39:16.280)
and you're the cool, you care.
Lex Fridman (2:39:18.840)
Like, for example, like if Ford,
Lex Fridman (2:39:21.040)
cause I talked to them, like car companies, right?
Lex Fridman (2:39:23.880)
They want to attract, you know,
Travis Oliphant (2:39:26.680)
you want to take on Tesla and autopilot.
Lex Fridman (2:39:28.760)
You want to take on, right?
Lex Fridman (2:39:29.960)
And so what do you do there?
Lex Fridman (2:39:31.720)
You show that you're cool.
Travis Oliphant (2:39:32.960)
Like you try to show off that you care about developers
Lex Fridman (2:39:36.480)
and they have a lot of trouble doing that.
Lex Fridman (2:39:39.040)
And like one way, I think like Ford should have bought GitHub.
Lex Fridman (2:39:42.720)
They just to show off, like these old school companies
Lex Fridman (2:39:46.880)
and it's in a lot of different industries.
Lex Fridman (2:39:49.960)
There's probably different ways.
Travis Oliphant (2:39:51.080)
It's probably an art show that you care to developers.
Lex Fridman (2:39:54.080)
And the developers, it's exactly what you, like,
Travis Oliphant (2:39:57.920)
for example, just spit balling here,
Lex Fridman (2:40:00.520)
but like Ford or somebody like that
Travis Oliphant (2:40:02.520)
could give a hundred million dollars
Lex Fridman (2:40:05.960)
to the development of NumPy.
Lex Fridman (2:40:07.880)
And like literally look at like the top most popular projects
Lex Fridman (2:40:13.200)
in Python and just say, we're just going to give money.
Travis Oliphant (2:40:17.080)
Like that's going to immediately make you cool.
Lex Fridman (2:40:20.240)
They could actually, yeah.
Lex Fridman (2:40:21.600)
And in fact, they set up NumFocus to make it easy.
Lex Fridman (2:40:24.400)
But the challenge was,
Travis Oliphant (2:40:26.080)
is also you have to have some business development.
Lex Fridman (2:40:28.480)
Like it's a bit of a seeding problem, right?
Lex Fridman (2:40:31.280)
And you look at how,
Lex Fridman (2:40:32.120)
I've talked to the folks at Linux Foundation,
Travis Oliphant (2:40:33.400)
know how they're doing it.
Lex Fridman (2:40:34.360)
I know how, and starting NumFocus,
Travis Oliphant (2:40:36.600)
because we had two babies in 2012.
Lex Fridman (2:40:39.400)
One was Anaconda, one was NumFocus, right?
Lex Fridman (2:40:41.120)
And they were both important efforts.
Lex Fridman (2:40:42.760)
They had distinct journeys
Lex Fridman (2:40:44.000)
and super grateful that both existed
Lex Fridman (2:40:46.200)
and still grateful both exist.
Lex Fridman (2:40:48.720)
But there's different energies in getting donations
Lex Fridman (2:40:51.840)
as there is getting, this is important to my business.
Travis Oliphant (2:40:55.320)
Like I'm selling you something that this is a,
Lex Fridman (2:40:58.680)
I'm going to make money this way.
Travis Oliphant (2:41:00.280)
Like if you can tie it,
Lex Fridman (2:41:01.120)
if you can tie the message to an ROI for the company,
Travis Oliphant (2:41:04.040)
it becomes a brainer.
Lex Fridman (2:41:04.880)
That's more effective.
Lex Fridman (2:41:05.720)
It's much more effective, right?
Lex Fridman (2:41:06.920)
So, and there are rational arguments to make.
Travis Oliphant (2:41:09.520)
I've tried to have conversations with marketing,
Lex Fridman (2:41:11.120)
especially marketing departments.
Travis Oliphant (2:41:12.240)
Like very early on, it was clear to me that,
Lex Fridman (2:41:14.840)
oh, you could just take a fraction of your marketing budget
Lex Fridman (2:41:18.160)
and just spend it on open source development.
Lex Fridman (2:41:20.240)
And you get better results from your marketing.
Travis Oliphant (2:41:23.760)
Like, because.
Lex Fridman (2:41:24.600)
How did those, can I, sorry,
Travis Oliphant (2:41:26.000)
I'm going to try not to go and rants here.
Lex Fridman (2:41:27.920)
What have you learned from the interaction
Travis Oliphant (2:41:29.800)
with the marketing folks on that kind of,
Lex Fridman (2:41:31.440)
because you gave a great example
Travis Oliphant (2:41:34.160)
of something that will obviously be much better investment
Lex Fridman (2:41:37.240)
in terms of marketing is supporting open source projects.
Travis Oliphant (2:41:40.360)
The challenge is not dissimilar
Lex Fridman (2:41:41.840)
from the challenge you have in academia
Lex Fridman (2:41:44.480)
or the different colleges, right?
Lex Fridman (2:41:46.520)
Knowledge gets very specific and very channeled, right?
Lex Fridman (2:41:50.000)
And so people get,
Lex Fridman (2:41:51.160)
they get a lot of learning in the thing they know about.
Lex Fridman (2:41:53.920)
And it's hard then to bridge that
Lex Fridman (2:41:56.200)
and to get them to think differently enough
Travis Oliphant (2:41:58.160)
to have a sense that you might have something to offer
Lex Fridman (2:42:02.160)
because it's different.
Lex Fridman (2:42:03.000)
It's like, well, how do I implement that?
Lex Fridman (2:42:04.280)
How do I, what do I do with that?
Lex Fridman (2:42:05.840)
Like, do I, which budget do I take from?
Lex Fridman (2:42:07.840)
Do I slow down my spend on Google ads
Lex Fridman (2:42:10.320)
or my spend on Facebook ads?
Lex Fridman (2:42:11.600)
Or do I not hire a content creator and say like,
Travis Oliphant (2:42:14.640)
there's an operational aspect to that,
Lex Fridman (2:42:16.160)
that you have to be the CMO, right?
Travis Oliphant (2:42:19.080)
Or the CEO, you have to get the right level.
Lex Fridman (2:42:21.000)
So you'll have to hire at a high position level
Travis Oliphant (2:42:24.360)
where they care about this and this.
Lex Fridman (2:42:25.720)
Right, or they won't know how, right?
Lex Fridman (2:42:27.640)
And because you can also do it very clumsily, right?
Lex Fridman (2:42:30.440)
And I've seen it, cause you can,
Travis Oliphant (2:42:32.040)
you absolutely have to honor and recognize
Lex Fridman (2:42:33.760)
the people you're going to and the fact
Travis Oliphant (2:42:36.640)
that if you just throw money at them,
Lex Fridman (2:42:37.800)
it could actually create more problems.
Travis Oliphant (2:42:39.240)
Can I just say, this is not you saying, can I just,
Lex Fridman (2:42:41.320)
cause I just need, I need to say this.
Travis Oliphant (2:42:44.360)
I've been very surprised how often marketing people
Lex Fridman (2:42:49.880)
are terrible at marketing.
Travis Oliphant (2:42:51.760)
I feel like the best marketing is doing something novel
Lex Fridman (2:42:55.600)
and unique that anticipates the future.
Travis Oliphant (2:42:58.240)
It feels like so much of the marketing practice
Lex Fridman (2:43:01.520)
is like what they took in school,
Travis Oliphant (2:43:04.320)
or maybe they're studying for what was the best thing
Lex Fridman (2:43:06.680)
that was done in the past decade,
Lex Fridman (2:43:08.440)
and they're just repeating that over and over,
Lex Fridman (2:43:10.800)
as opposed to innovating, like taking the risk.
Travis Oliphant (2:43:13.760)
To me, marketing.
Lex Fridman (2:43:14.600)
That's a great point.
Travis Oliphant (2:43:15.440)
Is taking the big risk.
Lex Fridman (2:43:17.080)
That's a great point.
Lex Fridman (2:43:17.920)
And being the first one to risk.
Lex Fridman (2:43:18.800)
Yeah, there's an aspect of data observation
Lex Fridman (2:43:21.200)
from that risk, right?
Lex Fridman (2:43:22.160)
That's, I think, shared what they're doing already.
Lex Fridman (2:43:25.120)
But it absolutely, it's about, I think it's content.
Lex Fridman (2:43:27.680)
Like there's this whole world on content marketing
Travis Oliphant (2:43:30.200)
that you could almost say, well, yeah, it can get over,
Lex Fridman (2:43:33.560)
you can get inundated with stuff
Travis Oliphant (2:43:35.080)
that's not relevant to you.
Lex Fridman (2:43:36.400)
Whereas what you're saying would be highly relevant
Lex Fridman (2:43:39.160)
and highly useful and highly beneficial.
Lex Fridman (2:43:41.560)
Yeah, but it's risk.
Travis Oliphant (2:43:42.960)
I mean, that's why I sort of,
Lex Fridman (2:43:44.600)
there's a lot of innovative ways of doing that.
Travis Oliphant (2:43:46.240)
Tesla's an example of people
Lex Fridman (2:43:48.000)
that basically don't do marketing.
Travis Oliphant (2:43:49.960)
They do marketing in a very, like,
Lex Fridman (2:43:52.800)
let's say Elon hired a person who's just good at Twitter
Travis Oliphant (2:43:55.720)
for running Tesla's Twitter account.
Lex Fridman (2:43:57.520)
No, right, right.
Travis Oliphant (2:43:59.120)
I mean, that's exactly what you wanna be doing.
Lex Fridman (2:44:00.840)
You want it to be constantly innovating in the.
Travis Oliphant (2:44:03.120)
Right, there's an aspect of telling.
Lex Fridman (2:44:04.280)
I mean, I've definitely seen people doing great work
Travis Oliphant (2:44:06.920)
where you're not talking about it.
Lex Fridman (2:44:08.400)
Like, I would say that's actually a problem
Travis Oliphant (2:44:09.560)
I have right now with Quonset Labs.
Lex Fridman (2:44:11.360)
Quonset Labs has been doing amazing work,
Travis Oliphant (2:44:12.720)
really excited about it,
Lex Fridman (2:44:13.560)
but we have not been talking about it enough.
Travis Oliphant (2:44:15.480)
We haven't been.
Lex Fridman (2:44:16.320)
And there's different ways to talk about it.
Travis Oliphant (2:44:17.880)
There's different ways to,
Lex Fridman (2:44:18.720)
there's different channels to which to communicate.
Travis Oliphant (2:44:20.800)
There's also, like, I'll just throw some shade
Lex Fridman (2:44:25.600)
at companies I love.
Lex Fridman (2:44:27.880)
So for example, iRobot,
Lex Fridman (2:44:29.160)
I just had a conversation with them.
Travis Oliphant (2:44:30.800)
They make Roombas.
Lex Fridman (2:44:31.840)
Sure.
Lex Fridman (2:44:32.680)
And I think I love, they're incredible robots,
Lex Fridman (2:44:35.440)
but like every time they do like advertisement,
Travis Oliphant (2:44:38.960)
not advertisement, but like marketing type stuff,
Lex Fridman (2:44:41.880)
it just looks so corporate.
Lex Fridman (2:44:44.080)
And to me, the incredible,
Lex Fridman (2:44:47.640)
maybe wrong in the case of iRobot, I don't know.
Lex Fridman (2:44:50.280)
But to me, when you're talking about engineering systems,
Lex Fridman (2:44:54.000)
it's really nice to show off the magic of the engineering
Lex Fridman (2:44:57.000)
and the software and all the geniuses behind this product
Lex Fridman (2:45:02.000)
and the tinkering and like the raw authenticity
Travis Oliphant (2:45:05.080)
of what it takes to build that system
Lex Fridman (2:45:06.800)
versus the marketing people who want to have like
Travis Oliphant (2:45:09.960)
pretty people, like standing there all pretty
Lex Fridman (2:45:12.120)
with the robots, like moving perfectly.
Lex Fridman (2:45:14.600)
So to me, there's some aspect,
Lex Fridman (2:45:16.520)
it's like speaking to the hackers,
Travis Oliphant (2:45:18.040)
you have to throw some bones,
Lex Fridman (2:45:21.040)
some care towards the engineers, the developers,
Travis Oliphant (2:45:25.560)
because there's some aspect, one, for the hiring,
Lex Fridman (2:45:28.720)
but two, there's an authenticity to that,
Travis Oliphant (2:45:31.000)
authenticity to that kind of communication
Lex Fridman (2:45:33.080)
that's really inspiring to the end user as well.
Travis Oliphant (2:45:36.080)
Like if they know that brilliant people,
Lex Fridman (2:45:38.440)
the best in the world are working at your company,
Travis Oliphant (2:45:40.680)
they start to believe that that product
Lex Fridman (2:45:42.640)
that you're creating is really good.
Travis Oliphant (2:45:43.960)
It's interesting, because your initial reaction would be,
Lex Fridman (2:45:45.640)
wait, there's different users here.
Lex Fridman (2:45:46.760)
Why would you do that to, you know,
Lex Fridman (2:45:48.400)
my wife bought a Roomba, and she loves developers,
Travis Oliphant (2:45:52.120)
she loves me, but she doesn't care about that culture.
Lex Fridman (2:45:56.560)
So essentially what you said is actually the authenticity,
Travis Oliphant (2:45:59.600)
because everyone has a friend, everyone knows people,
Lex Fridman (2:46:01.160)
there's word of mouth, I mean, if you.
Travis Oliphant (2:46:02.680)
Word of mouth is so, so proper.
Lex Fridman (2:46:04.160)
Yeah, exactly, that's interesting.
Travis Oliphant (2:46:05.640)
Because I think it's the lack of that realization,
Lex Fridman (2:46:07.560)
there's this halo effect that influences
Travis Oliphant (2:46:09.840)
your general marketing, interesting.
Lex Fridman (2:46:11.720)
For some stupid reason, I do have a platform,
Lex Fridman (2:46:14.640)
and it seems that the reason I have a platform,
Lex Fridman (2:46:16.920)
many others like me, millions of others,
Travis Oliphant (2:46:19.480)
is like the authenticity,
Lex Fridman (2:46:21.160)
and like we get excited naturally about stuff.
Lex Fridman (2:46:23.960)
And like, I don't want to get excited
Lex Fridman (2:46:25.760)
about that iRobot video,
Travis Oliphant (2:46:27.800)
because it's boring, it's marketing, it's corporate,
Lex Fridman (2:46:30.760)
as opposed to, I wanted to do some fun,
Travis Oliphant (2:46:33.600)
this is me, like a shout out to iRobot,
Lex Fridman (2:46:36.240)
is they're not letting me get into the robot.
Travis Oliphant (2:46:39.360)
Yeah, well there's an aspect of,
Lex Fridman (2:46:40.920)
that could be benefiting from a culture of modularity,
Travis Oliphant (2:46:44.840)
like add ons, and that could actually dramatically help.
Lex Fridman (2:46:47.840)
You've seen that over history,
Travis Oliphant (2:46:49.300)
I mean, Apple is an example of a company like that,
Lex Fridman (2:46:51.160)
or the, like, I can see what your point is,
Travis Oliphant (2:46:54.400)
is that you have something that needs to be,
Lex Fridman (2:46:56.920)
it needs to be adopted broadly,
Travis Oliphant (2:46:58.240)
the concept needs to be adopted broadly.
Lex Fridman (2:47:00.040)
And if you want to go beyond this one device,
Travis Oliphant (2:47:01.640)
you need to engage this community.
Lex Fridman (2:47:04.220)
Yeah, and connecting to the open source that you said.
Travis Oliphant (2:47:07.560)
I gotta ask you,
Lex Fridman (2:47:09.960)
you're a programmer,
Travis Oliphant (2:47:11.800)
one of the most impactful programmers ever.
Lex Fridman (2:47:14.840)
You've led many programmers, you lead many programmers.
Lex Fridman (2:47:18.560)
What are some, from a programmer perspective,
Lex Fridman (2:47:21.180)
what makes a good programmer?
Lex Fridman (2:47:23.360)
What makes a productive programmer?
Lex Fridman (2:47:25.000)
Is there a device you can give
Lex Fridman (2:47:27.140)
to be a great programmer in this world?
Lex Fridman (2:47:28.480)
That's a great, great question.
Lex Fridman (2:47:30.280)
And there are times in my life
Lex Fridman (2:47:31.640)
I'd probably answer this even better
Travis Oliphant (2:47:32.920)
than I hope maybe give an answer today.
Lex Fridman (2:47:35.040)
Because I thought about this numerous times,
Travis Oliphant (2:47:36.700)
like right now I've spent on so much time
Lex Fridman (2:47:38.280)
recently hiring salespeople that,
Travis Oliphant (2:47:41.000)
That your mind is a little bit on something else.
Lex Fridman (2:47:43.440)
On something else.
Lex Fridman (2:47:44.280)
But I reflected on the past,
Lex Fridman (2:47:46.080)
and also, you know, I have some really,
Travis Oliphant (2:47:48.160)
the only way I can do this,
Lex Fridman (2:47:49.000)
is I have some really great programmers that I work with,
Travis Oliphant (2:47:51.440)
who lead the teams that they lead.
Lex Fridman (2:47:53.240)
And my goal is to inspire them and hopefully help them,
Travis Oliphant (2:47:56.600)
encourage them, and be,
Lex Fridman (2:47:57.800)
help them encourage with their teams.
Travis Oliphant (2:47:59.620)
I would say there's a number of things, couple things.
Lex Fridman (2:48:01.200)
One is curiosity.
Travis Oliphant (2:48:03.860)
Like you, I think a programmer without curiosity
Lex Fridman (2:48:07.700)
is mundane.
Travis Oliphant (2:48:09.600)
Like you'll lose interest, you won't do your best work.
Lex Fridman (2:48:12.240)
So it's sort of, it's an affect.
Travis Oliphant (2:48:13.640)
It's sort of, are you,
Lex Fridman (2:48:14.480)
you have some curiosity about things.
Travis Oliphant (2:48:16.800)
I think two, don't try to do everything at once.
Lex Fridman (2:48:19.600)
Recognize that you're, you know, we're limited as humans.
Travis Oliphant (2:48:21.960)
You're limited as a human.
Lex Fridman (2:48:23.200)
And each one of us are limited in different ways.
Travis Oliphant (2:48:24.920)
You know, we all have our different strengths and skills.
Lex Fridman (2:48:26.600)
So it's adapting the art of programming to your skills.
Travis Oliphant (2:48:29.880)
One of the things that always works,
Lex Fridman (2:48:31.240)
is to limit what you're trying to solve.
Travis Oliphant (2:48:33.580)
Right, so, if you're part of a team,
Lex Fridman (2:48:36.640)
usually maybe somebody else has put the architecture together
Lex Fridman (2:48:38.920)
and they've gotten given a portion for you if you're young.
Lex Fridman (2:48:41.720)
If you're not part of a team,
Travis Oliphant (2:48:43.440)
it's sort of breaking down the problem into smaller parts,
Lex Fridman (2:48:46.640)
is essential for you to make progress.
Travis Oliphant (2:48:48.620)
It's very easy to take on a big project
Lex Fridman (2:48:50.720)
and try to do it all at once, and you get lost.
Lex Fridman (2:48:52.800)
And then you do it badly.
Lex Fridman (2:48:53.680)
And so thinking about, you know,
Travis Oliphant (2:48:57.700)
very concretely what you're doing,
Lex Fridman (2:48:59.400)
defining the inputs and outputs,
Travis Oliphant (2:49:01.440)
defining what you want to get done.
Lex Fridman (2:49:03.960)
Even just talking about that and like writing down
Lex Fridman (2:49:07.280)
before you write code, just what are you trying to accomplish?
Lex Fridman (2:49:09.440)
I mean, very specific about it, really, really helps.
Lex Fridman (2:49:12.800)
I think using other people's work, right?
Lex Fridman (2:49:17.000)
Don't be afraid that somehow you're,
Travis Oliphant (2:49:20.000)
like you should do it all.
Lex Fridman (2:49:21.280)
Like, nobody does.
Travis Oliphant (2:49:23.240)
Stand on the shoulders of giants.
Lex Fridman (2:49:25.240)
And copy and paste from Stack Overflow.
Travis Oliphant (2:49:26.720)
Copy and paste from Stack Overflow.
Lex Fridman (2:49:28.200)
But don't just copy and paste,
Travis Oliphant (2:49:30.040)
this is particularly relevant in the era of Codex
Lex Fridman (2:49:31.760)
and the auto generated code, which is essentially,
Travis Oliphant (2:49:34.960)
I see as an indexing of Stack Overflow.
Lex Fridman (2:49:36.760)
Right, exactly.
Travis Oliphant (2:49:37.600)
Secondly, it's like.
Lex Fridman (2:49:38.440)
It's a search engine.
Travis Oliphant (2:49:39.280)
It's a search engine over Stack Overflow, basically.
Lex Fridman (2:49:41.280)
So it's not, I mean, we've had this for a while.
Lex Fridman (2:49:43.480)
But really, you want to cut and paste, but not blindly.
Lex Fridman (2:49:47.300)
Like, absolutely I've cut and paste to understand,
Lex Fridman (2:49:51.000)
but then you understand.
Lex Fridman (2:49:52.320)
Oh, this is what this means.
Travis Oliphant (2:49:53.640)
Oh, this is what it's doing.
Lex Fridman (2:49:54.920)
And understand as much as you can.
Lex Fridman (2:49:56.680)
So it's critical, that's where the curiosity comes in.
Lex Fridman (2:49:59.080)
If you're just blindly cutting and pasting,
Travis Oliphant (2:50:01.000)
you're not gonna understand.
Lex Fridman (2:50:02.240)
So understand, and then be sensitive to hype cycles.
Travis Oliphant (2:50:08.600)
Right, every few often there's always a,
Lex Fridman (2:50:10.920)
oh, test driven development is the answer.
Travis Oliphant (2:50:12.520)
Oh, object oriented is the answer.
Lex Fridman (2:50:13.800)
Oh, there's always an answer.
Travis Oliphant (2:50:16.520)
Agile is the answer.
Lex Fridman (2:50:18.400)
Be cautious of jumping onto a hype cycle.
Travis Oliphant (2:50:20.840)
Like, likely there's signal.
Lex Fridman (2:50:22.520)
Like, there's a thing there
Travis Oliphant (2:50:23.440)
that's actually valuable, you can learn from.
Lex Fridman (2:50:25.320)
But it's almost certainly not the answer
Travis Oliphant (2:50:27.720)
to everything you need.
Lex Fridman (2:50:28.960)
What lessons do you draw
Lex Fridman (2:50:30.160)
from you having created NumPy and SciPy?
Lex Fridman (2:50:34.100)
Like, in service of sort of answering the question
Travis Oliphant (2:50:37.200)
of what it takes to be a great programmer
Lex Fridman (2:50:38.840)
and giving advice to people.
Lex Fridman (2:50:40.520)
How can you be the next person to create a SciPy?
Lex Fridman (2:50:42.960)
Yeah, so one is listen.
Lex Fridman (2:50:45.640)
To?
Lex Fridman (2:50:46.480)
Listen.
Lex Fridman (2:50:47.300)
To who?
Lex Fridman (2:50:48.140)
To people that have a problem, right?
Lex Fridman (2:50:51.440)
Which is everybody, right?
Lex Fridman (2:50:52.520)
But listen, and listen to many.
Lex Fridman (2:50:54.960)
And then try to, and then do.
Lex Fridman (2:50:57.460)
Like, you're gonna have to do an experiment, you know?
Travis Oliphant (2:50:59.760)
Do, fall down, don't be afraid to fall down.
Lex Fridman (2:51:01.940)
Don't be afraid, the first thing you do
Lex Fridman (2:51:04.240)
is probably gonna suck, and that's okay, right?
Lex Fridman (2:51:07.600)
It's honestly, I think iteration is the key to innovation.
Lex Fridman (2:51:11.240)
And it's almost that psychological hesitation we have
Lex Fridman (2:51:16.240)
to just iterate.
Travis Oliphant (2:51:18.520)
Like, yeah, we know it's not great,
Lex Fridman (2:51:20.560)
but next time it'll be better.
Travis Oliphant (2:51:22.000)
I mean, just keep learning and keep improving.
Lex Fridman (2:51:25.560)
So it's an attitude.
Lex Fridman (2:51:27.700)
And then it doesn't take intense concentration, right?
Lex Fridman (2:51:32.160)
Good things don't happen just,
Lex Fridman (2:51:34.560)
it's not quite like TikTok or like Facebook, you know?
Lex Fridman (2:51:38.200)
You can't scroll your way to good programming, right?
Travis Oliphant (2:51:40.520)
There are sincere hours of deep,
Lex Fridman (2:51:44.720)
don't be afraid of the deep problem.
Travis Oliphant (2:51:46.040)
Like, often people will run away from something
Lex Fridman (2:51:47.680)
because, oh, I can't solve this.
Lex Fridman (2:51:49.000)
And you might be right, but give it an hour.
Lex Fridman (2:51:51.360)
Give it a couple of hours and see.
Lex Fridman (2:51:53.360)
And just five minutes, not gonna give you that.
Lex Fridman (2:51:56.560)
Was it lonely when you were building SciPy and NumPy?
Travis Oliphant (2:52:00.520)
Hugely, yeah, absolutely lonely,
Lex Fridman (2:52:02.520)
in the sense of you had to have an inner drive,
Lex Fridman (2:52:05.760)
and that inner drive for me always comes from,
Lex Fridman (2:52:08.000)
I have to see that this is right in some angle.
Travis Oliphant (2:52:11.640)
I have to believe it, that this is the right approach,
Lex Fridman (2:52:13.360)
the right thing to do.
Travis Oliphant (2:52:14.720)
With SciPy, it was like, oh yeah,
Lex Fridman (2:52:16.400)
the world needs libraries and Python.
Travis Oliphant (2:52:19.080)
Clearly Python's popular enough
Lex Fridman (2:52:20.720)
with enough influential people to start,
Lex Fridman (2:52:22.960)
and it needs more libraries.
Lex Fridman (2:52:24.640)
So that is a good in and of itself.
Lex Fridman (2:52:26.600)
So I'm gonna go do that good.
Lex Fridman (2:52:28.360)
So find a good, find a thing that you know is good
Lex Fridman (2:52:30.360)
and just work on it.
Lex Fridman (2:52:33.040)
So that has to happen, and it is.
Lex Fridman (2:52:34.720)
And you kind of have to have enough realization
Lex Fridman (2:52:37.000)
of your mission to be okay with the naysayer
Travis Oliphant (2:52:40.280)
or the fact that not everybody joins you at front.
Lex Fridman (2:52:42.200)
In fact, one thing I've talked to people a lot,
Travis Oliphant (2:52:43.480)
I've seen a lot of projects come, and some fail.
Lex Fridman (2:52:45.480)
Not everything I've done has actually worked perfectly.
Travis Oliphant (2:52:47.600)
I've tried a bunch of stuff that, okay,
Lex Fridman (2:52:49.160)
that didn't really work, or this isn't working, and why.
Lex Fridman (2:52:51.920)
But you see the patterns, and one of the key things is
Lex Fridman (2:52:55.800)
you can't even know for six months.
Travis Oliphant (2:52:59.040)
I say 18 months right now.
Lex Fridman (2:53:00.200)
If you're starting a new project,
Travis Oliphant (2:53:01.800)
you gotta give it a good 18 month run
Lex Fridman (2:53:03.200)
before you even know if the feedback's there.
Travis Oliphant (2:53:05.920)
You're not gonna know in six months.
Lex Fridman (2:53:07.880)
You might have the perfect thing,
Lex Fridman (2:53:08.720)
but six months from now, it's still kind of still emerging.
Lex Fridman (2:53:11.480)
So give it time, because you're dealing with humans,
Lex Fridman (2:53:13.360)
and humans have an inertial energy
Lex Fridman (2:53:15.960)
that just doesn't change that quickly, so.
Travis Oliphant (2:53:18.680)
Let me ask a silly question, but like you said,
Lex Fridman (2:53:23.560)
you're focused on the sales side of things currently,
Lex Fridman (2:53:26.120)
but back when you were actively programming,
Lex Fridman (2:53:28.960)
maybe in the 90s, you talked about IDEs.
Lex Fridman (2:53:31.680)
What's a setup that you have that brings you joy?
Lex Fridman (2:53:36.200)
Keyboard, number of screens, Linux.
Travis Oliphant (2:53:39.640)
I do still like to program some.
Lex Fridman (2:53:40.920)
It's not as much as I used to.
Travis Oliphant (2:53:42.160)
I have two projects I'm super interested in,
Lex Fridman (2:53:44.560)
trying to find funding for them,
Travis Oliphant (2:53:45.640)
trying to figure out teams for them,
Lex Fridman (2:53:47.200)
but I could talk about those.
Lex Fridman (2:53:49.040)
But what I, yeah, I'm an Emacs guy.
Lex Fridman (2:53:51.960)
Great, thank the superior editor, everybody.
Travis Oliphant (2:53:56.080)
I've got, I don't often delete tweets,
Lex Fridman (2:53:59.000)
but one of the tweets I deleted
Travis Oliphant (2:54:00.600)
when I said Emacs was better than Vim,
Lex Fridman (2:54:02.840)
and then the hate I got from it.
Travis Oliphant (2:54:04.520)
It is.
Lex Fridman (2:54:05.360)
I was like, I'm walking away from this.
Travis Oliphant (2:54:07.640)
I do too, I don't push it.
Lex Fridman (2:54:09.160)
I mean, I'm not.
Travis Oliphant (2:54:10.000)
I'm just joking, of course.
Lex Fridman (2:54:11.080)
Yeah, exactly, it's kind of like,
Lex Fridman (2:54:12.160)
but people do take the editor seriously, right?
Lex Fridman (2:54:14.520)
I did it as a joke.
Travis Oliphant (2:54:15.360)
That's your life.
Lex Fridman (2:54:16.200)
It is, but there's something beautiful to me about Emacs,
Lex Fridman (2:54:20.760)
but for people that love Vim,
Lex Fridman (2:54:22.360)
there's something beautiful to them about that.
Travis Oliphant (2:54:23.200)
There is.
Lex Fridman (2:54:24.040)
I mean, I do use Vim for quick editing.
Travis Oliphant (2:54:26.280)
Like Command Line, if I said quick editing,
Lex Fridman (2:54:27.880)
I will still sometimes use it, but not much.
Travis Oliphant (2:54:30.280)
Like it's simple, corrective signal editor character.
Lex Fridman (2:54:32.760)
So when you were developing SciPy, you were using Emacs?
Travis Oliphant (2:54:34.920)
Emacs, yeah.
Lex Fridman (2:54:35.880)
SciPy and NumPy are all written on Emacs on a Linux box.
Lex Fridman (2:54:39.040)
And CVS and then SVN, version control.
Lex Fridman (2:54:43.160)
Git came later.
Travis Oliphant (2:54:44.040)
Like Git has, I love distributed branch stuff.
Lex Fridman (2:54:48.080)
I think Git is pretty complicated, but I love the concept.
Lex Fridman (2:54:51.640)
And also, of course, GitHub and then GitLab
Lex Fridman (2:54:55.240)
make Git definitely consumable, but that came later.
Lex Fridman (2:54:59.440)
Did you ever touch Lisp at all?
Lex Fridman (2:55:00.880)
Like what were your emotional feelings
Lex Fridman (2:55:03.400)
about all the parentheses?
Lex Fridman (2:55:04.240)
Yeah, so great question.
Lex Fridman (2:55:05.440)
So I find myself appreciating Lisp today
Lex Fridman (2:55:08.240)
much more than I did early.
Travis Oliphant (2:55:09.680)
Because when I came to programming, I knew programming,
Lex Fridman (2:55:11.680)
but I was a domain expert, right?
Lex Fridman (2:55:13.000)
And to me, the parentheses were in the way.
Lex Fridman (2:55:15.720)
It's like, wow, there's just all this,
Travis Oliphant (2:55:17.800)
like it just gets in the way of my thinking
Lex Fridman (2:55:19.320)
about what I'm doing.
Lex Fridman (2:55:20.160)
So why would I have all these, right?
Lex Fridman (2:55:22.440)
That was my initial reaction to it.
Lex Fridman (2:55:24.760)
And now as I appreciate kind of the structure
Lex Fridman (2:55:27.320)
that kind of naturally maps to a logical thinking
Lex Fridman (2:55:30.280)
about a program, I can appreciate them, right?
Lex Fridman (2:55:33.000)
And why it's actually, you could create editors
Travis Oliphant (2:55:35.680)
that make it not so problematic, right, honestly.
Lex Fridman (2:55:40.720)
So I actually have a much more appreciation of Lisp
Lex Fridman (2:55:43.000)
and things like Clojure and there's HyVee,
Lex Fridman (2:55:44.720)
which is a Python Lisp that compiles the Python bytecode.
Travis Oliphant (2:55:48.560)
I think it's challenging.
Lex Fridman (2:55:50.280)
Like typically these languages are,
Travis Oliphant (2:55:53.160)
I even saw the whole data science programming system
Lex Fridman (2:55:55.280)
in Lisp that somebody created, which is cool.
Lex Fridman (2:55:58.360)
But again, I think it's the lack of recognition
Lex Fridman (2:56:00.840)
of the fact that there exists
Lex Fridman (2:56:02.020)
what I call occasional programmers.
Lex Fridman (2:56:04.080)
People that are never gonna be programmers for a living.
Travis Oliphant (2:56:05.840)
They don't want to have all this cuteness in their head.
Lex Fridman (2:56:08.440)
They want just, it's why basic, you know,
Travis Oliphant (2:56:11.880)
Microsoft had the right idea with basic
Lex Fridman (2:56:14.480)
in terms of having that be the language of visual basic,
Travis Oliphant (2:56:17.660)
the language of Excel and SQL Server.
Lex Fridman (2:56:21.280)
They should have converted that to Python 10 years ago.
Travis Oliphant (2:56:23.520)
Like the world would be a better place if they had, but.
Lex Fridman (2:56:27.200)
There's also, there's a beauty and a magic
Travis Oliphant (2:56:29.660)
to the history behind a language in Lisp.
Lex Fridman (2:56:31.640)
You know, some of the most interesting people
Travis Oliphant (2:56:34.020)
in the history of computer science
Lex Fridman (2:56:35.880)
and artificial intelligence have used Lisp.
Lex Fridman (2:56:37.920)
So you feel.
Lex Fridman (2:56:40.000)
Well, especially that language,
Travis Oliphant (2:56:41.200)
when you have a language, you can think in it.
Lex Fridman (2:56:43.440)
And it helps you think better.
Lex Fridman (2:56:44.280)
And it attracts a certain kinds of people
Lex Fridman (2:56:45.640)
that think in a certain kind of way.
Lex Fridman (2:56:46.920)
And then that's there.
Lex Fridman (2:56:48.560)
Okay, so what about like small laptop with a tiny keyboard,
Lex Fridman (2:56:52.140)
or is there like three screens?
Lex Fridman (2:56:55.000)
You know, good question.
Travis Oliphant (2:56:55.840)
I've never gotten into the big, many screens to be honest.
Lex Fridman (2:56:58.080)
I mean, and maybe it's because in my head,
Travis Oliphant (2:57:00.720)
I kind of just, I just swap between windows.
Lex Fridman (2:57:03.480)
Like, partly because I guess I really can't process
Travis Oliphant (2:57:07.480)
three screens at once anyway.
Lex Fridman (2:57:09.200)
Like, I just am looking at one and I just flip.
Travis Oliphant (2:57:12.560)
You know, I flip an application open.
Lex Fridman (2:57:14.460)
So where it's really helpful is actually
Travis Oliphant (2:57:17.340)
when I'm trying to do, you know,
Lex Fridman (2:57:18.440)
here's data and I want to input it from here.
Travis Oliphant (2:57:20.240)
Like this is the only time I really need another screen.
Lex Fridman (2:57:22.280)
So now, because you're both a developer, lead developers,
Lex Fridman (2:57:25.960)
but then there's also these businesses
Lex Fridman (2:57:27.880)
and there's salespeople and you're working
Travis Oliphant (2:57:30.120)
with large companies.
Lex Fridman (2:57:30.960)
Operations people, hiring people, yeah.
Travis Oliphant (2:57:32.480)
The whole thing.
Lex Fridman (2:57:33.400)
Which operating system is your favorite at this point?
Lex Fridman (2:57:37.240)
So Linux was the early days.
Lex Fridman (2:57:38.960)
So yeah, I love Linux as a server side.
Lex Fridman (2:57:41.460)
And it was early days I had my own Linux desktop.
Lex Fridman (2:57:44.340)
I've been on Mac laptops for 10 years now.
Travis Oliphant (2:57:47.800)
Yeah, this is what leadership looks like.
Lex Fridman (2:57:50.040)
As you switch to Mac.
Travis Oliphant (2:57:52.800)
Okay, great.
Lex Fridman (2:57:53.800)
Pretty much, I mean, just the fact that I had
Travis Oliphant (2:57:56.480)
to do PowerPoints, I had to do presentations
Lex Fridman (2:57:58.760)
and you know, plug in, I just couldn't mess
Travis Oliphant (2:58:01.240)
with plugging in laptops, it wouldn't project and yeah.
Lex Fridman (2:58:04.440)
So you mentioned also Quantset Labs and things like that.
Lex Fridman (2:58:09.240)
Can you give advice on how to hire great programmers
Lex Fridman (2:58:13.640)
and great people?
Travis Oliphant (2:58:14.600)
Yeah, I would say, produce an open source project,
Lex Fridman (2:58:19.400)
get people contributing to it and hire those people.
Travis Oliphant (2:58:21.560)
Yeah, I mean, you're doing it sort of,
Lex Fridman (2:58:25.080)
you may be perhaps a little biased,
Lex Fridman (2:58:27.080)
but that's probably 100% really good advice.
Lex Fridman (2:58:30.320)
I find it hard to hire.
Travis Oliphant (2:58:31.800)
I still find it hard to hire, like in terms of,
Lex Fridman (2:58:34.480)
I don't think that it's not hard to hire
Travis Oliphant (2:58:36.560)
if I've worked with somebody for a couple of weeks,
Lex Fridman (2:58:39.320)
but an hour or two of interviews, I have no idea.
Lex Fridman (2:58:43.600)
So that instinct, that radar of knowing if you're good
Lex Fridman (2:58:47.880)
or not, that you've found that you're still not able to.
Travis Oliphant (2:58:50.720)
It's really hard, I mean, the resume can help,
Lex Fridman (2:58:53.240)
but again, the resume is like a presentation
Travis Oliphant (2:58:55.520)
of the things they want you to see, not the reality of,
Lex Fridman (2:58:58.840)
and there's also, you have to understand
Lex Fridman (2:59:02.800)
what you're hiring for.
Lex Fridman (2:59:03.960)
There are different stages and different kinds of skills.
Lex Fridman (2:59:06.800)
And so it isn't just, one of the things I talk a lot about
Lex Fridman (2:59:10.940)
internally at my company is just that the whole idea
Travis Oliphant (2:59:14.440)
of measuring ourselves against a single axis is flawed
Lex Fridman (2:59:18.600)
because we're not, it's a multidimensional space
Lex Fridman (2:59:20.600)
and how do you order a multidimensional space?
Lex Fridman (2:59:22.120)
There isn't one ordering.
Lex Fridman (2:59:23.440)
So this whole idea, you immediately get projected
Lex Fridman (2:59:26.160)
into a thing when you're talking about hiring
Travis Oliphant (2:59:28.200)
or best or worst or better or not better.
Lex Fridman (2:59:30.660)
So what is the thing you're actually needing?
Lex Fridman (2:59:33.500)
And you can hire for that.
Lex Fridman (2:59:35.960)
There is such a thing, generally, I really value people
Travis Oliphant (2:59:39.040)
who have the affect, that care about open source.
Lex Fridman (2:59:42.920)
Like so in some cases, their affinity to open source
Travis Oliphant (2:59:45.720)
is simply kind of a filter of an affect.
Lex Fridman (2:59:49.100)
However, I have found this interesting dichotomy
Travis Oliphant (2:59:52.560)
between open source contributors and product creation.
Lex Fridman (2:59:58.520)
There's, I don't know if it's fully true,
Lex Fridman (30:00.540)
And they're related, those are two related questions.
Lex Fridman (30:02.540)
And then the debugging, like the iterative process
Travis Oliphant (30:05.500)
of running the script to figure out what the error is,
Lex Fridman (30:07.820)
maybe even for some people to do the fix yourself.
Lex Fridman (30:11.580)
So do you compile it?
Lex Fridman (30:12.660)
Do you, like how do you distribute that code to them?
Lex Fridman (30:15.620)
And it's interesting because I think
Lex Fridman (30:18.540)
it's exactly what you're talking about.
Travis Oliphant (30:20.100)
If you increase the circle of empathy,
Lex Fridman (30:24.260)
the circle of people that are able to use your programs,
Travis Oliphant (30:28.900)
you increase it, it's like effectiveness and it's power.
Lex Fridman (30:32.900)
And so you have to think, can I write scripts?
Travis Oliphant (30:37.020)
Can I write programs that can be used by medical engineers,
Lex Fridman (30:40.140)
by all kinds of people that don't know programming
Lex Fridman (30:43.900)
and actually maybe plant a seed,
Lex Fridman (30:46.900)
have them catch the bug of programming
Lex Fridman (30:48.380)
so that they start on a journey.
Lex Fridman (30:50.180)
That's a huge responsibility.
Lex Fridman (30:51.500)
And ultimately it has to do with the Amazon one click buy.
Lex Fridman (30:55.340)
Like how frictionless can you make the early steps?
Travis Oliphant (30:58.780)
Frictionless is actually really key.
Lex Fridman (31:00.380)
To go in any community is, any friction point,
Lex Fridman (31:03.020)
you're just gonna lose some people, right?
Lex Fridman (31:05.180)
Now sometimes you may wanna intentionally do that.
Travis Oliphant (31:09.060)
If you're early enough on, you need a lot of help.
Lex Fridman (31:11.620)
You need people who have the skills.
Travis Oliphant (31:13.340)
You might actually, it's helpful.
Lex Fridman (31:14.740)
You don't necessarily have too many users
Travis Oliphant (31:16.820)
as opposed to contributors if you're early on.
Lex Fridman (31:20.340)
Anyway, there's, SciFi started in 98,
Lex Fridman (31:23.100)
but it really emerged as this collection of modules
Lex Fridman (31:25.740)
that I was just putting on the net.
Lex Fridman (31:27.340)
People were downloading and I think I got 100 users, right?
Lex Fridman (31:31.580)
By the end of that year.
Lex Fridman (31:32.660)
But the fact that I got 100 users and more than that,
Lex Fridman (31:35.660)
people started to email me with fixes.
Lex Fridman (31:39.420)
And that was actually intoxicating, right?
Lex Fridman (31:41.300)
That was the, here I'm writing papers
Lex Fridman (31:44.220)
and I'm giving conferences and I get people to say hello,
Lex Fridman (31:46.180)
but yeah, good job.
Lex Fridman (31:47.420)
But mostly it was, you're viewed with,
Lex Fridman (31:49.860)
it's competitive, right?
Travis Oliphant (31:51.540)
You publish a paper and people are like,
Lex Fridman (31:52.900)
oh, it wasn't my paper.
Travis Oliphant (31:55.900)
I was starting to see that sense of academic life
Lex Fridman (31:59.220)
where it was so much,
Travis Oliphant (32:00.180)
I thought there was this cooperative effort,
Lex Fridman (32:01.460)
but it sounds like we're here just to one up each other.
Lex Fridman (32:04.940)
And it's not true across the board,
Lex Fridman (32:07.700)
but a lot of that's there.
Lex Fridman (32:08.580)
But here in this world,
Lex Fridman (32:09.660)
I was getting responses from people all over the world.
Lex Fridman (32:13.700)
I remember Pjaro Peterson in Estonia, right?
Lex Fridman (32:16.060)
Was one of the first people.
Lex Fridman (32:17.340)
And he sent me back this make file,
Lex Fridman (32:18.740)
cause the first thing it is, yeah, your build thing stinks
Lex Fridman (32:21.220)
and here's a better make file.
Lex Fridman (32:23.020)
Now it was a complex make file.
Travis Oliphant (32:24.380)
I don't think I never understood that make file actually,
Lex Fridman (32:26.580)
but it worked and it did a lot more.
Lex Fridman (32:29.220)
And so I said, thanks, this is cool.
Lex Fridman (32:30.980)
And that was my first kind of engagement
Travis Oliphant (32:32.500)
with community development.
Lex Fridman (32:35.100)
But the process was, he sent me a patch file.
Travis Oliphant (32:37.660)
I had to upload a new tar ball.
Lex Fridman (32:39.900)
And I just found, I really love that.
Lex Fridman (32:41.580)
And the style back then was here's a mailing list.
Lex Fridman (32:43.660)
It's very, it wasn't as,
Travis Oliphant (32:45.740)
it's certainly weren't the tools that are available today.
Lex Fridman (32:47.660)
It was very early on, but I really started to,
Travis Oliphant (32:49.940)
that's the whole year.
Lex Fridman (32:50.780)
I think I did about seven packages that year, right?
Lex Fridman (32:54.580)
And then by the end of the year,
Lex Fridman (32:55.540)
I collected them into a thing called multipack.
Lex Fridman (32:57.840)
So in 99, there was this thing called multipack.
Lex Fridman (32:59.780)
And that's when a high school student,
Travis Oliphant (33:01.820)
no, he was a high school student at the time,
Lex Fridman (33:03.060)
guy named Robert Kern,
Lex Fridman (33:04.780)
took that package and made a Windows installer, right?
Lex Fridman (33:09.700)
And then of course, a massive increase of usage.
Lex Fridman (33:12.700)
So by the way, most of this development was under Linux.
Lex Fridman (33:15.860)
Yes, yes, it was on Linux.
Travis Oliphant (33:17.380)
I was a Linux developer doing it on a Unix box.
Lex Fridman (33:20.240)
I mean, at the time I was actually getting into,
Travis Oliphant (33:23.020)
I had a new hard drive,
Lex Fridman (33:24.060)
did some kernel programming to make the hard drive work.
Travis Oliphant (33:26.500)
I mean, not programming, but modification to the kernel
Lex Fridman (33:28.780)
so I could actually get a hard drive working.
Travis Oliphant (33:31.180)
I love that aspect of it.
Lex Fridman (33:32.320)
I was also in, at school, I was building a cluster.
Travis Oliphant (33:36.100)
I took Mac computers and you put yellow dog Linux on them.
Lex Fridman (33:40.940)
At the Mayo Clinic, they were just,
Travis Oliphant (33:42.140)
they had all these Macs that were older,
Lex Fridman (33:43.520)
they were just getting rid of.
Lex Fridman (33:44.740)
And so I kind of got permission to go grab them together.
Lex Fridman (33:46.820)
I put about 24 of them together in a cluster, in a cabinet,
Lex Fridman (33:50.340)
and put yellow dog Linux on them all.
Lex Fridman (33:51.700)
And I wrote a C++ program to do MRI simulation.
Travis Oliphant (33:56.240)
That was what I was doing at the same time
Lex Fridman (33:58.900)
for my day job, so to speak.
Lex Fridman (34:01.400)
So I was loving the whole process.
Lex Fridman (34:03.460)
And the same time I was,
Travis Oliphant (34:04.300)
oh, I need a ordinary differential equation.
Lex Fridman (34:06.260)
That's why ordinary differential equations were key
Travis Oliphant (34:08.160)
was because that's the heart of a block equation
Lex Fridman (34:09.820)
for simulating MRI, is an ODE solver.
Lex Fridman (34:12.420)
And so that's, but I actually did that,
Lex Fridman (34:15.720)
it just happened at the same time.
Travis Oliphant (34:16.980)
That's why it was kind of what you're working on
Lex Fridman (34:18.540)
and what you're interested in, they're coinciding.
Travis Oliphant (34:20.500)
I was definitely scratching my own itch
Lex Fridman (34:22.380)
in terms of building stuff.
Lex Fridman (34:24.060)
And which helped in the sense that I was using it for me,
Lex Fridman (34:27.040)
so at least I had one user.
Travis Oliphant (34:28.540)
I had one person who was like, well, no, this is better.
Lex Fridman (34:30.360)
I like this interface better.
Lex Fridman (34:31.420)
And I had the experience of MATLAB
Lex Fridman (34:33.300)
to guide some of what those APIs might look like.
Lex Fridman (34:36.480)
But you're just doing yourself,
Lex Fridman (34:37.720)
you're building all this stuff.
Lex Fridman (34:39.000)
But with the Windows installer,
Lex Fridman (34:40.060)
it was the first time I realized, oh yeah,
Travis Oliphant (34:41.460)
the binary installer really helps people.
Lex Fridman (34:43.740)
And so that led to spending more time
Travis Oliphant (34:46.980)
on that side of things.
Lex Fridman (34:49.100)
So around 2000, so I graduated my PhD in 2000,
Travis Oliphant (34:52.780)
end of year, end of 2000.
Lex Fridman (34:53.780)
So 99 doing a lot of work there,
Travis Oliphant (34:56.660)
98 doing a lot of work there,
Lex Fridman (34:57.740)
99 kind of spending more time on my PhD,
Travis Oliphant (35:00.780)
helping people use the tools,
Lex Fridman (35:02.420)
thinking about what do I want to go from here.
Travis Oliphant (35:04.060)
There was a company, there was a guy actually,
Lex Fridman (35:05.620)
Eric Jones and Travis Vought.
Travis Oliphant (35:07.620)
They were two friends who founded a company called NTHOT.
Lex Fridman (35:11.080)
It's here in Austin, still here.
Lex Fridman (35:13.620)
And they, Eric contacted me at the time
Lex Fridman (35:16.060)
when I was a graduate student still.
Lex Fridman (35:19.380)
And he said, hey, why don't you come down?
Lex Fridman (35:20.860)
We want to build a company.
Travis Oliphant (35:22.660)
We're thinking of a scientific company
Lex Fridman (35:25.720)
and we want to take what you're doing
Lex Fridman (35:27.560)
and kind of add it to some stuff that he'd done.
Lex Fridman (35:29.460)
He'd written some tools.
Lex Fridman (35:31.220)
And then Piero Peterson had done F2Py.
Lex Fridman (35:32.820)
Let's come together and build,
Travis Oliphant (35:34.380)
pull this all together and call it SciPy.
Lex Fridman (35:36.740)
So that's the origin of the SciPy brand.
Travis Oliphant (35:39.480)
It came from multi pack
Lex Fridman (35:41.380)
and a whole bunch of modules I'd written,
Travis Oliphant (35:42.580)
plus a few things from some other folks
Lex Fridman (35:44.500)
and then pulled together in a single installer.
Travis Oliphant (35:47.580)
SciPy was really a distribution of Python
Lex Fridman (35:49.540)
masquerading as a library.
Lex Fridman (35:51.260)
How did you think about SciPy in context of Python,
Lex Fridman (35:54.340)
in context of Numeric, like what?
Lex Fridman (35:56.180)
So we saw SciPy as a way to make an R&D environment
Lex Fridman (35:59.020)
for Python, like use Python, depended on Numeric.
Lex Fridman (36:03.380)
So Numeric was the array library we depended on.
Lex Fridman (36:05.540)
And then from there, extend it with a bunch of modules
Travis Oliphant (36:08.260)
that allowed for, and at the time,
Lex Fridman (36:10.340)
the original vision of SciPy was to have plotting,
Travis Oliphant (36:13.180)
was to have the REPL environment
Lex Fridman (36:16.140)
and kind of really a whole data environment
Travis Oliphant (36:19.500)
that you could then install and get going with.
Lex Fridman (36:21.020)
And that was kind of the thinking.
Lex Fridman (36:23.020)
It didn't really evolve that way, right?
Lex Fridman (36:25.020)
It sort of had a, for one,
Travis Oliphant (36:27.580)
it's really hard to do massive scale projects
Lex Fridman (36:31.940)
with open source collectives.
Travis Oliphant (36:34.300)
Actually, there's sort of an intrinsic cooperation limit
Lex Fridman (36:38.500)
as to which, too many cooks in the kitchen,
Travis Oliphant (36:40.780)
you can do amazing infrastructure work.
Lex Fridman (36:42.780)
When it comes down to bringing it all together
Travis Oliphant (36:44.220)
into a single deliverable,
Lex Fridman (36:45.860)
that actually requires a little more product management
Travis Oliphant (36:49.660)
that is not, that doesn't really emerge
Lex Fridman (36:52.820)
from the same dynamic.
Lex Fridman (36:53.980)
So it struggled, struggled to get almost too many voices.
Lex Fridman (36:57.860)
It's hard to have everybody agree.
Travis Oliphant (36:59.220)
Consensus doesn't really work at that scale.
Lex Fridman (37:02.100)
You end up with politics,
Travis Oliphant (37:03.260)
with the same kind of things that's happened
Lex Fridman (37:05.220)
in large organizations trying to decide
Lex Fridman (37:07.100)
what to do together.
Lex Fridman (37:09.380)
So consensus building was challenging at scale
Lex Fridman (37:12.340)
as more people came in, right?
Lex Fridman (37:13.860)
Early on, it's fine, because there's nobody there.
Lex Fridman (37:15.700)
So it works, but then as you get more successful
Lex Fridman (37:17.740)
and more people use it, all of a sudden,
Travis Oliphant (37:18.980)
oh, there's this scale at which this doesn't work anymore
Lex Fridman (37:22.300)
and we have to come up with different approaches.
Lex Fridman (37:23.980)
So Sidepy came out officially in 2001,
Lex Fridman (37:26.700)
was the first release, most of the time.
Travis Oliphant (37:28.900)
I remember the days of getting that release ready.
Lex Fridman (37:31.060)
It was a Windows installer and there were bugs
Travis Oliphant (37:33.420)
on how the Windows compiler handled complex numbers
Lex Fridman (37:36.300)
and you were chasing segmentation faults.
Lex Fridman (37:38.540)
And it was, it's a lot of work.
Lex Fridman (37:40.420)
There was a lot of effort had nothing to do
Travis Oliphant (37:43.140)
with my area of study.
Lex Fridman (37:45.540)
And at the same time, I had just gotten an offer.
Lex Fridman (37:47.500)
So he wondered if I wanted to come down
Lex Fridman (37:48.780)
and help him start that company with his friend.
Lex Fridman (37:51.460)
And at the time I was like, I was intrigued,
Lex Fridman (37:53.380)
but I was squaring a path, an academic path.
Lex Fridman (37:56.620)
And I had just got an offer to go and teach at my alma mater.
Lex Fridman (37:59.980)
So I took that tenure track position.
Lex Fridman (38:02.420)
And Sidepy, and kind of, then I started to work on Sidepy
Lex Fridman (38:05.180)
as a professor too.
Lex Fridman (38:07.060)
So that's, I left, I've got the Mayo Clinic,
Lex Fridman (38:09.540)
graduated, wrote my thesis using Sidepy,
Travis Oliphant (38:11.700)
wrote, you know, there's images that were created.
Lex Fridman (38:15.500)
Now the plotting tool I used was something
Travis Oliphant (38:17.300)
from Yorick actually.
Lex Fridman (38:18.660)
It was a plotting, a PLT kind of a plotting language
Travis Oliphant (38:21.940)
that I used.
Lex Fridman (38:22.780)
Yorick is a programming language?
Travis Oliphant (38:23.940)
It was a programming language, had a plotting tool,
Lex Fridman (38:26.340)
Dyslin, it had integration to Dyslin.
Travis Oliphant (38:28.940)
I ended up using Dyslin plus some of the plotting
Lex Fridman (38:31.340)
from Yorick linked to from Python.
Travis Oliphant (38:33.740)
Anyway, it was, people don't plot that way now,
Lex Fridman (38:37.180)
but this is before, and Sidepy was trying to add plotting.
Lex Fridman (38:40.260)
Yeah. Right?
Lex Fridman (38:41.460)
It didn't have much success.
Travis Oliphant (38:42.580)
Really the success of plotting came from John Hunter,
Lex Fridman (38:45.580)
who had a similar experience to my experience,
Travis Oliphant (38:47.420)
my kind of maverick experience as a person
Lex Fridman (38:49.660)
just trying to get stuff done and kind of having more time
Lex Fridman (38:51.700)
than money maybe, right?
Lex Fridman (38:53.820)
And John Hunter created what?
Travis Oliphant (38:55.300)
MapPlotLib.
Lex Fridman (38:56.300)
He's the creator of MapPlotLib.
Travis Oliphant (38:57.140)
Yeah, so John Hunter was, you know,
Lex Fridman (38:59.140)
he wasn't a student at the time, but he was an,
Travis Oliphant (39:00.580)
he was working in Quant field and he said,
Lex Fridman (39:02.120)
we need better plotting.
Lex Fridman (39:03.500)
So he just went out and said, cool, I'll make a new project
Lex Fridman (39:05.540)
and we'll call it MapPlotLib.
Lex Fridman (39:06.580)
And he released in 2001,
Lex Fridman (39:08.260)
about the same time that Sidepy came out
Lex Fridman (39:09.920)
and it was separate library, separate install,
Lex Fridman (39:12.960)
use numeric, Sidepy use numeric.
Lex Fridman (39:15.540)
And so Sidepy, you know, in 2001, we released Sidepy
Lex Fridman (39:18.980)
and then Endthought created a conference called Sidepy,
Travis Oliphant (39:22.380)
which was brought people together to talk about the space.
Lex Fridman (39:25.460)
And that conference is still ongoing.
Travis Oliphant (39:26.700)
It's one of the favorite conferences of a lot of people
Lex Fridman (39:28.460)
because it's, you know, it's changed over the years,
Lex Fridman (39:30.820)
but early on it was, you know, a collection of 50 people
Lex Fridman (39:33.740)
who care about, scientists mostly, you know,
Travis Oliphant (39:36.700)
practicing scientists who want, who care about coding
Lex Fridman (39:39.300)
and doing it well and not using MATLAB.
Lex Fridman (39:42.140)
And I remember being driven by, you know, I liked MATLAB,
Lex Fridman (39:44.120)
but I didn't like the fact that,
Lex Fridman (39:46.420)
so I'm not opposed to proprietary software.
Lex Fridman (39:48.060)
I'm actually not an open source zealot.
Travis Oliphant (39:50.220)
I love open source for the, what it brings,
Lex Fridman (39:52.660)
but I also see the role for proprietary software.
Lex Fridman (39:54.460)
But what I didn't like was the fact that I would develop
Lex Fridman (39:56.580)
code and publish it and then effectively telling somebody
Travis Oliphant (39:59.940)
here to run my code, you have to have
Lex Fridman (3:00:00.560)
but there does seem to be the more experienced,
Travis Oliphant (3:00:04.960)
the more affect somebody has an open source community,
Lex Fridman (3:00:08.160)
the less ability to actually produce product that they have.
Lex Fridman (3:00:11.640)
And the opposite is kind of true too.
Lex Fridman (3:00:13.520)
The more product focused are, I find a lot of people,
Travis Oliphant (3:00:16.000)
I've talked to a lot of people who produce
Lex Fridman (3:00:17.020)
really great products and they have a,
Travis Oliphant (3:00:19.400)
they're looking over the open source communities,
Lex Fridman (3:00:21.120)
kind of wanting to participate and play,
Lex Fridman (3:00:23.320)
but they've played here and they do a great job here
Lex Fridman (3:00:26.000)
and then they don't necessarily have some of the same.
Travis Oliphant (3:00:29.520)
Now I don't think that's entirely necessary.
Lex Fridman (3:00:32.040)
I think part of it is cultural, how they've emerged.
Travis Oliphant (3:00:34.880)
Because one of the things that open source communities
Lex Fridman (3:00:36.300)
often lack is great product management,
Travis Oliphant (3:00:39.160)
like some product management energy.
Lex Fridman (3:00:41.000)
That's brilliant, but you want both of those energies
Travis Oliphant (3:00:43.600)
in the same place together.
Lex Fridman (3:00:44.880)
Yes, you really do.
Lex Fridman (3:00:45.840)
And so a lot of it's creating these teams of people
Lex Fridman (3:00:48.120)
that have these needed skills and attributes
Travis Oliphant (3:00:50.480)
that are hard.
Lex Fridman (3:00:51.880)
And so one of the big things I look for is somebody
Travis Oliphant (3:00:55.120)
that fundamentally recognizes their need to learn.
Lex Fridman (3:00:57.800)
Like one of the values that we have
Travis Oliphant (3:00:59.560)
in all of the things we do is learning.
Lex Fridman (3:01:01.400)
Like if somebody thinks they know it all,
Travis Oliphant (3:01:04.560)
they're gonna struggle.
Lex Fridman (3:01:06.240)
And some of that is just, there's more basic things
Travis Oliphant (3:01:09.440)
like humility, just being humble in the face
Lex Fridman (3:01:12.780)
of all the things you don't know.
Lex Fridman (3:01:14.400)
And that's step one of learning.
Lex Fridman (3:01:15.840)
That's step one of learning, right?
Lex Fridman (3:01:16.960)
And I've spent a lot of time learning, right?
Lex Fridman (3:01:20.840)
Other people spend a lot more time,
Lex Fridman (3:01:21.840)
but I've spent a lot of time learning.
Lex Fridman (3:01:23.280)
My whole goal was to get a PhD because I love school
Lex Fridman (3:01:26.320)
and I wanted to be a scientist.
Lex Fridman (3:01:28.240)
And then what I found is what's been written about
Travis Oliphant (3:01:31.120)
elsewhere as well is the more I learned,
Lex Fridman (3:01:32.600)
the more I didn't know.
Travis Oliphant (3:01:33.780)
The more I realized, man, I know about this,
Lex Fridman (3:01:37.680)
but this is such a tiny thing in the global scope
Travis Oliphant (3:01:40.060)
of what I might wanna know about.
Lex Fridman (3:01:41.220)
So I need to be listening a whole lot better
Travis Oliphant (3:01:43.840)
than I am just talking.
Lex Fridman (3:01:47.360)
That's changed a little bit actually.
Travis Oliphant (3:01:48.840)
My wife says that I used to be a better listener.
Lex Fridman (3:01:50.600)
Now that I'm so full of all these ideas I wanna do,
Travis Oliphant (3:01:52.880)
she kind of says, you gotta give people time to talk.
Lex Fridman (3:01:55.520)
So you've succeeded on multiple dimensions.
Lex Fridman (3:01:58.400)
So one is the tenure track faculty.
Lex Fridman (3:02:01.680)
The other is just creating all these products
Lex Fridman (3:02:03.080)
and building up the businesses,
Lex Fridman (3:02:04.320)
then working with businesses.
Lex Fridman (3:02:06.880)
Do you have advice for young people today
Lex Fridman (3:02:09.240)
in high school and college of how to live a life
Travis Oliphant (3:02:13.880)
as nonlinear and as successful as yours,
Lex Fridman (3:02:18.280)
a life that they could be proud of?
Travis Oliphant (3:02:21.200)
Well, that's a super compliment.
Lex Fridman (3:02:22.960)
I'm humbled by that actually.
Travis Oliphant (3:02:24.200)
I would say a life they can be proud of.
Lex Fridman (3:02:27.960)
Honestly, one thing that I've said to people is first,
Travis Oliphant (3:02:31.560)
find people you love and care about them.
Lex Fridman (3:02:34.240)
Like family matters to me a lot.
Lex Fridman (3:02:36.040)
And family means people you love and have committed to.
Lex Fridman (3:02:39.640)
So it can be whatever you mean by that,
Lex Fridman (3:02:42.160)
but you need to have a foundation.
Lex Fridman (3:02:45.120)
So find people you love and wanna commit to and do that.
Travis Oliphant (3:02:48.960)
Cause it anchors you in a way that nothing else can.
Lex Fridman (3:02:52.200)
And then you find other things.
Lex Fridman (3:02:55.200)
And then kind of from out there,
Lex Fridman (3:02:56.640)
you find other kinds of things you can commit to,
Travis Oliphant (3:02:58.800)
whether it's ideas or people or groups of people.
Lex Fridman (3:03:03.240)
So, especially in high school,
Travis Oliphant (3:03:06.400)
I would say don't settle on what you think you know.
Lex Fridman (3:03:09.320)
Like give yourself 10 years to think about the world.
Travis Oliphant (3:03:13.320)
Like I see a lot of high school students
Lex Fridman (3:03:15.440)
who seem to know everything already.
Travis Oliphant (3:03:17.640)
I think I did too.
Lex Fridman (3:03:18.720)
I think it's maybe natural,
Lex Fridman (3:03:20.360)
but recognize that the things you care about,
Lex Fridman (3:03:23.160)
you might change your perspective over time.
Travis Oliphant (3:03:26.520)
I certainly have over time.
Lex Fridman (3:03:28.600)
I was really passionate about one specific thing
Lex Fridman (3:03:30.640)
and I was kind of softened.
Lex Fridman (3:03:32.520)
I was a big, I didn't like the Federal Reserve, right?
Lex Fridman (3:03:35.760)
And there's still, we could have a longer conversation
Lex Fridman (3:03:38.480)
about monetary policy and finances,
Lex Fridman (3:03:40.120)
but I'm a little more nuanced in my perspective
Lex Fridman (3:03:46.000)
at this point.
Lex Fridman (3:03:48.000)
But that's one area where you learn about something,
Lex Fridman (3:03:50.160)
go, ah, I wanna attack it.
Travis Oliphant (3:03:52.440)
Build, don't destroy.
Lex Fridman (3:03:55.160)
Build, like so often the tendency is to not like something
Lex Fridman (3:03:58.400)
and wanna go attack it.
Lex Fridman (3:04:00.000)
Build something, build something to replace it.
Travis Oliphant (3:04:02.240)
Yeah.
Lex Fridman (3:04:03.080)
Build up, attract people to your new thing.
Lex Fridman (3:04:05.600)
You'll be far better, right?
Lex Fridman (3:04:08.800)
You don't need to destroy something to build something else.
Lex Fridman (3:04:12.600)
So that's, I guess, generally.
Lex Fridman (3:04:14.880)
And then definitely like curiosity,
Travis Oliphant (3:04:19.120)
follow your curiosity and let it,
Lex Fridman (3:04:22.680)
don't just follow the money.
Lex Fridman (3:04:24.600)
And all of that, like you said,
Lex Fridman (3:04:25.800)
is grounded in family, friendship, and ultimately love.
Travis Oliphant (3:04:30.160)
Yes.
Lex Fridman (3:04:31.200)
Which is a great way to end it.
Travis Oliphant (3:04:34.640)
Travis, you're one of the most impactful people
Lex Fridman (3:04:37.080)
in the engineering and the computer science
Travis Oliphant (3:04:38.760)
in the human world.
Lex Fridman (3:04:39.920)
So I truly appreciate everything you've done.
Lex Fridman (3:04:43.520)
And I really appreciate that you would spend
Lex Fridman (3:04:45.800)
your valuable time with me.
Travis Oliphant (3:04:46.960)
It was an honor.
Lex Fridman (3:04:47.800)
It was a real pleasure for me.
Travis Oliphant (3:04:48.840)
I appreciate that.
Lex Fridman (3:04:50.520)
Thanks for listening to this conversation
Travis Oliphant (3:04:52.080)
with Travis Oliphant.
Lex Fridman (3:04:54.000)
To support this podcast,
Travis Oliphant (3:04:55.320)
please check out our sponsors in the description.
Lex Fridman (3:04:57.900)
And now, let me leave you with something
Travis Oliphant (3:05:00.200)
that in the programming world is called Hodgson's Law.
Lex Fridman (3:05:04.960)
Every sufficiently advanced Lisp application
Travis Oliphant (3:05:08.120)
will eventually be re implemented in Python.
Lex Fridman (3:05:12.520)
Thank you for listening and hope to see you next time.
Travis Oliphant (40:01.420)
this proprietary software.
Lex Fridman (40:02.500)
Right, and there's also culture around MATLAB as much,
Travis Oliphant (40:05.940)
because I've talked to a few folks in,
Lex Fridman (40:08.260)
MathWorks creates MATLAB?
Travis Oliphant (40:09.820)
Yeah.
Lex Fridman (40:10.820)
I mean, there's just a culture, they try really hard,
Lex Fridman (40:13.900)
but it just, there's this corporate IBM style culture
Lex Fridman (40:16.820)
that's like, or whatever.
Travis Oliphant (40:18.380)
I don't want to say negative things about IBM or whatever,
Lex Fridman (40:20.780)
but there's a...
Travis Oliphant (40:22.260)
No, it's really that connection.
Lex Fridman (40:23.740)
It's something I'm in the middle of right now
Travis Oliphant (40:24.940)
is the business of open source.
Lex Fridman (40:27.000)
And how do you connect the ethos of cooperative development
Lex Fridman (40:30.820)
with the necessity of creating profits, right?
Lex Fridman (40:34.780)
And like right now today, I'm still in the middle of that.
Travis Oliphant (40:38.060)
That's actually the early days of me exploring this question.
Lex Fridman (40:42.260)
Cause I was writing SciPy, I mean, as an aside,
Travis Oliphant (40:44.660)
I also had, so I had three kids at the time.
Lex Fridman (40:46.540)
I have six kids now.
Travis Oliphant (40:47.860)
I got married early, wanted a family.
Lex Fridman (40:50.860)
I had three kids and I remember reading,
Travis Oliphant (40:52.620)
I read Richard Stallman's post and I was a fan of Stallman.
Lex Fridman (40:55.540)
I would read his work, I liked this collective ideas
Travis Oliphant (40:58.100)
he would have.
Lex Fridman (40:58.940)
Certainly the ideas on IP law, I read a lot of his stuff.
Lex Fridman (41:01.740)
But then he said, okay, well,
Lex Fridman (41:04.820)
how do I make money with this?
Lex Fridman (41:05.780)
How do I make a living?
Lex Fridman (41:06.700)
How do I pay for my kids?
Travis Oliphant (41:07.740)
All this stuff was in my mind,
Lex Fridman (41:09.300)
young graduate student making no money,
Travis Oliphant (41:10.640)
thinking I got to get a job.
Lex Fridman (41:12.060)
And he said, well, I think just be like me
Lex Fridman (41:14.540)
and don't have kids, right?
Lex Fridman (41:15.840)
That's just, don't, don't.
Travis Oliphant (41:17.080)
That's his take on it.
Lex Fridman (41:18.540)
That was what he said in that moment, right?
Travis Oliphant (41:20.860)
That's the thing I read and I went,
Lex Fridman (41:22.420)
okay, this is a train I can't get on.
Travis Oliphant (41:24.960)
There has to be a way to preserve the culture
Lex Fridman (41:26.700)
of open source and still be able to make sufficient money
Travis Oliphant (41:29.180)
to feed your kids.
Lex Fridman (41:30.020)
Yes, exactly, there's gotta be.
Travis Oliphant (41:31.500)
Well, so that actually led me to a study of economics.
Lex Fridman (41:34.500)
Because at the time I was ignorant and I really was.
Travis Oliphant (41:36.680)
I'm actually, I'm embarrassed for educational system
Lex Fridman (41:39.420)
that they could let me and I was valedictorian
Travis Oliphant (41:41.300)
in my high school class and I did super well in college.
Lex Fridman (41:43.720)
And like academically I did great, right?
Lex Fridman (41:47.620)
But the fact that I could do that and then be clueless
Lex Fridman (41:49.980)
about this key part of life,
Travis Oliphant (41:52.740)
it led me to go, there's a problem.
Lex Fridman (41:54.400)
Like I should have learned this in fifth grade.
Travis Oliphant (41:56.660)
I should have learned this in eighth grade.
Lex Fridman (41:58.380)
Like everybody should come out
Travis Oliphant (41:59.220)
with a basic knowledge of economics.
Lex Fridman (42:01.700)
You're an interesting example because you've created tools
Travis Oliphant (42:04.040)
that change the lives of probably millions of people
Lex Fridman (42:07.640)
and the fact that you don't understand at the time
Travis Oliphant (42:10.060)
of the creation of those tools, the basics economics
Lex Fridman (42:12.860)
of how like to build up a giant system is the problem.
Travis Oliphant (42:15.260)
Yeah, it's a problem.
Lex Fridman (42:16.100)
And so during my PhD at the same time,
Travis Oliphant (42:18.260)
this is back in 98, 99 at the same time,
Lex Fridman (42:20.720)
I was in a library, I was reading books on capitalism,
Travis Oliphant (42:23.380)
I was reading books on Marxism,
Lex Fridman (42:24.700)
I was reading books on what is this thing?
Lex Fridman (42:27.700)
What does it mean?
Lex Fridman (42:29.700)
And I encountered, basically I encountered a set of writings
Travis Oliphant (42:33.140)
from people that said they were the inheritors of Adam Smith.
Lex Fridman (42:35.500)
Read Adam Smith for the first time, right?
Travis Oliphant (42:37.220)
Which is the wealth of nations
Lex Fridman (42:38.580)
and kind of this notion of emergent societies
Lex Fridman (42:42.460)
and realized, oh, there's this whole world out here
Lex Fridman (42:45.100)
of people and the challenge of economics is also political.
Travis Oliphant (42:49.460)
Like, cause economics, people, different parties
Lex Fridman (42:53.940)
running for office, they want their economic friends.
Lex Fridman (42:58.080)
They want their economists to back them up, right?
Lex Fridman (43:00.040)
Or to be their magicians, like the magicians
Lex Fridman (43:03.700)
in Pharaoh's court, right?
Lex Fridman (43:04.660)
The people that are kind of say, hey, this is,
Travis Oliphant (43:06.260)
you should listen to me because I've got the expert
Lex Fridman (43:08.100)
who says this.
Lex Fridman (43:09.420)
And so it gets really muddled, right?
Lex Fridman (43:11.540)
But I was looking at it from as a scientist going,
Lex Fridman (43:14.020)
what is this space?
Lex Fridman (43:14.860)
What does this mean?
Lex Fridman (43:15.680)
How does Paris get fed?
Lex Fridman (43:16.940)
How does, what is money?
Lex Fridman (43:18.420)
How does it work?
Lex Fridman (43:19.420)
And I found a lot of writings that I really loved.
Travis Oliphant (43:21.580)
I found some things that I really loved
Lex Fridman (43:22.860)
and I learned from that.
Travis Oliphant (43:23.980)
It was writings from people like Von Missess.
Lex Fridman (43:26.300)
He wrote a paper in 1920 that still should be read
Travis Oliphant (43:29.060)
more than it is.
Lex Fridman (43:29.900)
It was the economic calculation problem
Travis Oliphant (43:33.060)
of the socialist commonwealth.
Lex Fridman (43:34.560)
It was basically in response
Travis Oliphant (43:35.420)
to the Bolshevik revolution in 1917.
Lex Fridman (43:37.140)
And his basic argument was it's not gonna work
Travis Oliphant (43:40.180)
to not have private property.
Lex Fridman (43:41.780)
You're not gonna be able to come up with prices.
Travis Oliphant (43:43.420)
The bureaucrats aren't gonna be able to determine
Lex Fridman (43:45.200)
how to allocate resources without a price system.
Lex Fridman (43:47.620)
And a price system emerges from people making trades.
Lex Fridman (43:51.700)
And they can only make trades if they have authority
Travis Oliphant (43:53.860)
over the thing they're trading.
Lex Fridman (43:55.460)
And that creates information flow
Travis Oliphant (43:58.020)
that you just don't have if you try to top down it.
Lex Fridman (44:01.300)
Right.
Lex Fridman (44:02.140)
And it's like, huh, that's a really good point.
Lex Fridman (44:04.780)
Yeah, the prices have a signal that's used.
Lex Fridman (44:06.860)
And it's important to have that signal
Lex Fridman (44:09.400)
when you're trying to build a community
Travis Oliphant (44:11.020)
of productive people like you would
Lex Fridman (44:12.580)
in the software engineering space.
Travis Oliphant (44:13.700)
Yeah, the prices are actually
Lex Fridman (44:14.860)
an important signaling mechanism.
Travis Oliphant (44:17.540)
Right, and that money is just a bartering tool.
Lex Fridman (44:20.820)
Right, so this is the first time I've encountered
Travis Oliphant (44:22.540)
any of this concept, right, and the fact that,
Lex Fridman (44:24.440)
oh, this is actually really critical.
Travis Oliphant (44:26.600)
Like it's so critical to our prosperity
Lex Fridman (44:29.340)
and that we're dangerously not learning about this,
Travis Oliphant (44:34.100)
not teaching our children about this.
Lex Fridman (44:36.140)
So you had the three kids,
Travis Oliphant (44:37.260)
you had to make some hard decisions.
Lex Fridman (44:38.080)
I had to make some money, right, had to figure it out.
Lex Fridman (44:39.880)
But I didn't really care.
Lex Fridman (44:40.720)
I mean, I've never been driven by money, just need it.
Travis Oliphant (44:43.260)
Yeah, right, need to eat.
Lex Fridman (44:45.200)
So how did that resolve itself in terms of site buy?
Lex Fridman (44:49.100)
So I would say it didn't really resolve itself.
Lex Fridman (44:51.320)
It sort of started a journey that I'm continuing on.
Travis Oliphant (44:53.420)
I'm still on, I would say.
Lex Fridman (44:54.740)
I don't think it resolved itself.
Lex Fridman (44:55.660)
But I will say I went in eyes wide open.
Lex Fridman (44:59.260)
Like I knew that there were problems
Travis Oliphant (45:00.940)
with giving stuff away and creating the market externalities
Lex Fridman (45:07.900)
that the fact that, yeah, people might use it
Lex Fridman (45:09.780)
and I might not get paid for it
Lex Fridman (45:10.820)
and I'll have to figure something else out to get paid.
Travis Oliphant (45:13.060)
Like at least I can say I'm not bitter
Lex Fridman (45:14.940)
that a lot of people have used stuff that I've written
Lex Fridman (45:17.220)
and I haven't necessarily benefited economically from it.
Lex Fridman (45:20.240)
I've heard other people be bitter about that
Travis Oliphant (45:22.300)
when they write or they talk.
Lex Fridman (45:23.300)
Like, oh, I should've got more value out of this.
Lex Fridman (45:24.900)
And I'm also, I want to create systems
Lex Fridman (45:27.740)
that let people like me who might have these desires
Travis Oliphant (45:31.060)
to do things, let them benefit.
Lex Fridman (45:32.260)
So it actually creates more of the same.
Travis Oliphant (45:34.700)
Not to turn on your bitterness module,
Lex Fridman (45:36.900)
but there's some aspect, I wish there was mechanisms for me
Travis Oliphant (45:40.940)
to reward whoever created side buy and non buy
Lex Fridman (45:43.580)
because it brought so much joy to my life.
Travis Oliphant (45:45.300)
I appreciate that.
Lex Fridman (45:46.140)
You know what I mean?
Travis Oliphant (45:46.980)
The tip dark notion was there.
Lex Fridman (45:48.340)
I appreciate that.
Lex Fridman (45:49.180)
But there should be a very frictionless mechanism.
Lex Fridman (45:51.940)
There should be a frictionless mechanism.
Travis Oliphant (45:52.760)
I totally agree.
Lex Fridman (45:53.600)
I would love to talk about some of the ideas I have
Travis Oliphant (45:55.220)
because I actually came across,
Lex Fridman (45:56.220)
I think I've come up with some interesting notions
Travis Oliphant (45:58.200)
that could work, but they'll require anything that will work
Lex Fridman (46:01.860)
takes time to emerge, right?
Travis Oliphant (46:03.740)
Like things don't just turn overnight.
Lex Fridman (46:04.940)
That's definitely one thing I've also understood
Lex Fridman (46:06.340)
and learned is any fixes, that's why it's kind of funny.
Lex Fridman (46:10.120)
We often give credit to, oh, this president gets elected
Lex Fridman (46:12.940)
and oh, look how great things have done.
Lex Fridman (46:14.420)
And I saw that when I had a transition in a condo
Lex Fridman (46:18.340)
when a new CEO came in, right?
Lex Fridman (46:19.520)
And it's like the success that's happening,
Travis Oliphant (46:22.340)
there's an inertia there.
Lex Fridman (46:23.460)
Yeah, and sometimes the decision you made
Travis Oliphant (46:25.740)
like 10 years before is the reason why the success is the.
Lex Fridman (46:28.980)
Right, exactly.
Lex Fridman (46:29.820)
So we're sort of just running around taking credit
Lex Fridman (46:31.560)
for stuff.
Travis Oliphant (46:32.400)
The credit assignment has like a delay to it
Lex Fridman (46:35.140)
that makes the credit assignment basically wrong
Travis Oliphant (46:38.320)
more than right.
Lex Fridman (46:39.160)
Wrong more than right, exactly.
Lex Fridman (46:40.320)
And so I'm like, oh, this is, you know,
Lex Fridman (46:42.140)
that's the stuff I would read a ton about, you know,
Travis Oliphant (46:44.860)
early on.
Lex Fridman (46:45.700)
So I don't, I feel like I'm with you.
Travis Oliphant (46:47.720)
Like I want the same thing.
Lex Fridman (46:48.780)
I want to be able to, and honestly, not for personally,
Travis Oliphant (46:50.900)
I've been happy.
Lex Fridman (46:51.740)
I've been happy.
Travis Oliphant (46:52.720)
I feel like I don't have any, I mean,
Lex Fridman (46:53.980)
we've been done reasonably okay, but I've had to pursue it.
Travis Oliphant (46:56.920)
Like that's really what started my trajectory from academia
Lex Fridman (47:01.380)
is reading that stuff led me to say,
Travis Oliphant (47:02.940)
oh, entrepreneurship matters.
Lex Fridman (47:05.780)
So I love software, but we need more entrepreneurs
Lex Fridman (47:09.180)
and I wanna understand that better.
Lex Fridman (47:10.360)
So once I kind of had that virus infect my brain,
Travis Oliphant (47:16.500)
even though I was on a trajectory
Lex Fridman (47:17.580)
to go to a tenure track position at a university
Lex Fridman (47:20.640)
and I was there for six years,
Lex Fridman (47:22.780)
I was kind of already out the door when I started.
Lex Fridman (47:26.060)
And we can get into that, but.
Lex Fridman (47:27.660)
Well, can I just ask you a quick question on,
Travis Oliphant (47:30.340)
is there some design principles
Lex Fridman (47:32.740)
that were in your mind around SciPy?
Travis Oliphant (47:34.740)
Like, is there some key ideas
Lex Fridman (47:36.460)
that were just like sticking to you
Lex Fridman (47:38.060)
that this is the fundamental ideas?
Lex Fridman (47:40.300)
Yeah, I would say so.
Travis Oliphant (47:41.140)
I would think it's basically accessibility to scientists,
Lex Fridman (47:43.680)
like give them, give scientists and engineers tools
Travis Oliphant (47:46.980)
that they don't have to think a lot about programming.
Lex Fridman (47:48.380)
So give them really good building blocks,
Travis Oliphant (47:50.300)
give them functions that they wanna call
Lex Fridman (47:51.860)
and sort of just the right length of spelling.
Travis Oliphant (47:55.860)
There's one tradition in programming where it's like,
Lex Fridman (47:59.500)
make very, very long names, right?
Lex Fridman (48:01.880)
And you can see it in some programming languages
Lex Fridman (48:03.700)
where the names get, take half the screen.
Lex Fridman (48:06.460)
And in the 4chan world, characters had to be six letters
Lex Fridman (48:11.540)
early on, right?
Lex Fridman (48:12.380)
And that's way too much, too little.
Lex Fridman (48:14.340)
But I was like, I liked to have names
Travis Oliphant (48:16.820)
that were informative but short.
Lex Fridman (48:18.940)
So even though Python, well this is a different conversation,
Lex Fridman (48:22.340)
but documentation is doing some work there.
Lex Fridman (48:25.860)
So when you look at great scientific libraries
Lex Fridman (48:29.180)
and functions, there's a richness of documentation
Lex Fridman (48:32.700)
that helps you get into the details.
Travis Oliphant (48:34.820)
The first glance at a function gives you the intuition
Lex Fridman (48:37.620)
of all it needs to do by looking at the headers and so on.
Lex Fridman (48:40.540)
But to get the depths of all the complexities involved,
Lex Fridman (48:43.420)
all the options involved,
Travis Oliphant (48:44.740)
documentation does some of the work.
Lex Fridman (48:45.580)
Documentation is essential, yeah.
Lex Fridman (48:47.380)
So that was actually a, so we thought about several things.
Lex Fridman (48:50.520)
One is we wanted plotting.
Travis Oliphant (48:51.940)
We wanted interactive environment.
Lex Fridman (48:53.580)
We wanted good documentation.
Travis Oliphant (48:54.860)
These are things we knew, we wanted.
Lex Fridman (48:56.780)
The reality is those took about 10 years to evolve, right?
Travis Oliphant (49:00.460)
Given the fact that we didn't have a big budget,
Lex Fridman (49:02.060)
it was all volunteer labor.
Travis Oliphant (49:03.100)
It was sort of, when nthought got created
Lex Fridman (49:06.980)
and they started to try to find projects,
Travis Oliphant (49:10.060)
people would pay for pieces
Lex Fridman (49:11.080)
and they were able to fund some of it.
Travis Oliphant (49:13.740)
Not nearly enough to keep up with what was necessary.
Lex Fridman (49:15.780)
And no criticism, just simply the reality.
Travis Oliphant (49:18.860)
I mean, it's hard to start a business
Lex Fridman (49:21.180)
and then do consulting and then also
Travis Oliphant (49:23.220)
promote an open source project that's still fairly new.
Lex Fridman (49:26.180)
Cypo is fairly niche.
Travis Oliphant (49:27.780)
We stayed connected all while I was a student,
Lex Fridman (49:30.140)
sorry, a professor.
Travis Oliphant (49:30.980)
I went to BYU and started to teach.
Lex Fridman (49:32.340)
Electrical engineering, all the applied math courses.
Travis Oliphant (49:35.060)
I loved teaching single processing,
Lex Fridman (49:36.980)
probability theory, electromagnetism.
Travis Oliphant (49:39.180)
I was, if you look at writing my professor,
Lex Fridman (49:40.940)
which my kids loved to do,
Travis Oliphant (49:42.500)
I wasn't, I got some bad reviews because people.
Lex Fridman (49:46.900)
What was the criticism?
Travis Oliphant (49:48.580)
I would speak too high of a level.
Lex Fridman (49:50.920)
Like I definitely had a calibration problem
Travis Oliphant (49:52.640)
coming out of graduate work
Lex Fridman (49:54.980)
where I hate to be condescending to people.
Travis Oliphant (49:56.980)
Like I really have a ton of respect for people fundamentally.
Lex Fridman (49:59.300)
Like my fundamental thing is I respect people.
Travis Oliphant (50:02.060)
Sometimes that can lead to a,
Lex Fridman (50:03.900)
I was thinking they had more knowledge than they did.
Lex Fridman (50:07.640)
And so I would just speak at a very high level,
Lex Fridman (50:10.100)
assume they got it.
Lex Fridman (50:11.060)
But they need to rise to the standard that you set.
Lex Fridman (50:14.340)
I mean, that's one of the,
Travis Oliphant (50:15.260)
some of the greatest teachers do that.
Lex Fridman (50:17.180)
And I agree.
Lex Fridman (50:18.020)
And that was kind of what was inspiring me.
Lex Fridman (50:19.760)
But you also have to,
Travis Oliphant (50:22.160)
I cannot say I was articulate
Lex Fridman (50:24.820)
with some of the greatest teachers, right?
Travis Oliphant (50:26.300)
I was, like one classic example,
Lex Fridman (50:28.540)
when I first taught at BYU,
Travis Oliphant (50:30.420)
my very first class, it was overheads,
Lex Fridman (50:31.980)
transparencies, overheads.
Travis Oliphant (50:34.100)
Before projectors were really that common,
Lex Fridman (50:35.940)
I taught transparencies.
Travis Oliphant (50:37.100)
I'm writing my notes out.
Lex Fridman (50:38.260)
I go in, room's half dark.
Travis Oliphant (50:40.540)
I just blaring through these transparencies.
Lex Fridman (50:42.780)
Here it is, here it is, here it is.
Lex Fridman (50:44.900)
And I did give a quiz after two weeks.
Lex Fridman (50:47.480)
No one knew anything.
Travis Oliphant (50:48.900)
Nothing I had taught had gotten anywhere.
Lex Fridman (50:50.940)
And I realized, okay, I'm not, this is not working.
Lex Fridman (50:54.140)
So I put away the transparencies
Lex Fridman (50:56.380)
and I turned around and just started using the chalkboard.
Lex Fridman (50:58.860)
And what it did is it slowed me down, right?
Lex Fridman (51:00.980)
The chalkboard just slowed me down
Lex Fridman (51:02.260)
and gave people time to process and to think.
Lex Fridman (51:04.440)
And then that made me focus.
Travis Oliphant (51:06.080)
My writing wasn't great on the chalkboard,
Lex Fridman (51:07.900)
but I really love that part of like the teaching.
Lex Fridman (51:10.520)
So that entered SciPy's world in terms of,
Lex Fridman (51:12.500)
we always understood that there's a didactic aspect
Travis Oliphant (51:14.860)
of SciPy, kind of how do you take the knowledge
Lex Fridman (51:17.740)
and then produce it?
Travis Oliphant (51:18.640)
The challenge we had was the scope.
Lex Fridman (51:21.020)
Like ultimately SciPy was everything, right?
Lex Fridman (51:23.420)
And so 2001, when it first came out,
Lex Fridman (51:25.600)
people were starting to use it.
Travis Oliphant (51:26.800)
No, this is cool, this is a tool we actually use.
Lex Fridman (51:29.580)
At the same time, 2001 timeframe,
Travis Oliphant (51:31.400)
there was a little bit of like the Hubble Space Telescope,
Lex Fridman (51:33.940)
the folks at Hubble that started to say,
Travis Oliphant (51:35.400)
hey, Python, we're gonna use Python
Lex Fridman (51:36.620)
for processing images from Hubble.
Lex Fridman (51:38.720)
And so Perry Greenfield was a good friend
Lex Fridman (51:40.820)
in running that program.
Lex Fridman (51:42.420)
And he had called me before I left WIU and said,
Lex Fridman (51:45.060)
you know, we wanna do this,
Lex Fridman (51:47.020)
but numeric actually has some challenges in terms of,
Lex Fridman (51:50.020)
you know, it's not, the array doesn't have enough types.
Travis Oliphant (51:52.700)
We need more operations.
Lex Fridman (51:54.280)
You know, broadcasting needs to be a little more settled.
Travis Oliphant (51:56.660)
They wanted record arrays.
Lex Fridman (51:57.960)
They wanted, you know, record arrays are like a data frame,
Lex Fridman (52:00.600)
but a little bit different,
Lex Fridman (52:02.220)
but they wanted more structured data.
Lex Fridman (52:03.820)
So he had called me even early on then,
Lex Fridman (52:06.020)
and he said, you know, what,
Lex Fridman (52:06.860)
would you wanna work on something to make this work?
Lex Fridman (52:08.300)
And I said, yeah, I'm interested, but I'm going here,
Lex Fridman (52:10.140)
and I, you know, we'll see if I have time.
Lex Fridman (52:12.100)
So in the meantime, while I was teaching
Lex Fridman (52:13.340)
and SciPy was emerging, and I had a student,
Lex Fridman (52:15.660)
I was constantly, while I was teaching,
Travis Oliphant (52:16.840)
trying to figure a way to fund this stuff.
Lex Fridman (52:18.840)
So I had a graduate student, my only graduate student,
Travis Oliphant (52:21.660)
a Chinese fellow, Liu Hongze is his name, great guy.
Lex Fridman (52:26.260)
He wrote a bunch of stuff for iterative linear algebra,
Travis Oliphant (52:29.900)
like got into writing some of the iterative
Lex Fridman (52:31.380)
linear algebra tools that are currently there in SciPy,
Lex Fridman (52:34.340)
and they've gotten better since,
Lex Fridman (52:36.040)
but this is in 2005, kept working on SciPy,
Lex Fridman (52:39.260)
but Perry has started working on a replacement
Lex Fridman (52:43.060)
to numeric called NumArray.
Lex Fridman (52:45.300)
And in 2004, a package called ND Image,
Lex Fridman (52:49.020)
it was an image processing library
Travis Oliphant (52:50.740)
that was written for NumArray,
Lex Fridman (52:53.220)
and it had in it a morphology tool.
Travis Oliphant (52:55.580)
I don't know if you know what morphology is.
Lex Fridman (52:56.740)
It's open, dilations, closed, you know,
Travis Oliphant (52:58.540)
there was sort of this, as a medical imaging student,
Lex Fridman (53:01.660)
I knew what it was,
Travis Oliphant (53:02.500)
because it was used in segmentation a lot.
Lex Fridman (53:04.420)
And in fact, I'd wanted to do something like that
Travis Oliphant (53:06.460)
in Python, in SciPy, but just had never gotten around to it.
Lex Fridman (53:10.220)
So when it came out, but it worked only on NumArray,
Lex Fridman (53:14.180)
and SciPy needed numeric,
Lex Fridman (53:16.420)
and so we effectively had the beginning of this split.
Lex Fridman (53:20.040)
And numeric and NumArray didn't share data,
Lex Fridman (53:22.500)
they were just two, so you could have a gigabyte
Travis Oliphant (53:24.420)
of numeric, NumArray data, and gigabyte of numeric data,
Lex Fridman (53:26.540)
and they wouldn't share it.
Lex Fridman (53:27.380)
And so you had these,
Lex Fridman (53:28.500)
then you had these scientific libraries written on top.
Travis Oliphant (53:31.300)
I got really bugged by that.
Lex Fridman (53:32.940)
I got really like, oh man, this is not good,
Travis Oliphant (53:35.060)
we're not cooperating now,
Lex Fridman (53:36.300)
we're sort of redoing each other's work,
Lex Fridman (53:37.980)
and we're just this young community.
Lex Fridman (53:40.380)
So that's what led me, even though I knew it was risky,
Travis Oliphant (53:43.940)
because my, you know, I was on a tenure track position,
Lex Fridman (53:47.140)
2004 I got reviewed.
Travis Oliphant (53:48.540)
They said, hey, things are going okay,
Lex Fridman (53:49.540)
you're doing well, paper's coming out,
Lex Fridman (53:51.540)
but you're kind of spending a lot of time
Lex Fridman (53:52.460)
doing this open source stuff, maybe do a little less of that,
Lex Fridman (53:54.780)
and a little more of the paper writing and grant writing,
Lex Fridman (53:57.260)
which was naive, but it was definitely the thinking.
Travis Oliphant (54:00.860)
It still goes on.
Lex Fridman (54:01.700)
Still goes on.
Travis Oliphant (54:03.060)
You're basically creating a thing
Lex Fridman (54:05.120)
which enables science in the 21st century.
Travis Oliphant (54:08.300)
Right.
Lex Fridman (54:09.340)
Maybe don't emphasize that so much in your free year tenure.
Travis Oliphant (54:11.980)
Right.
Lex Fridman (54:13.460)
It illustrates some of the challenges.
Travis Oliphant (54:14.860)
Yes.
Lex Fridman (54:15.700)
It does, and it's, people mean well.
Travis Oliphant (54:18.220)
Yes.
Lex Fridman (54:19.060)
Like, but we've gotten broken in a bunch of ways.
Travis Oliphant (54:22.340)
Certain things, programming,
Lex Fridman (54:23.660)
understanding the role of software engineering,
Travis Oliphant (54:25.500)
programming in society is a little bit lacking.
Lex Fridman (54:27.860)
Exactly.
Travis Oliphant (54:28.700)
Now, I was in electrical engineering position.
Lex Fridman (54:30.020)
Right.
Travis Oliphant (54:30.860)
That's even worse there.
Lex Fridman (54:33.140)
Yeah, it was very, they were very focused,
Lex Fridman (54:34.700)
and so, you know, good people, and I had a great time,
Lex Fridman (54:37.300)
I loved my time, I loved my teaching,
Travis Oliphant (54:38.940)
I loved all the things I did there.
Lex Fridman (54:40.460)
The problem was, the split was happening
Lex Fridman (54:42.540)
in this community that I loved, right?
Lex Fridman (54:43.940)
I saw people, and I went, oh my gosh,
Travis Oliphant (54:45.460)
this is gonna be, this is not great,
Lex Fridman (54:47.780)
and so I happened, you know, fate,
Travis Oliphant (54:50.020)
I had a class I had signed up for,
Lex Fridman (54:52.620)
it's a, I was trying to build an MRI system,
Lex Fridman (54:54.860)
so I had a kind of a radio, instead of a radio,
Lex Fridman (54:58.300)
a digital radio class, it was a digital MRI class.
Lex Fridman (55:01.820)
And I had people sign up, two people signed up,
Lex Fridman (55:04.020)
then they dropped, and so I had nobody in this class.
Travis Oliphant (55:06.660)
So, and I didn't have any other courses to teach,
Lex Fridman (55:08.820)
and I thought, oh, I've got some time,
Lex Fridman (55:10.940)
and I'll just write, I'll just write a replace,
Lex Fridman (55:13.100)
a merger of Numerica Numeray.
Travis Oliphant (55:14.820)
Like, I'll basically take the numeric code base
Lex Fridman (55:16.980)
at the features Numeray was adding,
Lex Fridman (55:19.220)
and then kind of come up with a single array library
Lex Fridman (55:21.180)
that everybody can use.
Lex Fridman (55:22.460)
So that's where NumPy came from,
Lex Fridman (55:24.140)
was my thinking, hey, I can do this,
Lex Fridman (55:26.500)
and who else is going to?
Lex Fridman (55:27.860)
Because at that point, I'd been around the community
Travis Oliphant (55:29.260)
long enough, and I'd written enough C code,
Lex Fridman (55:30.820)
I knew, I knew the structures, and I,
Travis Oliphant (55:33.260)
in fact, my first contribution to numeric
Lex Fridman (55:35.060)
had been writing the CAPI documentation
Travis Oliphant (55:38.580)
that went in the first documentation for NumPy,
Lex Fridman (55:41.080)
for numeric, sorry, this is Paul DuBois,
Travis Oliphant (55:43.020)
David Asher, Conrad Hinson, and myself.
Lex Fridman (55:45.100)
I got credit because I wrote this chapter,
Travis Oliphant (55:47.580)
which is all the CAPI of Numerica, all the C stuff.
Lex Fridman (55:51.260)
So I said, I'm probably the one to do it,
Lex Fridman (55:53.380)
and nobody else is gonna do this.
Lex Fridman (55:54.760)
So it was sort of, out of a sense of duty and passion,
Travis Oliphant (55:58.340)
knowing that, eh, I don't think my academic,
Lex Fridman (56:01.460)
I don't think the department here is gonna appreciate this,
Lex Fridman (56:03.940)
but it's the right thing to do.
Lex Fridman (56:06.020)
It was like.
Lex Fridman (56:06.860)
Can we just link on that moment?
Lex Fridman (56:08.660)
Yeah, yeah.
Travis Oliphant (56:09.500)
Because the importance of the way you thought
Lex Fridman (56:11.740)
and the action you took, I feel is understated
Lex Fridman (56:16.360)
and is rare and I would love to see so much more of it
Lex Fridman (56:19.900)
because what happens as the tools become more popular,
Travis Oliphant (56:24.820)
there's a split that happens.
Lex Fridman (56:27.180)
And it's a truly heroic and impactful action
Travis Oliphant (56:30.940)
to in those early, in that early split,
Lex Fridman (56:33.580)
to step up and it's like great leaders throughout history,
Travis Oliphant (56:37.820)
like get, what is the brave heart,
Lex Fridman (56:39.660)
like get on a horse and rile the troops
Travis Oliphant (56:42.500)
because I think that can have, make a big difference.
Lex Fridman (56:46.060)
We have TensorFlow versus PyTorch
Travis Oliphant (56:48.180)
in the machine learning community.
Lex Fridman (56:49.100)
We have the same problem today.
Travis Oliphant (56:50.380)
Yeah, I wonder.
Lex Fridman (56:51.780)
It's actually bigger.
Travis Oliphant (56:52.620)
I wonder if it's possible in the early days
Lex Fridman (56:56.620)
to rally the troops.
Travis Oliphant (56:58.220)
It is possible, especially in the early days.
Lex Fridman (57:00.020)
The longer it goes, the harder, right?
Travis Oliphant (57:01.620)
The more energy in the factions, the harder.
Lex Fridman (57:03.940)
But in the early days, it is possible
Lex Fridman (57:05.700)
and it's extremely helpful
Lex Fridman (57:07.660)
and there's a willingness there,
Lex Fridman (57:09.100)
but the challenge is there's just not a willingness
Lex Fridman (57:11.740)
to fund it.
Travis Oliphant (57:12.980)
There's not a willingness to, you know,
Lex Fridman (57:14.880)
like I was literally walking into a field
Travis Oliphant (57:17.540)
saying I'm going to do this
Lex Fridman (57:18.620)
and here I am, like, you know,
Travis Oliphant (57:20.140)
I have five kids at home now.
Lex Fridman (57:23.740)
Pressure builds.
Travis Oliphant (57:24.820)
Sometimes my wife hears these stories
Lex Fridman (57:26.220)
and she's like, you did what?
Travis Oliphant (57:29.020)
I thought we were going to,
Lex Fridman (57:29.860)
I thought you were actually on a path
Travis Oliphant (57:31.460)
to make sure we had resources and money, but,
Lex Fridman (57:34.100)
but again, there's a, there's an aspect,
Travis Oliphant (57:36.420)
I'm a very hopeful person.
Lex Fridman (57:37.860)
I'm an optimistic person by nature.
Travis Oliphant (57:39.680)
I love people.
Lex Fridman (57:41.120)
I learned that about myself later on.
Lex Fridman (57:43.140)
And part of my, my religious beliefs
Lex Fridman (57:47.220)
actually lead to that.
Lex Fridman (57:48.380)
And it's why I hold them dear
Lex Fridman (57:49.880)
because it's actually how I feel about,
Travis Oliphant (57:51.300)
that's what leads me to these attitudes,
Lex Fridman (57:53.420)
sort of this hopefulness and this sense of,
Travis Oliphant (57:55.900)
yeah, it may not work out for me financially
Lex Fridman (57:58.600)
or maybe, but that's not the ultimate gain.
Travis Oliphant (58:00.600)
Like that's a thing, but it's not,
Lex Fridman (58:02.940)
that's not the scorecard for me.
Lex Fridman (58:05.540)
And so I just wanted to be helpful
Lex Fridman (58:07.060)
and I knew, and partly because these SciPy conferences,
Travis Oliphant (58:09.280)
because the maintenance conversations,
Lex Fridman (58:10.860)
I knew there was a lot of need for this, right?
Lex Fridman (58:13.300)
And so I had this, it wasn't like I was alone
Lex Fridman (58:15.460)
in terms of no feedback.
Travis Oliphant (58:16.460)
I had these people who knew, but it was crazy.
Lex Fridman (58:19.440)
Like people who at the time said,
Travis Oliphant (58:20.700)
yeah, we didn't think you'd be able to do it.
Lex Fridman (58:22.340)
We thought it was crazy.
Lex Fridman (58:23.160)
And also instructive, like practically speaking,
Lex Fridman (58:26.720)
that you had a cool feature
Travis Oliphant (58:28.700)
that you were chasing the morphology, like the.
Lex Fridman (58:30.820)
Yes.
Travis Oliphant (58:31.660)
Like it's not just like.
Lex Fridman (58:32.500)
There's an end result.
Travis Oliphant (58:33.460)
It's not some visionary thing.
Lex Fridman (58:35.140)
I'm going to unite the community.
Travis Oliphant (58:36.820)
You were like. Correct.
Lex Fridman (58:38.060)
You were actually practically,
Travis Oliphant (58:39.520)
this is what one person actually could do
Lex Fridman (58:42.100)
and actually build.
Travis Oliphant (58:43.220)
Cause that is important.
Lex Fridman (58:44.220)
Cause you can get over your skis.
Travis Oliphant (58:47.460)
You can definitely get over your skis.
Lex Fridman (58:49.060)
And I had, in fact, this almost got me over my skis, right?
Travis Oliphant (58:52.140)
I would say, well, in retrospect, I hate looking back.
Lex Fridman (58:56.140)
I can tell you all the flaws with NumPy, right?
Travis Oliphant (58:58.540)
When I go into it, there's lots of stuff that I'm like,
Lex Fridman (59:00.700)
oh man, that's embarrassing.
Travis Oliphant (59:01.660)
That was wrong.
Lex Fridman (59:02.500)
I wish I had somebody stop me with a wet fish there.
Travis Oliphant (59:04.300)
Like I needed, like what I'd wished I'd had
Lex Fridman (59:07.020)
was somebody with more experience and certainly library
Travis Oliphant (59:10.460)
writing and array library.
Lex Fridman (59:11.540)
There's like, I wish I had me.
Travis Oliphant (59:12.780)
I could go back in time and go do this, do that.
Lex Fridman (59:14.520)
There's a more important thing.
Travis Oliphant (59:15.480)
Cause there's things we did that are still there
Lex Fridman (59:18.100)
that are problematic, that created challenges for later.
Lex Fridman (59:20.940)
And I didn't know it at the time.
Lex Fridman (59:22.460)
Didn't understand how important that was.
Lex Fridman (59:24.420)
And in many cases, didn't know what to do.
Lex Fridman (59:26.460)
Like there was pieces of the design of NumPy.
Travis Oliphant (59:29.060)
I didn't know what to do until five years ago.
Lex Fridman (59:31.340)
Now I know what they should have been, Ben.
Lex Fridman (59:32.860)
But I didn't know at the time and nobody,
Lex Fridman (59:33.960)
and I couldn't get the help.
Travis Oliphant (59:35.380)
Anyway, so I wrote it.
Lex Fridman (59:36.660)
It took about, it took four months to write
Travis Oliphant (59:38.780)
the first version, then about 14 months to make it usable.
Lex Fridman (59:43.360)
But it was, it wasn't, it was that first four months
Travis Oliphant (59:45.860)
of intense writing, coding, getting something out the door
Lex Fridman (59:49.320)
that worked that was, it was, it was definitely challenging.
Lex Fridman (59:52.380)
And then the big thing I did was create a new type object
Lex Fridman (59:54.900)
called D type.
Travis Oliphant (59:56.100)
That was probably the contribution.
Lex Fridman (59:58.780)
And then the fact that I added broad, not just broadcasting,
🔗 相关节目