← Lex Fridman

Travis Oliphant: NumPy, SciPy, Anaconda, Python & Scientific Programming

第224期2021-09-23English

嘉宾:Travis Oliphant

收听本集00:00 / --:--
阅读设置
按你的习惯阅读
正文字号
下载播客精读
把这一篇,带走慢慢读

精读待补充

下载功能还未开放

§01Transcript · 00:00–07:45

00:00The following is a conversation with Travis Olyphant,

00:03one of the most impactful programmers

00:05and data scientists ever.

00:07He created NumPy, SciPy, and Anaconda.

00:12NumPy formed the foundation

00:14of tensor-based machine learning in Python.

00:17SciPy formed the foundation

00:18of scientific programming in Python.

00:20And Anaconda, specifically with Conda,

00:23made Python more accessible to a much larger audience.

00:27Travis's life work across a large number of programming

00:31and entrepreneurial efforts has and will continue

00:34to have immeasurable impact on millions of lives

00:38by empowering scientists and engineers in big companies,

00:42small companies, and open-source communities

00:45to take on difficult problems

00:47and solve them with the power of programming.

00:50Plus, he's a truly kind human being,

00:53which is something that when combined with vision

00:56and ambition makes for a great leader

00:58and a great person to chat with.

01:01To support this podcast,

01:02please check out our sponsors in the description.

01:04This is the Alex Friedman Podcast,

01:06and here is my conversation with Travis Olyphant.

01:10What was the first computer program you've ever written?

01:14Do you remember?

01:15- Whoa, that's a good question.

01:16I think it was in fourth grade.

01:18Just a simple loop in Basic.

01:20- Basic.

01:21- Basic, yeah, on an Atari 800,

01:23Atari 400, I think, or maybe it was an Atari 800.

01:26It was a part of a class,

01:28and we just were just basic loops to print things out.

01:32- Did you use goto statements?

01:34- Yes, yes, we used goto statements.

01:37- I remember in the early days,

01:39that's when I first realized

01:41there's principles to programming,

01:43when I was told that don't use goto statements.

01:45Those are bad software engineering principles.

01:48It goes against what great, beautiful code is.

01:52I was like, oh, okay, there's rules to this game.

01:54- I didn't see that until high school

01:56when I took an AP Computer Science course.

01:58I did a lot of other kinds of just programming in TI,

02:02but finally when I took an AP Computer Science course

02:04in Pascal.

02:05- Wow.

02:06- Yeah, it was Pascal.

02:07That's when I, oh, there are these principles.

02:09- Not C or C++?

02:11- No, I didn't take C until the next year in college.

02:14I had a course in C, but I haven't done much in Pascal,

02:18just that AP Computer Science course.

02:21- Now, sorry for the romanticized question,

02:23but when did you first fall in love with programming?

02:26- Oh, man, good question.

02:27I think actually when I was 10.

02:30My dad got us a Timex Sinclair,

02:33and he was excited about the spreadsheet capability,

02:37and then, but I made him get the basic,

02:39the add-ons so we could actually program in basic,

02:41and just being able to write instructions

02:44and have the computer do something.

02:45Then we got a TI99, TI99-4A when I was about 12,

02:50and I would just, it had sprites and graphics and music.

02:52You could actually program it to do music.

02:55That's when I really sort of fell in love with programming.

02:58- So this is a full, like a real computer

03:01with memory and storage and processors,

03:04so we're not, 'cause you say TI, it's not--

03:06- Yeah, the Timex Sinclair was one of the very first.

03:08It was a cheap, cheap, I think it was,

03:11well, it was still expensive, but it was 2K of memory.

03:14We got the 16K add-on pack.

03:16But yeah, it had memory, and you could program it.

03:19You had the, in order to store your programs,

03:20you had to attach a tape drive.

03:22Remember that old, the sound that would play

03:24when you converted the modem,

03:28it would convert digital bits to audio files

03:30and set on a tape drive.

03:31Still remember that sound, but that was the storage.

03:34- And what was the programming language, do you remember?

03:36- It was basic. - It was basic.

03:37- And then they had a VisiCalc,

03:38and so a little bit of spreadsheet programming in VisiCalc,

03:41but mostly just some basic.

03:42- Do you remember what kind of things

03:44drew you to programming?

03:46Was it working with data?

03:48Was it video games?

03:49- Math. - Games?

03:51- Math. - Math.

03:52- Math-y stuff?

03:53- Yeah, I've always loved math,

03:54and a lot of people think they don't like math

03:58because I think when they're exposed to it early,

04:00it's about memory.

04:02You know, when you're exposed to math early,

04:03you have a good short-term memory,

04:04it remembers timetables.

04:05And I do have a reasonably, I mean, not perfect,

04:08but a reasonably long little short-term memory buffer.

04:12And so I did great at timetables.

04:14I said, "Oh, I'm good at math."

04:15But I started to really like math,

04:17just the problem-solving aspect.

04:20And so computing was problem-solving applied.

04:25And so that's always kind of been the draw,

04:28kind of coupled with the mathematics.

04:30- Did you ever see the computer

04:31as like an extension of your mind,

04:34like something able to achieve--

04:36- Not till later.

04:37- Okay. - Yeah, not then.

04:39- It's just like a little set of puzzles

04:40that you can play with,

04:41and you can play with math puzzles.

04:43- Yeah, it was too rudimentary early on.

04:46Like it was sort of, yeah, it was a lot of work

04:49to actually take a thought you'd have

04:51and actually get it implemented.

04:53And that's still work, but it's getting easier.

04:56And so, yeah, I would say that's definitely

04:58what's attracting me to Python,

04:59is that that was more real, right?

05:02I could think in Python.

05:04Speaking of foreign language,

05:05I only speak another language fluently,

05:07besides English, which is Spanish.

05:09And I remember the day when I would dream in Spanish.

05:11And you start to think in that language.

05:13And then you actually,

05:14I do definitely believe that language

05:16limits or expands your thinking.

05:19There's some languages that actually

05:21lead you to certain thought processes.

05:23- Yeah, like, so I speak Russian fluently.

05:27And that's certainly a language

05:30that leads you down certain thought processes.

05:33Well, yeah, I mean, there's a history

05:36of the two world wars,

05:39of millions of people starving to death

05:43or near to death throughout its history,

05:45of suffering, of injustice,

05:47like this promise sold to the people

05:49and then the carpet or whatever

05:52is swept from under them.

05:54It's like broken promises.

05:55And all of that pain and melancholy

05:57is in the language, the sad songs,

06:01the sad, hopeful songs, the over-romanticized,

06:04like, I love you, I hate you,

06:06the sort of the swings between

06:08all the various spectrums of emotion.

06:11So that's all within the language.

06:13The way it's twisted,

06:14there's a strong culture of rhyming poetry.

06:19So like the bards, like the sync,

06:21there's a musicality to the language too.

06:24- Did Dostoevsky write in Russian?

06:27- Yeah, so like,

06:28(speaking in foreign language)

06:32All the--

06:32- The ones that I know about,

06:33which are translated.

06:34And I'm curious how the translations.

06:36- So Dostoevsky did not use

06:39the musicality of the language too much.

06:42So it actually translates pretty well

06:44because it's so philosophically dense

06:46that the story does a lot of the work.

06:48But there's a bunch of things that are untranslatable.

06:51Certainly the poetry is not translatable.

06:53I actually have a few conversations coming up offline

06:57and also in this podcast

06:59with people who've translated Dostoevsky.

07:01And that's for people who worked in this field,

07:06know how difficult that is.

07:07Sometimes you can spend months

07:10thinking about a single sentence in context,

07:13'cause there's just a magic captured by that sentence.

07:16And how do you translate just in the right way?

07:18Because those words can be really powerful.

07:22There's a famous line,

07:24"Beauty will save the world" from Dostoevsky.

07:26There's so many ways to translate that.

07:29And you're right,

07:30the language gives you the tools

07:32with which to tell the story,

07:34but it also leads your mind down certain trajectories

07:37and paths to where over time,

07:39as you think in that language,

07:41you become a different human being.

07:42- Yes.

07:43Yeah, that's a fascinating reality, I think.

07:45I know people have explored that,

§02Transcript · 07:47–15:26

07:47but it's, I guess, rediscovered.

07:49- Well, we don't, we live in our own little pockets.

07:52This is the sad thing,

07:54is I feel like, unfortunately,

07:56given time and getting older,

07:59I'll never know China, the Chinese world,

08:03'cause I don't truly know the language.

08:05Same with Japanese.

08:06I don't truly know Japanese and Portuguese and Brazil,

08:10that whole South American continent.

08:12Like, yeah, I'll go to Brazil and Argentina,

08:14but will I truly understand the people

08:17if I don't understand the language?

08:18It's sad because I wonder how much,

08:23how many geniuses we're missing

08:25because so much of the scientific world,

08:28so much of the technical world is in English,

08:31and so much of it might be lost

08:33because we don't have the common language.

08:36- I completely agree.

08:36I'm very much in that vein of,

08:39there's a lot of genius out there that we miss,

08:41and we're sort of fortunate when it bubbles up

08:45into something that we can understand or process.

08:48There's a lot we miss.

08:50So that's why I tend to lean towards

08:51really loving democratization

08:54or things that empower people

08:55or very resistant, sort of authoritarian structures.

09:00Fundamentally for that reason,

09:01well, several reasons, but it just hurts us.

09:04We're worse off.

09:06- So speaking of languages that empower you,

09:09so Python was the first language for me

09:11that I really enjoyed thinking in, as you said.

09:16- Sounds like you shared my experience too.

09:18- So when did you first,

09:19do you remember when you first kind of connected with Python,

09:21maybe even fell in love with Python?

09:23- It's a good question.

09:24It was a process that took about a year.

09:26I first encountered Python in 1997.

09:29I was a graduate student studying biomedical engineering

09:31at the Mayo Clinic, and I had previously,

09:34I'd been involved in taking information from satellites.

09:39I was an electrical engineering student,

09:41used to taking information

09:42and trying to get something out of it,

09:43doing some data processing information out of it.

09:46And I'd done that in MATLAB.

09:47I'd done that in Perl.

09:49I'd done that in scripting on a VMS.

09:52There's actually a VAX VMS system,

09:54and they had their own little scripting tools

09:56around Fortran.

09:57Done a lot of that.

09:58And then as a graduate student,

10:00I was looking for something and encountered Python,

10:04and because Python had an array,

10:06had two things that made me not filter it away.

10:09Because I was filtering a bunch of stuff.

10:10It was Yorick, I looked at Yorick,

10:11I looked at a few other languages that are out there

10:14at the time in 1997, but it had arrays.

10:17There's a library called Numeric

10:19that had just been written in '95,

10:20like not very, not too much earlier,

10:23by an MIT alum, Jim Huganin.

10:26You know, and I went back and read the mailing list

10:29to see the history of how it grew,

10:30and there was a very interesting,

10:31it's fascinating to do that, actually,

10:32to see how this emergent cooperation,

10:36unstructured cooperation happens in the open source world

10:39that led to a lot of this collective programming,

10:43which is something maybe we might get into a little later,

10:45about what that looks like.

10:46- What gap did Numeric fill?

10:48- Numeric filled the gap of having an array object.

10:50So instead-- - There was no array object.

10:51- There was no array,

10:52there was a one-dimensional byte concept,

10:55but there was no N-dimensional,

10:57two, three, four-dimensional tensor, they call it now.

11:00I'm still in the category that a tensor is another thing,

11:03and it's just an N-V-A-R-A, we should call it,

11:05but kind of lost that battle.

11:07- There's many battles in this world,

11:10some of which we win, some we lose.

11:12- That's exactly right.

11:14But it had no math to it.

11:17So Numeric had math and a basic way to think in arrays.

11:20So I was looking for that, and it had complex numbers.

11:23A lot of programming languages,

11:26and you can see it because, you know,

11:28if you're just a computer scientist,

11:29you think, "Ah, complex numbers are just two floats."

11:32So people can build that on.

11:34But in practice, a complex number

11:36as one of the significant algebras

11:38that helps connect a lot of physical

11:40and mathematical ideas,

11:42particularly to FFT for an actual engineer.

11:45And it's a really important concept,

11:48and not having it means you have to develop it

11:50several times, and those times may not share an approach.

11:54One of the common things in programming,

11:55one of the things programming enables is abstractions.

11:59But when you have shared abstractions, it's even better.

12:01It sort of gets to the level of language

12:02of actually we all think of this the same way,

12:05which is both powerful and dangerous, right?

12:07Because powerful in that we now can quickly make

12:11bigger and higher level things

12:13on top of those abstractions dangerous,

12:14because it also limits us as to the things

12:17we maybe left behind in producing that abstraction,

12:20which is at the heart of programming today,

12:21and actually building around the programming world.

12:24So I think it's a fascinating philosophical topic.

12:26- Yeah, that will continue for many years, I think.

12:28- For many years.

12:29- As we build more and more and more abstractions.

12:31- Yes, I often think about, you know,

12:32we have a world that's built on these abstractions

12:35that, were they the only ones possible?

12:37Certainly not, but they led to,

12:39now it's very hard to do it differently.

12:42Like there's an inertia that's very hard to,

12:44you know, push out, push away from.

12:47There's, it has implications for things like,

12:49you know, the Julia language,

12:50which you have heard of, I'm sure.

12:52And I've met the creators, and I like Julia.

12:55It's a really cool language,

12:56but they've struggled to kind of,

12:58against just the tide of like this inertia

13:01of people using Python.

13:03And, you know, there's strategies to approach that,

13:05but nonetheless, it's a phenomenon.

13:07And sometimes, so I love complex numbers,

13:09and I love to erase, so I looked at Python.

13:12And then I had the experience, I did some stuff in Python,

13:15and I was just doing my PhD, so I was out,

13:17my focus was on, I was actually doing a combination

13:20of MRI and ultrasound, and looking at a phenomenon

13:23called elastography, which is you push waves

13:25into the body, and observe those waves,

13:28like you can actually measure them,

13:30and then you do mathematical inversion

13:32to see what the elasticity is.

13:35And so that's the problem I was solving,

13:36is how to do that with both ultrasound and MRI.

13:39I needed some tool to do that with.

13:41So I was starting to use Python in '97.

13:44In '98, I went back, looked at what I'd written,

13:47and realized I could still understand it,

13:49which is not the experience I'd had

13:50when doing Perl in '95, right?

13:53I'd done the same thing, and then I looked back,

13:55and I'd forgotten what I was even saying.

13:58Now, you know, I'm not saying, so that made me,

14:00hey, this may work, I like this.

14:02This is something I can retain

14:05without becoming an expert, per se.

14:07And so that led me to go, hmm, I'm gonna push more to this.

14:10And then '98 was kind of when I started

14:14to fall in love with Python, I would say.

14:16- A few peculiar things about Python,

14:20so maybe compare it to Perl,

14:22compare it to some of the other languages.

14:24So there's no braces.

14:26- Yeah, yeah.

14:27- So space is used, indentation, I should say,

14:31is used as part of the language.

14:33- Yeah, right.

14:35- So did you, I mean, that's quite a leap.

14:40Were you comfortable with that leap,

14:41or were you just very open-minded?

14:42- It's a good question.

14:43I was open-minded, so I was cognizant of the concern.

14:48And it definitely has, it has specific challenges.

14:52You know, cut and pasting, for example,

14:53when you're cut and pasting code,

14:55and if your editors aren't supportive of that,

14:57if you're putting it into a terminal,

14:59and particularly in the past,

15:00when terminals didn't necessarily have the intelligence

15:02to manage it now.

15:03Now, iPython and Jupyter Notebooks handle it just fine,

15:06so there's really no problem,

15:06but in the past, it created some challenges,

15:08formatting challenges, also mixed tabs and spaces.

15:12If editors weren't, you weren't clear

15:14on what was happening, you would have these issues.

15:16So there were really concrete reasons about it

15:19that I heard and understood.

15:20I never really encountered a problem with it,

15:23personally, like it was occasional annoyances,

15:26but I really liked the fact

§03Transcript · 15:28–22:42

15:28that it didn't have all this extra characters, right?

15:31That these extra characters didn't show up

15:33in my visual field when I was just trying

15:35to process understanding a snippet of code.

15:38- Yeah, there's a cleanness to it.

15:39But I mean, the idea is supposed to be

15:41that Perl also has a cleanness to it

15:43because of the minimalism of like how many characters

15:46it takes to express a certain thing.

15:48So it's very compact.

15:49But what you realize with that compactness comes,

15:53there's a culture that prizes compactness.

15:57And so the code gets more and more compact

15:58and less and less readable to a point where it's like,

16:01like to be a good programmer in Perl,

16:05you write code that's basically unreadable.

16:07- Right. - There's a culture.

16:09- Correct, and you're proud of it.

16:10- Yeah, you're proud of it.

16:12- Right, exactly, and it's like feels good.

16:14And it's really selective.

16:16Like it means you have to be an expert in Perl

16:19to understand it.

16:20Whereas Python allowed you not to have to be an expert.

16:23You don't have to take all this brain energy.

16:24You could leverage, what I say,

16:25you could leverage your English language center,

16:28which you're using all the time.

16:30I've wondered about other languages,

16:31particularly non-Latin-based languages.

16:34Latin-based languages with the characters are at least similar.

16:37I think people have an easier time,

16:38but I don't know what it's like to be a Japanese

16:41or a Chinese person trying to learn a different syntax.

16:45Like what would computer programming look like in that?

16:49I haven't looked at that at all,

16:50but it certainly doesn't,

16:52leveraging your Chinese language center,

16:54I'm not sure Python or any programming language does that.

16:57But that was a big deal.

16:58The fact that it was accessible, I could be a scientist.

17:00What I really liked is many programming languages

17:02really demand a lot of you, and you can get a lot,

17:04you do a lot if you learn it.

17:07But Python enables you to do a lot

17:08without demanding a lot of you.

17:10There's nuance to that statement,

17:13but it certainly is more accessible.

17:15So more people could actually, as a scientist,

17:17as somebody who, or an engineer,

17:19who was trying to solve another problem

17:21besides programming, I could still use this language

17:24and get things done and be happy about it.

17:27Now I was also comfortable in C at that time.

17:30- And MATLAB you did a little bit of that.

17:30- And MATLAB I did a lot before that, exactly.

17:33So I was comfortable in,

17:34those three languages were really the tools I used

17:37during my studies and schooling.

17:39But to your point about language helping you think,

17:42one of the big things about MATLAB was it was,

17:44and APL before it, I don't know if you remember APL.

17:47- Nope.

17:48- APL is actually the predecessor of array-based programming,

17:51which I think is really an underappreciated,

17:54if I talk to people who are just steeped

17:55in computer programming, computer science,

17:57most of the people that Microsoft has hired

17:59in the past, for example,

18:01Microsoft as a company generally did not understand

18:03array-based programming, culturally they didn't understand it

18:06so they kept missing the boat,

18:08kept missing the understanding of what this was.

18:11They've gotten better, but there's still a whole culture

18:14of folks that doesn't, programming,

18:15that's systems programming or web programming

18:18or lists and maps and what about an n-dimensional array?

18:22Oh yeah, that's just an implementation detail.

18:24Well, you can think that, but then actually

18:27if you have that as a construct,

18:28you actually think differently.

18:29APL was the first language to understand that

18:31and it was in the 60s.

18:33The challenge of APL is APL had very dense,

18:36not only glyphs, like new characters, new glyphs,

18:39they even had a new keyboard

18:40because to produce those glyphs,

18:42this was back in the early days of computing

18:43when the QWERTY keyboard maybe wasn't as established.

18:47Like, well, we can have a new keyboard, no big deal.

18:50But it was a big deal and it didn't catch on

18:52and the language APL, very much like Perl,

18:56as people would pride themselves on how much,

18:58could they write the game of life in 30 characters of APL?

19:03APL has characters that mean summation

19:06and they have adverbs, they would have adjectives

19:08and these things called adverbs,

19:10which are like methods, like reduction,

19:12it would be an adverb on an ad operator.

19:14But using these tools, you could construct

19:18and then you start to think at that level,

19:20you think in n dimensions, it's something I like to say,

19:22and you start to think differently about data at that point.

19:26It really helps.

19:27- Yeah, I mean, outside of programming,

19:30if you really internalize linear algebra as a course,

19:33I mean, it philosophically allows you

19:35to think of the world differently.

19:37It's almost like liberating.

19:38You don't have to think about the individual numbers

19:42in the n dimensional array.

19:44You could think of it as an object in itself

19:46and all of a sudden this world can open up.

19:48You're saying MATLAB and APL were like the early,

19:52I don't know if many languages got that right ever.

19:54- No, no, no, they didn't.

19:57Even still, I would say, I mean,

19:59NumPy is an inheritor of the traditions.

20:03I would say APLJ was another version that was,

20:06what it did is not have the glyphs,

20:08just have short characters,

20:09but still a Latin keyboard could type them.

20:11And then Numeric inherited from that

20:14in terms of let's add arrays plus broadcasting,

20:17plus methods, reduction,

20:19even some of the language like rank

20:21is a concept that was in Python,

20:23it's still in Python, for the number of dimensions.

20:25That's different than say the rank of a matrix,

20:29which people think of as well.

20:31So it came from that tradition,

20:33but NumPy is a very pragmatic, practical tool.

20:37NumPy inherited from Numeric

20:39and we can get to where NumPy came from,

20:40which is the current array,

20:42at least current as of 2015, 2017,

20:46now there's a ton of them over the past two or three years.

20:49We can get into that too.

20:50- So if we just sort of linger on the early days

20:52of what was your favorite feature of Python?

20:56Do you remember like what--

20:57- Yeah.

20:58- It's so interesting to linger on like the,

21:02what really makes you connect with a language?

21:06I'm not sure it's obvious to introspect that.

21:09- No, it isn't, and I've thought about that

21:11at some length.

21:12I think definitely the fact that I could read it later,

21:16that I could use it productively without becoming an expert.

21:19Like other languages I had to put more effort into.

21:21- Right, that's like an empirical observation,

21:23like you're not analyzing any one aspect of the language,

21:26it just seems time after time,

21:28you look back, it's somehow readable.

21:30- It's somehow readable,

21:31and then it was sort of,

21:32I could take executable English

21:35and translate it to Python more easily.

21:36Like I didn't have to go,

21:37there was no translation layer.

21:39As an engineer or as a scientist,

21:41I could think about what I wanted to do,

21:43and then the syntax wasn't that far behind it.

21:45- Yeah.

21:46- Right, now there are some warts there still,

21:49it wasn't perfect.

21:50There's some areas where I'm like,

21:51"Ah, it'd be better if this were different,

21:52"or if this were different."

21:54Some of those things got added to the language too.

21:56I was really grateful for some of the early pioneers

21:58in the Python ecosystem back,

22:00'cause Python got written in '91,

22:01is when the first version came out.

22:03But Guido was very open to users,

22:06and one of the sets of users

22:07were people like Jim Hugonin,

22:08and David Asher, and Paul Dubois,

22:11and Conrad Hinson.

22:13These were people that were on the main list,

22:15and they were just asking for things like,

22:16"Hey, we really should have complex numbers

22:18"in this language."

22:19So let's, you know, there's a J,

22:21there's a one J, right?

22:22And the fact that they went the engineering route of J

22:24is interesting.

22:25I don't think that's entirely favoring engineers,

22:28I think it's because I is so often used

22:30as the index of a for loop.

22:32(Lex laughs)

22:32I think that's actually why.

22:34- Probably.

22:35- Right.

22:35- That's the pragmatic aspect.

22:36- But the fact that complex numbers were there,

22:38I love that.

22:39The fact that I could write NDA array constructs,

22:41and that reduction was there.

22:42Very simple to write summations,

§04Transcript · 22:44–29:25

22:44and broadcasting was there.

22:46I could do addition of whole arrays.

22:48So that was cool.

22:50Those are some things I loved about it.

22:52- I don't know what to start talking to you about,

22:54'cause you've created so many incredible projects

22:57that basically changed the whole landscape of programming.

23:00But okay, let's start with,

23:02let's go chronologically with SciPy.

23:06You created SciPy over two decades ago now?

23:09- Yes. - Right?

23:09- Yes, I love to talk about SciPy.

23:10SciPy was really my baby.

23:12- What is it?

23:14What was its goal?

23:15What is its goal?

23:16How does it work?

23:17- Yeah, fantastic.

23:18So SciPy was effectively,

23:20here I am using Python to do stuff

23:22that I previously used MATLAB to use.

23:25And I was using Numeric,

23:26which is an array library that made a lot of it possible.

23:28But there's things that were missing.

23:29Like I didn't have an ordinary differential equation solver,

23:32I could just call, right?

23:33I didn't have integration.

23:35Hey, I wanted to integrate this function.

23:37Okay, well, I don't have just a function

23:38I can call to do that.

23:40These are things I remember being critical things

23:42that I was missing.

23:43Optimization, I just wanna pass a function to an optimizer

23:46and have it tell me what the optimum value is.

23:49Those are things like,

23:50well, why don't we just write a library

23:52that adds these tools?

23:54And I started to post to the main list,

23:55and there'd previously been,

23:57people have discussed,

23:58I remember Conrad Hinson saying,

23:59wouldn't it be great if we had this optimizer library?

24:00Or David Ash would say this stuff.

24:02And I'm ambitious,

24:06ambitious is the wrong word,

24:06and eager, and probably more time than sense.

24:11I was a poor graduate student.

24:13My wife thinks I'm working on my PhD, and I am.

24:15But part of the PhD that I loved

24:17was the fact that it's exploratory.

24:19You're not just taking orders,

24:21fulfilling a list of things to do,

24:23you're trying to figure out what to do.

24:25And so I thought, well, I'm writing tools

24:27for my own use in a PhD,

24:29so I'll just start this project.

24:32And so in '99, '98 was when I first started

24:34to write libraries for Python.

24:36But really when I fell in love with Python in '98,

24:38I thought, oh, well, there's just a few things missing.

24:39Like, oh, I need a reader to read DICOM files.

24:42I was in medical imaging,

24:43and DICOM was a format that,

24:45I want to be able to load that into Python.

24:46Okay, how do I write a reader for that?

24:48So I wrote something called,

24:49it was an IO package, right?

24:51And that was my very first extension module,

24:54which is C.

24:55So I wrote C code to extend Python

24:57so that in Python I could write things more easily.

24:59That combination kind of hooked me.

25:02It was the idea that I could,

25:03here's this powerful tool I can use

25:04as a scripting language and a high-level language

25:06to think about, but that I can extend easily.

25:09- In C. - Easily in C.

25:11Easily for me because I knew enough C.

25:13And then Guido had written a,

25:15I mean, the only, the hard part of extending Python

25:17was something called the way memory management works,

25:19and you have to reference counting.

25:21And so there's a tracking of reference counting

25:23you have to do manually.

25:25And if you don't, you have memory leaks.

25:27And so that's hard.

25:29Plus in C, it's much more,

25:31you have to put more effort into it.

25:32It's not just, I have to now think about pointers

25:34and I have to think about stuff that is different.

25:37I have to kind of,

25:38you're like putting a new cartridge in your brain.

25:40Like you're, okay, I'm thinking about MRI,

25:42now I'm thinking about programming.

25:44And there are distinct modules

25:45you end up having to think about.

25:46So it's harder.

25:47When I was just in Python,

25:48I could just think about MRI and high-level writing.

25:51But I could do that, and that kind of, I liked it.

25:54I found that to be enjoyable and fun.

25:55And so I ended up, oh,

25:57well, let me just add a bunch of stuff to Python

25:59to do integration.

26:00Well, and the cool thing is,

26:01is that the power of the internet,

26:03I just looking around and I found,

26:04oh, there's this NetLib,

26:06which has hundreds of Fortran routines

26:08that people had written in the '60s and the '70s

26:11and the '80s and Fortran 77, fortunately,

26:13it wasn't Fortran 60s,

26:14it had been ported to Fortran 77.

26:17And Fortran 77 is actually a really great language.

26:21Fortran 90 probably is my favorite Fortran

26:24because it's got complex numbers, got arrays,

26:26and it's pretty high level.

26:27Now, the problem with it is you'd never wanna write

26:29a program in Fortran 90 or Fortran 77,

26:32but it's totally fine to write a subroutine in.

26:34Right, and so, and then Fortran

26:36kind of got a little off course

26:37when they tried to compete with C++.

26:39But at the time, I just want libraries that do something,

26:42like, oh, here's an order-inference equation.

26:43Here's integration.

26:44Here's run-cut-integration.

26:46Already done.

26:47I don't have to think about that algorithm.

26:48I mean, you could, but it's nice to have somebody

26:50who's already done one and tested it.

26:51And so I sort of started this journey in '98, really,

26:55if you look back at the main list,

26:56there's sort of this productive era of me

26:58writing an extension module

27:01to connect run-cut-integration to Python

27:04and making an ordinary additional equation solver,

27:06and then releasing that as a package.

27:09So we could call it ODE-PAC, I think I called it then,

27:11QuadPAC, and then I just made these packages.

27:14Eventually, that became Multipac

27:16'cause they were originally modular.

27:17You can install them separately.

27:19But a massive problem in Python

27:20was actually just getting your stuff installed.

27:23At the time, releasing software for me,

27:25like, today, people think, what does that mean?

27:27Well, then it meant some poorly-written webpage,

27:30I had some bad webpage up, and I put a tarball,

27:33just a gzip tarball of source code.

27:35That was the release.

27:37- But, okay, can we just end that?

27:39- Sure. - Because

27:39the community aspect of creating the package

27:44and sharing that, that's rare.

27:49- To both have-- - What do you mean?

27:50- At that time, so like the raw--

27:51- Yeah, it was pretty early, yeah.

27:52- Well, not rare.

27:54Maybe you can correct me on this,

27:57but it seems like in the scientific community,

27:59so many people, you were basically solving

28:01the problems you needed to solve

28:04to process the particular application,

28:06the data that you need.

28:08And to also have the mind

28:10that I'm going to make this usable for others, that's--

28:15- I would say I was inspired.

28:16I'd been inspired by Linux,

28:18been inspired by Linus and him making his code available,

28:21and I was starting to use Linux at the time.

28:23I went, "This is cool."

28:24So I'd kind of been previously primed that way.

28:27And generally, I was into science

28:29because I liked the sharing notion.

28:31I liked the idea of, hey, let's,

28:32if collectively we build knowledge and share it,

28:34we can all be better off.

28:35- Okay, so you were energized by that idea.

28:37- So I was energized by that already, right?

28:39And I can't deny that, I was.

28:40I'm sort of, I had this very,

28:42I liked that part of science, that part of sharing.

28:45And then all of a sudden, oh, wait, here's something,

28:47and here's something I could do.

28:49And then I slowly over years learned how to share better

28:52so that you could actually engage more people faster.

28:55One of the key things was actually giving people

28:56a binary they could install, right?

28:59So that it wasn't just, here's source code, good luck.

29:01- Compile this, and then--

29:02- It's compiled, ready to install, just, you know, so.

29:05In fact, a lot of the journey from '98, even through 2012,

29:08when I started Anaconda, was about that.

29:10Like, it's why, you know, it's really the key

29:13as to why a scientist with dreams of doing MRI research

29:17ended up starting a software company

29:19that installs software.

29:22- I work with a few folks now that don't program,

29:25like, on the creative side, the video side, the audio side.

§05Transcript · 29:29–37:12

29:29And because my whole life is run on scripts,

29:32I have to try to get them, I'm having now the task

29:35of teaching them how to do Python enough to run the scripts.

29:39And so I've been actually facing this,

29:40whether it's on Anaconda or some,

29:43with the task of how do I minimally explain,

29:45basically to my mom, how to write a Python script.

29:48And it's an interesting challenge.

29:50I have to, it's a to-do item for me to figure out,

29:52like, what is the minimal amount of information

29:55I have to teach, what are the tools you use,

29:57that when you enjoy it, to your effect of it--

30:00- And they're related, those are two related questions.

30:02- And then the debugging, like the iterative process

30:05of running the script to figure out what the error is,

30:07maybe even for some people to do the fix yourself.

30:11So do you compile it, do you,

30:13like, how do you distribute that code to them?

30:15And it's interesting because I think

30:18it's exactly what you're talking about.

30:20If you increase the circle of empathy,

30:24the circle of people that are able to use your programs,

30:28you increase it, it's like, effectiveness and it's power.

30:32And so you have to think, you know, can I write scripts,

30:37can I write programs that can be used by medical engineers,

30:40by all kinds of people that don't know programming?

30:43And actually, maybe plant a seed,

30:46have them catch the bug of programming

30:48so that they start on their journey.

30:50That's a huge responsibility and ultimately

30:52it has to do with the Amazon one-click buy,

30:55like, how frictionless can you make the early steps?

30:58- Frictionless is actually really key.

31:00To go in any community is, any friction point,

31:03you're just gonna lose some people.

31:04- Yeah. - Right?

31:05Sometimes you may wanna intentionally do that

31:09if you're early enough on, you need a lot of help,

31:11you need people who have the skills,

31:13you might actually, it's helpful,

31:14you don't necessarily have too many users

31:16as opposed to contributors if you're early on.

31:20Anyway, SciFi started in '98,

31:23but it really emerged as this collection of modules

31:25that I was just putting on the net,

31:27people were downloading.

31:28And you know, I think I got 100 users, right,

31:31by the end of that year.

31:33But the fact that I got 100 users and more than that,

31:35people started to email me with fixes.

31:39And that was actually intoxicating, right?

31:41That was the, you know, here I'm writing papers,

31:44I'm giving conferences, and I get people to say hello,

31:46but yeah, good job, but mostly it was,

31:48you're viewed with, it's competitive, right?

31:51You publish a paper and people are like,

31:52oh, it wasn't my paper, you know?

31:54I was starting to see that sense of academic life

31:59where it was so much, I thought there was

32:00this cooperative effort, but it sounds like

32:02we're here just to one-up each other.

32:04- Right.

32:05- And you know, that's not true across the board,

32:07but a lot of that's there.

32:08But here in this world, I was getting responses

32:11from people all over the world.

32:13You know, I remember Piero Peterson in Estonia, right,

32:16was one of the first people.

32:17And he sent me back this makefile,

32:18'cause you know, the first thing he did is,

32:19"Yeah, your build thing stinks,

32:21"and here's a better makefile."

32:23Now it was a complex makefile,

32:24I don't think I ever understood that makefile actually,

32:26but it worked, and it did a lot more,

32:29and so I was like, thanks, this is cool.

32:30And that was my first kind of engagement

32:32with community development.

32:35But you know, the process was, he sent me a patch file,

32:37I had to upload a new tarball.

32:39And I just found I really loved that.

32:41And the style back then was, here's a mailing list,

32:43it's very, it wasn't as, it certainly weren't

32:46the tools that are available today, it was very early on.

32:48But I really started to, that's the whole year,

32:50I think I did about seven packages that year, right?

32:54And then by the end of the year,

32:55I collected them into a thing called Multipack.

32:57So '99, there was this thing called Multipack,

32:59and that's when a high school student,

33:01I know he was a high school student at the time,

33:03a guy named Robert Kern, took that package

33:07and made a Windows installer, right?

33:09And then of course a massive increase of usage.

33:12- So by the way, most of this development was under Linux.

33:15- Yes, yes, it was on Linux, I was a Linux developer,

33:18doing it on a Unix box.

33:20I mean, at the time, I was actually getting into,

33:22I had a new hard drive, did some kernel programming

33:25to make the hard drive work.

33:26I mean, not programming, but modification to the kernel

33:28so I could actually get a hard drive working.

33:31I love that aspect of it.

33:32I was also, at school, I was building a cluster,

33:36I took Mac computers, and you put Yellow Dog Linux on 'em.

33:39At the Mayo Clinic, they were just,

33:42all these Macs that were older,

33:43they were just getting rid of,

33:44and so I kind of got permission to go grab 'em together,

33:46I put about 24 of 'em together in a cluster in a cabinet,

33:50and put Yellow Dog Linux on 'em all,

33:51and I wrote a C++ program to do MRI simulation.

33:56That was what I was doing at the same time

33:58for my day job, so to speak.

34:01So I was loving the whole process.

34:03At the same time, I was, oh,

34:04I need a ordinary differential equation.

34:06That's why ordinary differential equations were key,

34:08was because that's the heart of a block equation

34:09for simulating MRI, is an ODE solver.

34:12And so that's, but I actually did that,

34:15it doesn't happen at the same time.

34:16That's why, kind of, what you're working on

34:18and what you're interested in, they're coinciding.

34:20I was definitely scratching my own itch

34:22in terms of building stuff,

34:24which helped in the sense that I was using it for me,

34:27so at least I had one user.

34:28I had one person who was like, well, no, this is better,

34:30I like this interface better,

34:31and I had the experience of MATLAB

34:33to guide some of what those APIs might look like.

34:36But you're just doing yourself,

34:37you're building all this stuff.

34:38But with the Windows installer,

34:40it was the first time I realized,

34:40oh, yeah, the binary installer really helps people.

34:43And so that led to spending more time

34:46on that side of things.

34:49So around 2000, so I graduated my PhD in 2000,

34:52end of year, end of 2000.

34:53So '99, doing a lot of work there,

34:56'98, doing a lot of work there,

34:57'99, kind of spending more time on my PhD,

35:00helping people use the tools,

35:02thinking about what do I wanna go from here.

35:04There was a company, there was a guy, actually,

35:05Eric Jones and Travis Vought,

35:07they were two friends who founded a company called Enthought.

35:11It's here in Austin, still here.

35:13And they, Eric contacted me at the time

35:16when I was a graduate student still,

35:19and he said, hey, why don't you come down,

35:20we wanna build a company,

35:23we're thinking of a scientific company

35:25and we wanna take what you're doing

35:27and kind of add it to some stuff that he'd done,

35:29he'd written some tools.

35:31And then Piero Peterson had done F2Pi,

35:32let's come together and build,

35:34pull this all together and call it SciPy.

35:36So that's the origin of the SciPy brand.

35:39It came from Multipack and a whole bunch of modules

35:42I'd written, plus a few things from some other folks,

35:44and then pulled together in a single installer.

35:47SciPy was really a distribution of Python,

35:49masquerading as a library.

35:51- How did you think about SciPy in context of Python,

35:54in context of numeric?

35:55Like what-- - So we saw SciPy

35:56as a way to make an R&D environment for Python,

35:59like use Python, depended on numeric.

36:03So numeric was the array library we depended on.

36:05And then from there, extend it

36:07with a bunch of modules that allowed for,

36:09and at the time, the original vision of SciPy

36:11was to have plotting, was to have, you know,

36:14REPL environment and kind of a whole,

36:17really a whole data environment

36:18that you could then install and get going with.

36:20And that was kind of the thinking.

36:22It didn't really evolve that way, right?

36:24It sort of had a, but one, it's really hard

36:28to do massive scale projects with open source collectives.

36:33Actually, there's sort of an intrinsic cooperation limit

36:38as to which, you know, too many cooks in the kitchen,

36:40you know, you can do amazing infrastructure work.

36:42When it comes down to bringing it all together

36:44into a single deliverable,

36:45that actually requires a little more product management

36:49that is not, that doesn't really emerge

36:52from the same dynamic.

36:53So it struggled, you know, it struggled to get,

36:56almost too many voices, it's hard to have everybody agree,

36:59you know, consensus doesn't really work at that scale.

37:02You end up with politics, you end up with the same kind

37:03of things that's happened in large organizations

37:06trying to decide on what to do together.

37:09So consensus building was still, was challenging at scale

37:12as more people came in, right?

§06Transcript · 37:13–44:01

37:13Early on, it's fine 'cause there's nobody there.

37:15And so it works, but then as you get more successful

37:17and more people use it, all of a sudden,

37:19oh, there's this scale at which this doesn't work anymore

37:22and we have to come up with different approaches.

37:24So Sci-Fi came out officially in 2001,

37:26was the first release, most of the time,

37:28I remember the days of getting that release ready,

37:31it was a Windows installer and there were bugs on how,

37:34you know, the Windows compiler handled complex numbers

37:36and you were chasing segmentation faults.

37:38It was, it's a lot of work.

37:40There was a lot of,

37:42effort had nothing to do with my area of study.

37:45And at the same time, I had just gotten an offer.

37:47So he wondered if I wanted to come down

37:48and help him start that company with his friend.

37:51And I, at the time, I was like, I was so intrigued,

37:53but I was squaring a path, an academic path.

37:56And I had just got an offer to go and teach

37:59at my alma mater.

38:00So I took that tenure track position.

38:02And Sci-Fi and kind of,

38:03then I started working on Sci-Fi as a professor too.

38:07- Okay.

38:07- So that's, I left, I've got the Mayo Clinic, graduated,

38:10wrote my thesis using Sci-Fi, wrote, you know,

38:12there's images that were created.

38:15Now the plotting tool I used was something

38:17from Yorick actually.

38:18It was a plotting, a PLT,

38:21kind of a plotting language that I used.

38:22- Yorick is a programming language?

38:23- It was a programming language.

38:24It had a plotting tool, Dyslin.

38:27It had integration to Dyslin.

38:28I ended up using Dyslin plus some of the plotting

38:31from Yorick, linked to from Python.

38:33Anyway, it was, people don't plot that way now,

38:37but this is before, and Sci-Fi was trying to add plotting.

38:40- Yeah. - Right?

38:41It didn't have much success.

38:42Really the success of plotting came from John Hunter,

38:45who had a similar experience to my experience,

38:47my kind of maverick experience as a person

38:49just trying to get stuff done and kind of having more time

38:51than money maybe, right?

38:53- And John Hunter created what?

38:55- Matplotlib.

38:56- He's the creator of Matplotlib?

38:57- Yeah, so John Hunter was, you know,

38:59he wasn't a student at the time, but he was an,

39:00he was working in quant field,

39:01and he said, "We need better plotting."

39:03So he just went out and said, "Cool, I'll make a new project,

39:05"and we'll call it Matplotlib," and he released it in 2001,

39:08about the same time that Sci-Fi came out.

39:09And it was separate library, separate install,

39:12used numeric, Sci-Fi used numeric.

39:15And so Sci-Fi, you know, in 2001 we released Sci-Fi,

39:18and then Enthoq created a conference called Sci-Fi,

39:22which brought people together to talk about the space.

39:25And that conference is still ongoing.

39:26It's one of the favorite conferences of a lot of people,

39:28because it's, you know, it's changed over the years,

39:30but early on it was, you know, a collection of 50 people

39:33who care about, scientists mostly, you know,

39:36practicing scientists who want to care about coding

39:39and doing it well and not using MATLAB.

39:42And I remember being driven by, you know, I like MATLAB,

39:44but I didn't like the fact that,

39:46so I'm not opposed to proprietary software.

39:48I'm actually not an open source zealot.

39:50I love open source for what it brings,

39:52but I also see the role for proprietary software.

39:54But what I didn't like was the fact

39:55that I would develop code and publish it,

39:58and then effectively telling somebody,

39:59"Here, to run my code,

40:00"you have to have this proprietary software."

40:02- Right, and there's also culture around MATLAB,

40:05as much, 'cause I've talked to a few folks,

40:07Mathworks creates MATLAB.

40:09- Yeah.

40:10- I mean, there's just a culture, they try really hard,

40:13but it just is this corporate IBM style culture

40:16that's like, or whatever.

40:18I don't want to say negative things about IBM or whatever,

40:20but there's a--

40:22- No, it's really that connection.

40:23It's something I'm in the middle of right now

40:24is the business of open source

40:27and how do you connect the ethos of cooperative development

40:30with the necessity of creating profits, right?

40:34And like right now today, you know,

40:36I'm still in the middle of that.

40:38That's actually the early days

40:40of me exploring this question.

40:42'Cause I was writing sci-fi, I mean, as an aside,

40:44I also had, so I had three kids at the time.

40:46I have six kids now.

40:47I got married early, wanted a family.

40:49I had three kids, and I remember reading,

40:52I read Richard Stallman's post,

40:54and I was a fan of Stallman.

40:55I would read his work.

40:56I liked his collective ideas he would have.

40:58Certainly the ideas on IP law, I read a lot of his stuff.

41:01But then he said, you know,

41:03"Okay, well, how do I make money with this?

41:05"How do I make a living?

41:06"How do I pay for my kids?"

41:07All this stuff was in my mind,

41:09young graduate student making no money,

41:10thinking I gotta get a job.

41:12And he said, "Well, you know,

41:13"I think just be like me and don't have kids, right?

41:15"That's just don't, don't."

41:17- That's his take on it, that's his--

41:18- That was the, what he said in that moment, right?

41:20That's the thing I read, and I went,

41:22"Okay, this is a train I can't get on."

41:23- Yeah.

41:24There has to be a way to preserve the culture of open source

41:27and still be able to make sufficient money to feed your--

41:29- Yes, exactly, there's gotta be.

41:31Well, so that actually led me to a study of economics.

41:34'Cause at the time, I was ignorant, and I really was.

41:36And I'm actually, I'm embarrassed for educational system

41:39that they could let me, and I was valedictorian

41:41in my high school class, and I did super well in college.

41:43And academically, I did great, right?

41:47But the fact that I could do that and then be clueless

41:49about this key part of life,

41:52it led me to go, "There's a problem."

41:54Like, I should've learned this in fifth grade.

41:56I should've learned this in eighth grade.

41:58Like, everybody should come out

41:59with a basic knowledge of economics.

42:01- You're an interesting example

42:02because you've created tools that changed the lives

42:05of probably millions of people,

42:07and the fact that you don't understand,

42:09at the time of the creation of those tools,

42:11the basics economics of how to build up a giant system

42:14is a problem.

42:15- Yeah, it's a problem.

42:16And so, during my PhD at the same time,

42:18this is back in '98, '99, at the same time,

42:20I was in a library, I was reading books on capitalism,

42:23I was reading books on Marxism,

42:24I was reading books on, you know, what is this thing?

42:27What does it mean?

42:29And I encountered, basically, I encountered a set of writings

42:33from people that said they were the inheritors

42:34of Adam Smith.

42:35Read Adam Smith for the first time, right?

42:37Which is the wealth of nations

42:38and kind of this notion of emergent societies,

42:42and realized, oh, there's this whole world out here

42:45of people, and the challenge of economics

42:48is also political.

42:49Like, 'cause economics, you know, people,

42:53different parties running for office,

42:54they want their economic friends.

42:58They want their economists to back them up, right?

43:00Or to be their magicians,

43:02like the magicians in Pharaoh's court, right?

43:04The people that are gonna say,

43:05hey, this is, you should listen to me

43:06because I've got the expert who says this.

43:09And so, it gets really muddled, right?

43:11But I was looking at it as a scientist,

43:13going, what is this space?

43:14What does this mean?

43:15How does Paris get fed?

43:16How does, what is money?

43:18How does it work?

43:19And I found a lot of writings that I really loved.

43:21I found some things that I really loved,

43:22and I learned from that.

43:23It was writings from people like Von Mises.

43:26He wrote a paper in 1920

43:27that still should be read more than it is.

43:30It was the economic calculation problem

43:33of the socialist commonwealth.

43:34It was basically in response

43:35to the Bolshevik Revolution in 1917.

43:37And his basic argument was,

43:39it's not gonna work to not have private property.

43:41You're not gonna be able to come up with prices.

43:43The bureaucrats aren't gonna be able to determine

43:45how to allocate resources without a price system.

43:47And a price system emerges from people making trades.

43:51And they can only make trades

43:52if they have authority over the thing they're trading.

43:55And that creates information flow

43:58that you just don't have

43:59if you try to top down it.

44:01- Right. - Right.

§07Transcript · 44:02–51:06

44:02It's like, huh, that's a really good point.

44:04- Yeah, the prices have a signal that's used.

44:06And it's important to have that signal

44:09when you're trying to build a community

44:11of productive people-- - Yeah.

44:11- Like you would in the software engineering space.

44:13- Yeah, the prices are actually

44:14an important signaling mechanism.

44:17- Yeah. - Right?

44:17And that money is just a bartering tool.

44:20- Yeah. - Right?

44:21So this is the first time I've encountered

44:22any of this concept, right?

44:23And the fact that, oh, this is actually really critical.

44:26Like, it's so critical to our prosperity

44:29and that we're dangerously not learning about this,

44:34not teaching our children about this.

44:36- So you had the three kids,

44:37and you had to make some hard decisions.

44:38- Had to make some money, right?

44:38Had to figure it out.

44:39But I didn't really care.

44:40I mean, I've never been driven by money,

44:42just need it, in fact. - Yeah, right.

44:44To eat.

44:45So how did that resolve itself in terms of Sly Fi?

44:49- So I would say it didn't really resolve itself.

44:51It sort of started a journey that I'm continuing on.

44:53I'm still on, I would say.

44:54I don't think it resolved itself.

44:55But I will say I went in eyes wide open.

44:59Like, I knew that there were problems

45:00with giving stuff away and creating the market externalities

45:05that the fact that, yeah, people might use it,

45:09and I might not get paid for it,

45:10and I'll have to figure something else out to get paid.

45:13Like, at least I can say I'm not bitter

45:14that a lot of people have used stuff that I've written,

45:17and I haven't necessarily benefited economically from it.

45:20I've heard other people be bitter about that

45:22when they write or they talk,

45:23like, oh, I should've gotten more value out of this.

45:24And I'm also, I want to create systems

45:27that let people like me,

45:29who might have these desires to do things,

45:31let them benefit, so it actually creates more of the same.

45:34- Not to turn on your bitterness mojo,

45:36but there's some aspect, I wish there was mechanisms

45:40for me to reward whoever created Sly Fi and NumPy,

45:43'cause it brought so much joy to my life.

45:45- I appreciate that.

45:46- You know what I mean?

45:46- The tip jar notion was there.

45:48I appreciate that, and I think--

45:49- But there should be a very frictionless mechanism.

45:51- There should be a frictionless mechanism, I totally agree.

45:53I would love to talk about some of the ideas I have,

45:55'cause I actually came across,

45:56I think I've come up with some interesting notions

45:58that could work, but they'll require,

46:00anything that will work takes time to emerge, right?

46:03Things don't just turn overnight.

46:04That's definitely one thing I've also understood and learned

46:07is any fixes, that's why it's kind of funny,

46:10we often give credit to, oh, this president gets elected,

46:12and oh, look how great things have done.

46:14And I saw that when I had a transition in a condo

46:18when a new CEO came in, right?

46:19And it's like the success that's happening,

46:22there's an inertia there, right?

46:24- And sometimes the decision you made 10 years before

46:26is the reason why the success is--

46:29- Right, exactly, so we're sort of just

46:30running around taking credit for stuff.

46:32- The credit assignment has a delay to it

46:35that makes the credit assignment

46:36basically wrong more than right.

46:39- Wrong more than right, exactly,

46:40and so I'm like, oh, this is,

46:42that's the stuff I would read a ton about early on.

46:45So I don't, I feel like I'm with you.

46:47I want the same thing, I want to be able to,

46:49and honestly, not for personally, I've been happy,

46:51I've been happy, I feel like I don't have any,

46:53I mean, we've been done reasonably okay,

46:55but I've had to pursue it.

46:56Like, that's really what started my

46:58trajectory from academia, is reading that stuff

47:02led me to say, oh, entrepreneurship matters.

47:04I love software, but we need more entrepreneurs,

47:09and I want to understand that better.

47:10So once I kind of had that virus infect my brain,

47:14even though I was on a trajectory

47:17to go to a tenure track position at a university,

47:20and I was there for six years,

47:22I was kind of already out the door when I started,

47:26and we can get into that, but--

47:27- Well, can I just ask a quick question on,

47:30is there some design principles

47:32that were in your mind around sci-pi?

47:34Like, was there some key ideas

47:36that were just sticking to you,

47:38that this is the fundamental ideas?

47:40- Yeah, I would say so.

47:41I would think it's basically accessibility to scientists.

47:43Like, give them, give scientists and engineers

47:46tools that they don't have to think a lot about programming,

47:48so give them really good building blocks.

47:50Give them functions that they want to call,

47:51and sort of just the right length of spelling.

47:54There's one tradition in programming

47:58where it's like, make very, very long names, right?

48:01And you can see it in some programming languages

48:03where the names get, take half the screen.

48:06And in the 4chan world,

48:09characters would have to be six letters early on, right?

48:12And that's way too much, too little,

48:14but I was like, I liked to have names

48:16that were informative, but short.

48:18- So even though Python,

48:21well, this is a different conversation,

48:22but documentation is doing some work there.

48:25So when you look at great scientific libraries

48:29and functions, there's a richness of documentation

48:32that helps you get into the details.

48:34The first glance at a function gives you the intuition

48:37of all it needs to do by looking at the headers and so on,

48:40but to get the depths of all the complexities involved,

48:43all the options involved,

48:44documentation does some of the work.

48:45- Documentation is essential.

48:47- Yeah.

48:47- So we thought about several things.

48:50One is we wanted plotting.

48:51We wanted interactive environment.

48:53We wanted good documentation.

48:54These are things we knew we wanted.

48:56The reality is those took about 10 years to evolve, right?

49:00Given the fact that we didn't have a big budget,

49:02it was all volunteer labor.

49:03It was sort of, when Enthought got created

49:06and they started to try to find projects,

49:10people would pay for pieces

49:11and they were able to fund some of it,

49:13not nearly enough to keep up with what was necessary.

49:15And no criticism, just simply the reality.

49:18I mean, it's hard to start a business and then do consulting

49:22and then also promote an open source project

49:24that's still fairly new.

49:26Saipa was fairly niche.

49:27We stayed connected all while I was a student,

49:30sorry, a professor.

49:30I went to BYU and started to teach electrical engineering,

49:33all the applied math courses.

49:35I loved teaching signal processing,

49:37probability theory, electromagnetism.

49:39I was, if you look at my professor,

49:40which my kids love to do,

49:42I wasn't, I got some bad reviews

49:45because people--

49:46- What was the criticism?

49:48- I would speak too high of a level.

49:51I definitely had a calibration problem

49:52coming out of graduate work

49:55where I hate to be condescending to people.

49:56Like I really have a ton of respect

49:58for people fundamentally.

49:59Like my fundamental thing is I respect people.

50:02Sometimes that can lead to a,

50:03I was thinking they had more knowledge than they did.

50:07And so I would just speak at a very high level,

50:10assume they got it.

50:11- But they need to rise to the standard that you set.

50:14I mean, that's one of the,

50:15some of the greatest teachers do that.

50:17- And I agree, and that was kind of what was inspiring me.

50:19But you also have to,

50:21I cannot say I was an articulate

50:24of some of the greatest teachers.

50:26I was, like one classic example,

50:28when I first taught at BYU,

50:30my very first class, it was overheads,

50:31transparencies, overheads.

50:34Before projectors were really that common.

50:36Transparencies, I'm writing my notes out.

50:38I go in, room's half dark.

50:40I just blaring through these transparencies.

50:42Here it is, here it is, here it is.

50:44And I gave a quiz after two weeks.

50:47Nowhere knew anything.

50:48Nothing I had taught had gotten anywhere.

50:51(laughing)

50:52And I realized, okay, I'm not, this is not working.

50:54So I put away the transparencies,

50:56and I turned around and just started using the chalkboard.

50:58And what it did is it slowed me down.

51:00Right, the chalkboard just slowed me down

51:02and gave people time to process and to think.

51:04And then that made me focus.

51:06My writing wasn't great on the chalkboard,

§08Transcript · 51:07–58:05

51:07but I really love that part of like the teaching.

51:10So that entered Sai Pai's world

51:12in terms of we always understood

51:13that there's a didactic aspect of Sai Pai.

51:15Kind of how do you take the knowledge and then produce it?

51:18The challenge we had was the scope.

51:21Like ultimately Sai Pai was everything, right?

51:23And so 2001 when it first came out,

51:25people were starting to use it.

51:26No, this is cool.

51:27This is a tool we actually use.

51:29At the same time, 2001 timeframe,

51:31there was a little bit of like the Hubble Space Telescope.

51:33The folks at Hubble had started to say,

51:35hey, Python, we're gonna use Python

51:36for processing images from Hubble.

51:38And so Perry Greenfield was a good friend

51:40and running that program.

51:42And he had called me before I left BYU and said,

51:45you know, we wanna do this,

51:47but numeric actually has some challenges

51:49in terms of, you know, it's not a,

51:50the array doesn't have enough types.

51:52We need more operations.

51:54You know, broadcast needs to be a little more settled.

51:56They wanted record arrays.

51:57They wanted, you know, record arrays are like a data frame,

52:00but a little bit different.

52:02But they wanted more structured data.

52:03So he had called me even early on then.

52:06And he said, you know,

52:06would you wanna work on something to make this work?

52:08And I said, yeah, I'm interested, but I'm going here.

52:10And I, you know, we'll see if I have time.

52:12So in the meantime, while I was teaching

52:13and SciPy was emerging, and I had a student,

52:15I was constantly, while I was teaching,

52:16trying to figure a way to fund this stuff.

52:18So I had a graduate student, my only graduate student,

52:21a Chinese fellow, Liu Hongze is his name, great guy.

52:26He wrote a bunch of stuff for iterative linear algebra,

52:29like got into writing some of the iterative

52:31linear algebra tools that are currently there in SciPy.

52:34And they've gotten better since, but this is in 2005.

52:38Kept working on SciPy,

52:39but Perry has started working on a replacement

52:43to NumEric called NumEri.

52:45And in 2004, a package called NDImage,

52:49it was an image processing library

52:50that was written for NumEri.

52:53And it had in it a morphology tool.

52:55I don't know if you know what morphology is.

52:56It's open dilations, you know, there was sort of this,

52:59as a medical imaging student, I knew what it was

53:02because it was used in segmentation a lot.

53:04And in fact, I'd wanted to do something like that

53:06in Python, in SciPy, but just had never gotten around to it.

53:10So when it came out, but it worked only on NumEri,

53:14and SciPy needed NumEric, and so we effectively

53:17had the beginning of this split.

53:20And NumEric and NumEri didn't share data.

53:22They were just two, so you could have a gigabyte

53:24of NumEri data and a gigabyte of NumEric data,

53:26and they wouldn't share it.

53:27And so you had these, then you had these

53:28scientific libraries written on top.

53:31I got really bugged by that.

53:32I got really like, oh man, this is not good.

53:35We're not cooperating now.

53:36We're not, we're sort of redoing each other's work,

53:37and we're just this young community.

53:40So that's what led me, even though I knew it was risky,

53:43because my, you know, I was on a tenure track position.

53:472004, I got reviewed.

53:48They said, hey, things are going okay.

53:49You're doing well.

53:50Paper's coming out.

53:51But you're kind of spending a lot of time

53:52on this open source stuff.

53:53Maybe do a little less of that,

53:54and a little more of the paper writing and grant writing,

53:57which was naive, but it was definitely the time,

53:59you know, the thinking.

54:00- It still goes on.

54:01- Still goes on.

54:03- You're basically creating a thing

54:05which enables science in the 21st century.

54:08- Right.

54:09- Maybe don't emphasize that so much

54:11in your four-year tenure.

54:12- Right.

54:12(laughing)

54:13It illustrates some of the challenges.

54:14- Yes.

54:15- It does, and it's, people mean well,

54:18but we've gotten broken in a bunch of ways.

54:21- Certain things, programming,

54:23understanding the role of software engineering

54:25and programming in society is a little bit lacking.

54:27- Exactly.

54:28Now, I was in an electrical engineering position.

54:30- Right.

54:30That's even worse.

54:32There.

54:33- Yeah, it was very, they were very focused.

54:34And so, you know, good people, and I had a great time.

54:37I loved my time, I loved my teaching,

54:38I loved all the things I did there.

54:40The problem was, this split was happening

54:42in this community that I loved.

54:43- Yeah.

54:44- I saw people, and I went, oh my gosh,

54:45this is gonna be, this is not great.

54:47And so, I happened, you know, fate,

54:50I had a class I had signed up for.

54:52I was trying to build an MRI system,

54:54so I had a kind of a radio, instead of a radio,

54:58a digital radio class, it was a digital MRI class.

55:00- Mm-hmm.

55:01- And I had people sign up, two people signed up,

55:04then they dropped, and so I had nobody in this class.

55:06So, and I didn't have any other courses to teach,

55:08and I thought, oh, I've got some time,

55:10and I'll just write a merger of numeric and numeric.

55:14Like, I'll basically take the numeric code base,

55:16add the features numeric was adding,

55:19and then kind of come up with a single array library

55:21that everybody can use.

55:22So that's where NumPy came from, was my thinking,

55:25hey, I can do this, and who else is going to?

55:27'Cause at that point, I'd been around the community

55:29long enough, and I'd written enough C code,

55:30I knew the structures.

55:33In fact, my first contribution to numeric

55:35had been writing the C API documentation

55:38that went in the first documentation for NumPy,

55:41for numeric, sorry, this is Paul Dubois,

55:43David Asher, Conrad Hinson, and myself.

55:45I got credit 'cause I wrote this chapter,

55:47which is all the C API of numeric, all the C stuff.

55:51So I said, I'm probably the one to do it,

55:53nobody else is gonna do this.

55:54So it was sort of, out of a sense of duty and passion,

55:58knowing that, I don't think my academic,

56:01I don't think the department here is gonna appreciate this,

56:03but it's the right thing to do.

56:05- Can we just link on that moment?

56:08- Yeah. - Because the importance

56:10of the way you thought and the action you took,

56:13I feel is understated and is rare,

56:17and I would love to see so much more of it,

56:19because what happens as the tools become more popular,

56:23there's a split that happens.

56:27And it's a truly heroic and impactful action

56:30to in that early split to step up,

56:34and it's like great leaders throughout history,

56:37like get, what is the brave heart,

56:39like get on a horse and rally the troops,

56:42because I think that can make a big difference.

56:46We have TensorFlow versus PyTorch

56:48in the machine learning community.

56:49- We have the same problem today.

56:50- Yeah, I wonder-- - It's actually bigger.

56:52- I wonder if it's possible in the early days

56:56to rally the troops.

56:58- It is possible, especially in the early days.

57:00The longer it goes, the harder, right?

57:01And the more energy in the factions, the harder.

57:03But in the early days, it is possible,

57:05and it's extremely helpful,

57:07and there's a willingness there,

57:09but the challenge is there's usually

57:11not a willingness to fund it.

57:13There's not a willingness to,

57:14like I was literally walking into a field,

57:17saying I'm gonna do this, and here I am,

57:20I have five kids at home now.

57:22(laughing)

57:23- Pressure builds.

57:24- Sometimes my wife hears these stories,

57:26and she's like, you did what?

57:28(laughing)

57:29I thought you were actually on a path

57:31to make sure we had resources and money.

57:33- Oh, wow.

57:34- But again, there's an aspect,

57:36I'm a very hopeful person.

57:37I'm an optimistic person by nature.

57:39I love people.

57:41I learned that about myself later on.

57:43Part of my, my religious beliefs actually lead to that,

57:48and it's why I hold them dear,

57:49because it's actually how I feel about,

57:51it's what leads me to these attitudes,

57:53sort of this hopefulness and this sense of,

57:55yeah, it may not work out for me financially,

57:58or maybe, but that's not the ultimate gain.

58:00Like, that's a thing, but it's not,

58:02you know, that's not the scorecard for me.

58:05And so I just wanted to be helpful,

§09Transcript · 58:07–1:05:15

58:07and I knew, and partly because these Sci-Py conferences,

58:09'cause the mailing list conversations,

58:10I knew there was a lot of need for this, right?

58:13And so I had this, it wasn't like I was alone

58:15in terms of no feedback.

58:16I had these people who knew, but it was crazy.

58:19Like, people who, at the time, said,

58:20yeah, we didn't think you'd be able to do it.

58:22We thought it was crazy.

58:23- And also, instructive, like practically speaking,

58:26that you had a cool feature

58:28that you were chasing, the morphology, like the--

58:30- Yes.

58:31- Like, it's not just like-- - There's an end result.

58:33- It's not some visionary thing,

58:35I'm going to unite the community.

58:36You were like-- - Correct.

58:38- You were actually practically,

58:39this is what one person actually could do,

58:42and actually build.

58:42- 'Cause that is important,

58:44'cause you can get over your skis.

58:46- Yeah.

58:47- You can definitely get over your skis.

58:49And I had, in fact, this almost got me over my skis, right?

58:52I would say, well, in retrospect, I hate looking back.

58:56I can tell you all the flaws with NumPy, right?

58:58When I go into it, there's lots of stuff

59:00that I'm like, oh man, that's embarrassing.

59:01That was wrong.

59:02I wish I had somebody to slap me the wet fish there.

59:04Like, I needed, like, what I'd wished I'd had

59:07was somebody with more experience,

59:09and certainly library writing and array library.

59:11Like, I wish I had me.

59:12I could go back in time and go, do this, do that.

59:14Here's a Morton Bean.

59:15'Cause there's things we did that are still there

59:18that are problematic, that created challenges for later.

59:20And I didn't know it at the time.

59:22Didn't understand how important that was.

59:24And in many cases, didn't know what to do.

59:26Like, there was pieces of the design of NumPy,

59:29I didn't know what to do until five years ago.

59:31Now I know what they should have been,

59:32but I didn't know at the time, and I couldn't get the help.

59:35Anyway, so I wrote it.

59:36It took about, it took four months to write the first version

59:39and about 14 months to make it usable.

59:42But it was that first four months of intense writing,

59:47coding, getting something out the door that worked.

59:50That was, it was definitely challenging.

59:52And then the big thing I did was create a new type object

59:54called Dtype.

59:56That was probably the contribution.

59:58And then the fact that I added broad,

60:01not just broadcasting, but advanced indexing.

60:03So that you could do masked indexing and indirect indexing

60:08instead of just slicing.

60:09- So for people who don't know, and maybe you can elaborate.

60:12So NumPy, I guess the vision in the narrowest sense

60:17is to have this object that represents

60:21n-dimensional arrays.

60:23And like at any level of abstraction you want,

60:26but basically it could be a black box

60:28that you can investigate in ways

60:30that you would naturally want to investigate such objects.

60:33- Yes, exactly.

60:34So you could do math on it easily.

60:35- Math on it easily, yeah.

60:37- So it had an associated library of math operations.

60:39And effectively SciPy became an even larger

60:43set of math operations.

60:44So the key for me was, I was gonna write NumPy

60:48and then move SciPy to depend on NumPy.

60:50In fact, early on, one of the initial proposals

60:52was that we would just write SciPy

60:54and it would have the numeric object inside of it.

60:56And it'd be SciPy.array or something.

60:59That turned out to be problematic

61:01because numeric already had a little mini library

61:03of linear algebra and some functions.

61:06And it had enough momentum, enough users

61:08that nobody wanted to, they wanted backward compatibility.

61:12One of the big challenges of NumPy

61:13was that it had to be backward compatible

61:15with both numeric and numerary

61:16in order to allow both of those communities

61:18to come together.

61:19There was a ton of work in creating

61:21that backward compatibility.

61:22That also created echoes in today's object.

61:25Like some of the complexity in today's object

61:27is actually from that goal of backward compatibility

61:30to these other communities.

61:31Which, if you didn't have that,

61:33you'd do something different.

61:34Which is instructive because a lot of things are there.

61:37You're thinking, what is that there for?

61:38It's like, well, it's a remnant.

61:41It's an artifact of its historical existence.

61:45- By the way, I love the empathy

61:46and the lack of ego behind that.

61:48'Cause I feel, you see that in the split

61:51in the JavaScript frameworks, for example,

61:53the arbitrary branching.

61:54- Right.

61:55- Is, I think in order to unite people,

61:59you have to kind of put your ego aside

62:00and truly listen to others.

62:01Like, what do you love about numerate?

62:04What do you love about numeric?

62:06Like actually get a sense,

62:07we're talking about languages earlier,

62:08sort of empathize to the culture of the people

62:11that love something about this particular API.

62:14Some, the naming style or the,

62:18the actual usage patterns and truly understand them.

62:22And so that you can create that same draw

62:26in the united thing. - I completely agree.

62:29And you have to also have enough passion that you'll do it.

62:32It can't be just like a perfunctory,

62:34oh yeah, so I'll listen to you.

62:35I'll listen to you and then,

62:36I'm not really that excited about it.

62:38So it really is an aspect, it's a philosophical,

62:41like there's a philia, there's a love,

62:42a esteeming of others.

62:44It's actually at the heart of what,

62:47it's sort of a life philosophy for me, right?

62:49That I'm constantly pursuing and that helped,

62:51absolutely helped.

62:52- Makes me wonder in a philosophical,

62:54like looking at human civilization as one object,

62:57it makes me wonder how we can copy and paste

62:59Travis's in this book.

63:01- Well, in some aspects, maybe.

63:03- Some aspects, right, right, exactly.

63:05Well, I, it's like-- - It's a good question.

63:07How do we teach this?

63:08How do we encourage it?

63:09How do we lift it?

63:10- Because so much of the software world,

63:12it's giant communities, right?

63:15But it seems like so much is moved

63:16by like little individuals.

63:18You talk about like Linus Torvald.

63:21It's like, can you, could you have not,

63:23could you have had Linux without him?

63:26Could you, it's like-- - Yeah, Guido and Python.

63:28- Guido and Python. - Guido and Python.

63:29I mean, the Sci-Fi community particularly,

63:30it's like I said, we wanted to build this big thing,

63:32but ultimately we didn't.

63:33What happened is we had Mavericks and champions

63:36like John Hunter, who created Matplotlib.

63:37We had Fernando Perez, who created IPython.

63:40And so we sort of inspired each other,

63:42but in the credit, there's sort of a culture

63:43of this selfless, give the stewardship mentality

63:47as opposed to ownership mentality,

63:49but stewardship and community-focused,

63:54but intentional work.

63:56Like not waiting for everybody else to do the work,

63:58but you're doing it for the benefit of others

64:00and not worried about what you're gonna get.

64:02You're not worried about the credit,

64:04you're not worried about what you're gonna get,

64:05you're worried about, I later realized

64:07that I have to worry a little about credit,

64:09not because I want the credit,

64:10because I want people to understand

64:11what led to the results.

64:12It's not about me, it's I wanna understand

64:15this is what led to the result.

64:17And this is what had no impact on the result.

64:21Let's promote, just like you said,

64:23I wanna promote the attributes

64:24that help make us better off.

64:26How do we make more of Wes McKinney?

64:28Like Wes McKinney was critical to the success of Python

64:31because of his creation of pandas,

64:33which is the roots of that were all the way back

64:36in numeric and num array and numpy,

64:40where numpy created an array of records.

64:43Wes started to use that almost like a data frame,

64:46except it's an array of records.

64:47And data frame, the challenge is,

64:49okay, if you wanna augment it at another column,

64:52you have to insert, you have to do all this memory movement

64:54to insert a column.

64:55Whereas data frames became,

64:57oh, I'm gonna have a loose collection of arrays.

65:00So it's a record of arrays that is a part of a data frame.

65:03And we thought about that back in the memory days,

65:05but Wes ended up doing the work to build it.

65:08And then also the operations that were relevant

65:11for data processing.

65:12What I noticed is just that each of these little things

65:15creates just another tick, another up.

§10Transcript · 1:05:17–1:13:16

65:17So numpy ultimately took a little while,

65:19about six months in, people started joining me.

65:22Francesc Alted, Robert Kern, Charles Harris.

65:27And these people are many of the unsung heroes, I would say.

65:30People who are, they sometimes don't get the credit

65:32they deserve because they were critical both to support,

65:36like, it's hard and you need some support,

65:39people need support.

65:40And I needed just encouragement.

65:41And they were helping, encouraged by contributing.

65:43And once, the big thing for me was when John Hunter,

65:47he had previously done kind of a simple thing

65:50called numerics to kind of, between numeric and number A,

65:53he had a little high level tool

65:55that would just select each one for Matplotlib.

65:57In 2006, he finally said, we're gonna just make numpy

66:01the dependency of Matplotlib.

66:03As soon as he did that,

66:04and I remember specifically when he did that,

66:06I said, okay, we've done it.

66:08That was when I knew we had succeeded, success.

66:11Before then, it was still, I didn't know, sure.

66:13But that kind of started a roller coaster.

66:15And then 2006 to 2009,

66:17and then I've been floored by what it's done.

66:21I knew it would help.

66:22I had no idea how much it would help.

66:24- And it has to do with, again, the language thing.

66:28It just, people started to think in terms of numpy.

66:31- Yes.

66:33- And that opened up a whole new way of thinking.

66:36And part of the story that you kind of mentioned,

66:39but maybe you can elaborate,

66:42is it seems like at some point in this story,

66:46Python took over science and data science.

66:50- Yes.

66:51- And bigger than that,

66:54the scientific community started to think like programmers

67:00or started to utilize the tools of computers to do,

67:04like at a scale that wasn't done with Fortran.

67:06Like at this gigantic scale,

67:09they started to opening their heart.

67:10And then Python was the thing.

67:12I mean, there's a few other competitors, I guess,

67:14but Python, I think, really, really took over.

67:16- I agree.

67:17There's a lot of stories here

67:18that are kind of during this journey,

67:19because this is sort of the start of this journey in 2005, '06.

67:23So my tenure committee, I applied for tenure in 2006, 2007.

67:28It came back, I split the department.

67:29I was very polarizing.

67:31I had some huge fans,

67:32and then some people said, "No way."

67:34Right, so I was a polarizing figure in the department.

67:36It went all the way up to the university president.

67:39Ultimately, my department chair had the sway.

67:42And they didn't say no,

67:43they said, "Come back in two years and do it again."

67:46And I went, "Eh."

67:48At that point, I was like,

67:49I mean, I had this interest in entrepreneurship,

67:52this interest in not the academic circles,

67:56not the, like, how do we make industry work?

67:59So I do have to give credit to that exploration of economics

68:03because that led me, oh, I had a lot of opinions.

68:06I was actually very libertarian at the time.

68:09And I still have some libertarian trends,

68:11but I'm more of a,

68:13I'm more of a collectivist libertarian.

68:15- So you value broadly, philosophically, freedom.

68:18- I value broadly, philosophically, freedom,

68:20but I also understand the power of communities,

68:23like the power of collective behavior.

68:26And so what's that balance, right, that makes sense?

68:29So by the time I was just,

68:31I gotta go out and explore this entrepreneur world.

68:33So I left academia, I said, "No, thanks."

68:35Called my friend, Eric, here, who had,

68:38his company was going, I said,

68:39"Hey, could I join you and start this trend?"

68:43And he, at that time, they were using Sci-Fi a lot,

68:45they were trying to get clients,

68:47and so I came down to Texas.

68:48And in Texas is where I sort of,

68:51it's my entrepreneur world, right?

68:53I left academia and went to entrepreneur world in 2007.

68:57So I moved here in 2007, kind of took a leap,

68:59knew nothing really about business,

69:01knew nothing about a lot of stuff there.

69:03There's, for a long time,

69:06I've kept some connections to a lot of academics,

69:08because I still value it,

69:10I still love the scientific tradition,

69:12I still value the essence and the soul and the heart

69:15of what is possible.

69:17Don't like a lot of the administration

69:21and the kind of, we can go into detail about why and where

69:24and how this happens, what are some of the challenges.

69:26- I mean, I don't know, but I'm with you.

69:28So I'm still affiliated with MIT,

69:31I still love MIT because there's magic there.

69:35There's people I talk to, like researchers, faculty,

69:40in those conversations and the whiteboard

69:42and just the conversation, that's magic there.

69:46All the other stuff, the administration,

69:48all that kind of stuff seems to,

69:51you don't wanna say too harshly criticize

69:54sort of bureaucracies, but there's a lag

69:57that seems to get in the way of the magic.

70:00And I'm still have a lot of hope that that can change

70:05because I don't often see that particular type of magic

70:10elsewhere in the industry.

70:12So we need that and we need that flame going.

70:15- I agree.

70:16- And it's the same thing as exactly as you said,

70:19it has the same kind of elements

70:20like the open source community does.

70:23But then if you, like the reason I stepped away,

70:27the reason I'm here just like you did in Austin

70:29is like if I wanna build one robot, I'll stay at MIT.

70:33But if I wanna build millions and make money

70:37enough to where I can explore the magic of that,

70:39then you can't.

70:40And I think that dance is--

70:44- That translational dance has been lost a bit.

70:46- Yeah.

70:47- Right, and there's a lot of reasons for that.

70:48I'm certainly not an expert on this stuff.

70:50I can opine like anybody else,

70:51but I realized that I wanted to explore entrepreneurship

70:55which I, and really figure out,

70:57and it's been a driving passion for 20 years, 25 years.

71:01How do we connect capital markets and company,

71:06'cause again, I fell in love with the notion,

71:07oh, profit seeking on its own is not a bad thing.

71:11It's actually a coordination mechanism

71:13for allocating resources that, in an emergent way, right,

71:17that respects everybody's opinions, right?

71:20So this is actually powerful.

71:22So I say all the time when I make a company

71:25and we do something that makes a profit,

71:27what we're saying is, hey, we're collecting

71:28of the world's resources and voluntarily people

71:30are asking us to do something they like.

71:33And that's a huge deal.

71:34And so I really like that energy.

71:36So that's what I came to do and to learn

71:37and to try to figure out, and that's what I've been

71:39kind of stumbling through for the past 14 years.

71:41- And that's 2007.

71:42- 2007, yeah.

71:43- And so you were still--

71:44- So NumPy was just emerging, right?

71:47One of the things I had done, it's worth mentioning

71:49because it emphasizes the exploratory nature

71:52of my thinking at the time.

71:53I said, well, I don't know how to fund this thing.

71:55I've got a graduate student I'm paying for

71:56and I've got no funding for him.

71:57And I had done some fundraising from the public

72:00to try to get public fundraisers from my lab.

72:02I didn't really want to go out and just do

72:04the fundraising circuit the way it's traditionally done.

72:06So I wrote a book and I said, I'm gonna write a book

72:09and I'm gonna charge for it.

72:11It was called Guide to NumPy.

72:12And so ultimately NumPy became

72:14documentation-driven development

72:15because I basically wrote the book

72:17and made sure the stuff worked so the book would work.

72:19So it really helped actually make NumPy become a thing.

72:23So writing that book, and it was not a,

72:26I mean, it's not a page turner.

72:28Guide to NumPy is not a book you pick up and go,

72:29oh, this is great, over the fire.

72:31But it's where you could find the details.

72:33Like how'd all this work?

72:34- And a lot of people loved that book.

72:36- And so a lot of people ended up,

72:38so I said, look, I need to, so I'm gonna charge for it.

72:41And I got some flack for that.

72:42Not that much, just probably five angry messages,

72:45people yelling at me saying I was a bad guy

72:49for charging for this book.

72:51- Was one of them Richard Stallman?

72:53- No. - Just kidding.

72:54- No, I haven't really had any interaction

72:55with him personally, like I said.

72:57But there were a few, but actually surprisingly not.

73:01There was actually a lot of people like,

73:02no, it's fine, you can charge for a book.

73:04That's no big deal.

73:05We know that's a way you can try

73:06to make money around open source.

73:08So what I did, I did it in an interesting way.

73:10I said, well, kind of my ideas around IP law and stuff.

73:14I love the idea you can share something,

73:15you can spread it.

73:16Like once it's, the fact that you have a thing

§11Transcript · 1:13:18–1:20:40

73:18and copying is free, but the creation is not free.

73:21So how do you fund the creation and allow the copying?

73:25Right, and in software it's a little more complicated

73:26than that because creation is actually a continuous thing.

73:29You know, it's not like you build a widget and it's done.

73:31It's sort of a process of emerging

73:32and continuing to create.

73:34But I wrote the book and had this

73:35market-determined price thing.

73:37I said, look, I need, I think I said 250,000.

73:40If I make 250,000 from this book, I'll make it free.

73:44So as soon as I get that much money,

73:45or I said five years, right?

73:48So there's a time limit.

73:49- That's really cool. - Like forever.

73:50- I didn't know this story.

73:50- Yeah, so I released it on this.

73:53And it's actually interesting 'cause one of the people

73:55who also thought that was interesting ended up being

73:57Chris White, who was the director of DARPA project

74:01that we got funding through at Anaconda.

74:02And the reason he even called us back is 'cause he remembered

74:05my name from this book and he thought that was interesting.

74:08And so even though we hadn't gone to the demo days,

74:10we applied and the people said, yeah, nobody ever gets this

74:13without coming to the demo day first.

74:15This is the first time I've seen it.

74:16But it's because I knew Chris had done this,

74:18had this interaction.

74:19So it did have impact.

74:21I was actually really, really pleased by the result.

74:23I mean, I ended up in three years, I made 90,000.

74:27So sold 30,000 copies by myself.

74:29I just put it up on, used PayPal and sold it.

74:32And those are my first taste of kind of, okay,

74:36this can work to some degree.

74:37And all over the world, right?

74:40From Germany to Japan, it was actually, it did work.

74:44And so I appreciated the fact that PayPal existed

74:47and I had a way to make, to get the money.

74:49The distribution was simple.

74:51This is pre-Amazon book stuff.

74:53So it was just publishing a website.

74:55It was the popularity of Sci-Fi emerging

74:57and getting company usage.

74:58I ended up not letting it go to five years

75:00and not trying to make the full amount because,

75:03you know, a year and a half later, I was at Enthought.

75:05I had left academia as an Enthought

75:06and I kind of had a full-time job.

75:07And then actually what happened is the documentation people,

75:09there's a group that said, hey,

75:10we want to do documentation for Sci-Fi as a collective.

75:14And they were essentially needing the stuff in the book.

75:18And so they kind of asked,

75:20hey, can we just use the stuff from your book?

75:21And at that point I said, yeah, I'll just open it up.

75:24So that's, but it has served its purpose.

75:27And the money that I made actually funded my grad student.

75:30Like it was actually, you know,

75:32I paid him 25,000 a year out of that money.

75:35- The funny thing is if you do a very similar

75:37kind of experiment now with NumPy or something like it,

75:40you could probably make a lot more.

75:42- It's probably true.

75:43- Because of the tooling and the community building.

75:46- Yeah, I agree.

75:47- Like the, and social media,

75:49there's just a virality to that kind of idea.

75:51- I agree, there'd be things to do.

75:52I've thought about that.

75:53And really I've thought about a couple of books

75:56or a couple of things that could be done there.

75:57And I just haven't, right?

75:58Even, I tried to hire a ghostwriter this year too,

76:01to see if that would help, but it didn't.

76:04But part of my problem is this,

76:06I've been so excited by a number of things

76:08that stemmed from that.

76:09So I came here, worked at Enthought for four years.

76:12Graciously, you know, Eric made me president

76:14and we started to work closely together.

76:16We actually helped him buy out his partner.

76:18It didn't end great.

76:20Like unfortunately Eric and I aren't real,

76:22aren't friends now.

76:24I still respect him.

76:25I have a lot, I wish we were,

76:26but he didn't like the fact that I,

76:29that Peter and I started Anaconda, right?

76:31That was not, I mean,

76:33so there's two sides to that story.

76:36So I'm not gonna go into it, right?

76:37- Sure, but you, as human beings

76:40and you wish you still could be friends.

76:42- I do, I do.

76:43It saddens me.

76:45- I mean, that's a story of great minds

76:49building great companies.

76:51Somehow it's sad that when there's that kind of.

76:55- And I hold him in esteem.

76:57I'm grateful for him.

76:58I think he's, they're doing,

76:59you know, Enthought still exists.

77:00They're doing great work helping scientists.

77:02They still run the SciPy conference.

77:05They're in the, they have an R&D platform

77:06they're selling now that's a tool

77:08that you can go get today, right?

77:10So they've been, Enthought has played a role

77:13in the SciPy, in supporting the community around SciPy.

77:17I would say.

77:18They ended up not being able to,

77:20they ended up building a tool suite

77:22to write GUI applications.

77:24Like that's where they could actually make

77:25that the business could work.

77:26And so the supporting SciPy and NumPy itself

77:29wasn't as possible.

77:30Like they didn't, they tried.

77:31I mean, it was not just because,

77:33it was just 'cause the business aspect.

77:34So, and then I wanted to build a company

77:36that could do, that could get venture funding, right?

77:39Better for worse.

77:39I mean, that's a longer story.

77:41We could talk a lot about that, but.

77:42- And that's where Anaconda came to be.

77:44- That's where Anaconda came to be.

77:45- So let me ask you, it's a little bit for fun

77:48because you built this amazing thing.

77:50And so let's talk about like an old warrior

77:54looking over old battles.

77:56(Neil laughs)

77:58You know, there's a sad letter in 2012

78:01that you wrote to the NumPy mailing list

78:04announcing that you're leaving NumPy.

78:06And some of the things you've listed

78:08is some of the things you regret

78:10or not regret necessarily, but some things to think about.

78:14If you could go back and you could fix stuff about NumPy

78:17or both sort of in a personal level,

78:20but also like looking forward,

78:21what kind of things would you like to see changed?

78:24- Good question.

78:25So I think there's technical questions

78:26and social questions right there.

78:28First of all, you know, I wrote NumPy as a service

78:33and I spent a lot of time doing it

78:35and then other people came help make it happen.

78:36NumPy succeeded because the work of a lot of people, right?

78:39So it's important to understand that.

78:42I'm grateful for the opportunity, the role I could play

78:45and grateful that things I did had an impact,

78:47but they only had the impact they had

78:49because the other people that came to the story.

78:52And so they were essential.

78:53But the way data types were handled,

78:55the way data types, we had array scalers, for example,

78:59that are really just a substitute for a type concept.

79:03Right, so we had array scalers or actual Python objects

79:06so that there's for every, for a 32 bit float

79:09or a 16 bit float or a 16 bit integer,

79:13Python doesn't have a natural, it's just one integer,

79:15it's one float.

79:17Well, what about these lower precision types,

79:19these larger precision types?

79:21So we had them in NumPy

79:23so that you could have a collection of them,

79:25but then have an object in Python that was one of them.

79:28And there's questions about, like in retrospect,

79:31I wouldn't have created those

79:32if I'd improved the type system.

79:34And like made the type system actually a Python type system

79:38as opposed to currently, it's a Python one level type system.

79:41I don't know if you know the difference

79:42between Python one, Python two, it's kind of technical,

79:44kind of depth, but Python two,

79:45one of its big things that Guido did,

79:47it was really brilliant, it was the actually,

79:50Python one, all classes, new objects were one.

79:55So he was a user, wrote a class,

79:56it was an instance of a single Python type

79:59called the class type.

80:02In Python two, he used a meta typing hook

80:06to actually go, oh, we can extend this

80:07and have users write classes that are new types.

80:10So he was able to have your user classes be actual types

80:13and the Python type system got a lot more rich.

80:16I barely understood that at the time that NumPy was written

80:19and so I essentially, in NumPy,

80:21created a type system that was Python one era.

80:24It was every D type is an instance of the same type

80:29as opposed to having new D types be really just Python types

80:33with additional metadata.

80:34- What's the cost of that?

80:35Is it efficiency, is it usability?

80:37- It's usability primarily.

80:38The cost isn't really efficiency,

80:40it's the fact that it's clumsy to create new types.

§12Transcript · 1:20:45–1:28:14

80:45It's hard, and then one of the challenges,

80:47you wanna create new types, you wanna quaternion type

80:49or you wanna add a new posit type or you wanna,

80:54so it's hard.

80:55Now, if we had done that well,

80:59when Numba came on the scene,

81:00we could actually compile Python code,

81:02it would integrate with that type system much cleaner

81:05and now all of a sudden you could

81:06do gradual typing more easily.

81:08You could actually have Python when you add Numba

81:10plus better typing, could actually be a,

81:13you'd smooth out a lot of rough edges.

81:16- But there's already, there's like,

81:18but are you talking about from the perspective

81:20of developers within NumPy or users of NumPy?

81:23- Developers of new, not really users of NumPy so much,

81:27it's the development of NumPy.

81:28- So you're thinking about like how to design NumPy

81:32so that its contributors--

81:33- Yeah, the contributors, it's easier.

81:35- It's easier.

81:36- It's less work to make it better and to keep it maintained

81:39and where that's impacted things, for example, is the GPU.

81:43Like all of a sudden GPUs start getting added

81:45and we don't have them in NumPy.

81:48Like NumPy should just work on GPUs.

81:50The fact that we have to download a whole other object

81:52called Coupie to have arrays on GPUs

81:54is just an artifact of history.

81:57Like there's no fundamental reason for it.

81:59- Well, that's really interesting

82:00if we could sort of go on that tangent briefly

82:02is you have PyTorch and other library like TensorFlow

82:07that basically tried to mimic NumPy.

82:11Like you've created a sort of platonic form

82:15of what a multi-dimensional--

82:16- Yeah, exactly.

82:17Well, and the problem was they didn't realize that.

82:19- Yeah.

82:20- The platonic form has a lot of edges.

82:21They're like, "Well, we should cut those out

82:23before we present it."

82:24- So I wonder if you can comment,

82:26is there like a difference between their implementations?

82:29Do you wish that they were all using NumPy

82:31or like in this abstraction of GPU?

82:34And sorry to interrupt that there's GPUs, ASICs,

82:38there might be other neuromorphic computing,

82:40there might be other kind of,

82:41or the aliens will come with a new kind of computer,

82:43like an abstraction that NumPy should just operate nicely

82:47over the things that are more and more

82:50and smarter and smarter with this multi-dimensional arrays.

82:54- Yeah, yeah.

82:55There's several comments there.

82:56We are working on something now called data-apis.org,

83:00data-api.org, you can go there today.

83:02And it's our answer, it's my answer.

83:05It's not just me, it's me and Rolf and Athen and Aaron

83:09and a lot of companies are helping us at Quantsight Labs.

83:12It's not unifying all the arrays,

83:14it's creating an API that is unified.

83:17So we do care about this

83:19and we're trying to work through it.

83:21I actually had the chance to go and meet

83:22with the TensorFlow team and the PyTorch team

83:25and talk to them after exiting Anaconda.

83:29Just talking to them,

83:30'cause the first year after leaving Anaconda in 2018,

83:34I became deeply aware of this and realized that,

83:36oh, this split in the array community that exists today

83:39makes what I was concerned about in 2005 pretty parochial.

83:43It's a lot worse, right?

83:45Now there's a lot more people,

83:47so perhaps the industry can sustain more stacks, right?

83:51There's a lot of money,

83:52but it makes it a lot less efficient.

83:54But I've also learned to appreciate,

83:56it's okay to have some competition,

83:58it's okay to have different implementations,

84:00but it's better if you can at least refactor some parts.

84:03I mean, you're gonna be more efficient

84:05if you can refactor parts.

84:07- It's nice to have competition over things,

84:09over what is nice to have competition.

84:11- They're innovative.

84:12- Yeah, innovative and then maybe on the infrastructure,

84:16whatever, however you define infrastructure,

84:18that maybe it's nice to have come together.

84:21- Exactly, I agree.

84:22And I think, but it was interesting to hear the stories.

84:24I mean, TensorFlow came out of a C++ library,

84:29Jeff Dean wrote, I think,

84:30that was basically how they were doing inference, right?

84:33And then they realized,

84:34oh, we could do this TensorFlow thing.

84:36That C++ library, then what was interesting to me

84:38was the fact that both Google and Facebook did not,

84:42it's not like they supported Python or NumPy initially,

84:45they just realized they had to.

84:47They came to this world and then all these were like,

84:48hey, where's the NumPy interface?

84:50Oh, and then they kind of came late to it

84:52and then they had these bolt-ons.

84:54TensorFlow's bolt-on, I don't mean to offend,

84:57but it was so bad.

84:58It's the first time that I, I'm usually,

85:01I mean, one of the challenges I have

85:04is I don't criticize enough,

85:05'cause in the sense that I don't give people input enough.

85:09- I think it's universally agreed upon

85:11that the bolt-ons on TensorFlow.

85:13- When I went to, it was a talk given at Mallorca in Spain

85:17and a great guy came and gave a talk.

85:19I said, you should never show that API again

85:21at a PyData conference.

85:23Like that was, that's terrible.

85:24Like you're taking this beautiful system we've created

85:27and like you're corrupting all these poor Python people,

85:29forcing them to write code like that

85:30or thinking they should.

85:32Fortunately, they adopted Keras as their,

85:35and Keras is better.

85:36And so Keras TensorFlow is fine, is reasonable.

85:40But they bolted it on.

85:42Facebook did too.

85:43Like Facebook had their own C++ library for doing inference

85:48and they also had the same reaction, they had to do this.

85:51One big difference is Facebook,

85:52maybe because the way it's situated in part of FAIR,

85:55part of their research library,

85:56TensorFlow is definitely used and they have to make,

85:59they couldn't just open it up

86:00and let the community change what that is

86:03'cause I guess they were worried

86:04about disrupting their operations.

86:06Facebook's been much more open to having community input

86:10on the structure itself.

86:12Whereas Google and TensorFlow,

86:14they're really eager to have community users.

86:15People use it and build the infrastructure,

86:17but it's much more walled.

86:18Like it's harder to become a contributor to TensorFlow.

86:21- And it's also, this is a very difficult question to answer

86:24and I don't mean to be throwing shade at anybody,

86:27but you have to wonder, it's the Microsoft question,

86:30of when you have a tool like PyTorch or TensorFlow,

86:33how much are you tending to the hackers

86:36and how much are you tending to the big corporate clients?

86:39- Correct.

86:40- And so like the ones that,

86:42do you tend to the millions of people

86:44that are giving you almost no money

86:46or do you tend to the few that are giving you a ton of money?

86:50I tend to stand with the people.

86:54- Right.

86:54- 'Cause I feel like if you nurture the hackers,

86:57you will make the right decisions in the longterm

87:00that will make the companies happy.

87:02- I lean that way too.

87:03I totally agree.

87:04- But then you have to find the right dance.

87:05- But it's a balance.

87:07'Cause you can lean to the hackers and run out of money.

87:08- Yeah, exactly.

87:10Exactly.

87:11Which has been some of the challenge I've faced.

87:13- Yes.

87:14- In the sense that,

87:15I would look at some of the experiments like NumPy,

87:18the fact that we have the split is a factor

87:20of I wasn't able to collect more money

87:21towards NumPy development.

87:22- Yeah.

87:23- Right, I mean, I didn't succeed in the early days

87:26of getting enough financial contribution to NumPy

87:29so they make me work on it.

87:31I couldn't work on it full time.

87:32I had to just catch an hour here, an hour there.

87:35And I basically not like that.

87:37Like I've wanted to be able to do something about that

87:40for a long time and trying to figure out

87:41well there's lots of ways.

87:42I mean, possibly one could say,

87:44we had an offer from Microsoft early days of Anaconda.

87:482014 they offered to come buy us, right?

87:50The problem was the right people at Microsoft

87:52didn't offer to buy us.

87:53And they were still,

87:54it was really, we were like a second,

87:57they had really bought, they just bought R,

87:59the R company called, it was not RStudio

88:02but it was another R company that was emergent.

88:05And it was kind of a,

88:07well, we should also get a Python play.

88:09But they were really doubling down on R, right?

88:11And so it was like--

88:12- It was where you would go to die.

88:14So it's not, it wasn't, it was before Satya was there.

§13Transcript · 1:28:17–1:35:24

88:17- Satya had just started.

88:18- Just started.

88:19- Right, and the offer was coming from someone

88:21two levels down from him.

88:23- Gotcha.

88:23- Right, and if it had come from Scott Guthrie,

88:26so I got a chance to meet Scott Guthrie,

88:28great guy, I like him.

88:29If it had offered to come from him,

88:31probably would be at Microsoft right now.

88:33- That'd be fascinating.

88:34That would be really nice actually,

88:36especially given what Microsoft has since done

88:38for the open source community and all those things.

88:40- Yes, I think they're doing well.

88:41I really like some of the stuff they've been doing.

88:43They're still working, and they've hired Guido now,

88:46and they've hired a lot of Python developers.

88:48- Wait, Guido's not at Microsoft?

88:49- Yeah, he works at Microsoft.

88:52Which means he retired, then he came out of retirement,

88:54and he's working on--

88:55- I was just talking to him

88:56and he didn't mention this part.

88:57- Well.

88:58- I should investigate this further.

89:01'Cause I know he loved Dropbox,

89:02but I wasn't sure what he was doing,

89:03who he was up to.

89:05- Well, he was kind of saying he would retire,

89:06and it's literally been five years

89:09since I last sat down and really talked to Guido.

89:12Guido's a technology expert.

89:16He's a, so I came, I was excited

89:18because I'd finally figured out the type system for NumPy.

89:20I wanted to kind of talk about that with him,

89:22and I kind of overwhelmed him.

89:24- Could you stay in that, just for a brief moment,

89:26'cause you're a fascinating person

89:28in the history of programming.

89:29He is a fascinating person.

89:31What have you learned from Guido about programming,

89:36about life?

89:37- Yeah, yeah, a lot, actually.

89:39I've been a fan of Guido's.

89:41We have a chance to talk.

89:42Some, I wouldn't say, we talk all the time,

89:44not really at all.

89:45He may, but we talk enough to, I respect his,

89:48like when I first started NumPy,

89:49one of the first things I did was I had,

89:51I asked Guido for a meeting with him

89:53and Paul Dubois in San Mateo.

89:55And I went and met him for lunch.

89:56And basically to say, maybe we can actually,

89:59part of the strategy for NumPy

90:00was to get it into Python 3,

90:02and maybe be part of Python.

90:04And so we talked about that.

90:04- That's a cool conversation.

90:06- And about that approach, right?

90:06- I would have loved to be a fan in the wild.

90:09- That was good.

90:10And over the years for Guido, I learned,

90:12so he was open.

90:14Like he was willing to listen to people's ideas, right?

90:18And over the years.

90:19Now generally, I'm not saying universally that's been true,

90:22but generally that's been true.

90:24So he's willing to listen.

90:25He's willing to defer.

90:27Like on the scientific side, he would just kind of defer.

90:29He didn't really always understand what we were doing.

90:31And he'd defer.

90:32One place where he didn't enough

90:35was we missed a matrix multiply operator.

90:37Like that finally got added to Python,

90:39but about 10 years later than it should have.

90:42But the reason was because nobody,

90:44it takes a lot of effort.

90:46And I learned this while I was writing NumPy.

90:48I also wrote tools to, I became a Python dev,

90:50and I added some pieces of Python.

90:52Like the memory view object.

90:53I wanted the structure of NumPy into Python.

90:55So we didn't get NumPy into Python,

90:57but we got the basic structure of it into Python.

90:59So you could build on it.

91:01Nobody did for a while,

91:01but eventually database authors started to.

91:04And it's a lot better, they did.

91:06And also Antoine Petreau and Stephan Krah

91:09actually fixed the memory view object.

91:10'Cause I wrote the underlying infrastructure in C,

91:13but the Python exposure was terrible

91:15until they came in and fixed it.

91:16Partly because I was writing NumPy,

91:18and NumPy was the Python exposure.

91:20I didn't really care about

91:21if you didn't have NumPy installed.

91:22Anyway, Guido opened up ideas,

91:25technologically brilliant.

91:27Like really, I really got a lot of respect for him

91:29when I saw what he did with this type class merger thing.

91:33It was actually tricky.

91:34And then willing to share.

91:37Willing to share his ideas.

91:38So the other thing, early on in 1998,

91:40I said I wrote my first extension module.

91:42The reason I could is 'cause he'd written this blog post

91:44on how to do reference counting.

91:46And without it, I would have been lost.

91:50But he was willing to at least try to write this post.

91:53And so he's been motivated early on with Python.

91:56It was like computer science for everybody.

91:58He kind of had this early on desire to,

91:59oh, maybe we should be pushing programming to more people.

92:02So he had this populist notion, I guess, or populist sense.

92:06To learn that there's a certain skill,

92:08and I've seen it in other people too,

92:10of engaging with contributors sufficiently to,

92:14'cause when somebody engages with you

92:15and wants to contribute to you,

92:16if you ignore them, they go away.

92:18So building that early contributor base

92:19requires real engagement with other people.

92:23And he would do that.

92:24- Can you also comment on this tragic stepping down

92:29from his position as the benevolent dictator for life

92:32over the wars?

92:34- The Walrus operator?

92:36- The Walrus operator was the last battle.

92:39I don't know if that's the cause of it,

92:40but there's this, for people who don't know,

92:43you can look up, there's the Walrus operator,

92:45which looks like a colon and equal sign.

92:49- Yeah, colon, equal sign.

92:50And it actually does maybe the thing

92:54that an equal sign should be doing.

92:57- Yeah, maybe, right, exactly.

93:00- But it's just historically,

93:02equal sign means something else.

93:03It just means assignment.

93:05So he stepped down over this.

93:07What do you think about the pressure of leadership?

93:10- It's something that, you mentioned the letter I wrote

93:12in NumPy at the time.

93:13That was a hard time, actually.

93:15I mean, there's been really hard times.

93:17It was hard.

93:19You get criticized, right, and you get pushed,

93:21and you get, not everybody loves what you do.

93:23Like, any time you do anything that has impact at all,

93:26you're not universally loved, right?

93:28You get some real critics.

93:29And that's an important energy

93:32because it's impossible if you did everything right.

93:35You need people to be pushing.

93:37But sometimes people can get mean, right?

93:39People can, I prefer to get people to benefit the doubt.

93:43I don't immediately assume they have bad intentions.

93:45And maybe for other, you know, maybe that doesn't happen

93:48for everybody, for whatever reason, their past,

93:50their experience with people, they sometimes have bad,

93:53so they immediately attribute to you bad intentions.

93:54You're like, where did this come from?

93:56I mean, I'm definitely open to criticism,

93:57but I think you're misinterpreting the whole point.

94:00'Cause I would get that.

94:01You know, certainly when I started Anaconda,

94:03you know, I've been, sometimes I say to people,

94:07I know I'm, I care enough about entrepreneurship

94:09to make some open source people uncomfortable.

94:12And I care enough about open source

94:13to make investors uncomfortable.

94:15So I sort of, you know, create,

94:17you create kind of doubters on both sides.

94:19- So when you have, and this is just a plea

94:23to the listener and the public.

94:26I've noticed this too, that there's a tendency,

94:29and social media makes this worse,

94:31when you don't have perfect information about the situation,

94:35you tend to fill the gaps with the worst possible,

94:39or at least the bad story that fills those gaps.

94:43And I think it's good to live life,

94:47maybe not fully naively, but filling in the gaps

94:49with the good, with the best, with the positive,

94:54with the hopeful explanation of why you see this.

94:57So if you see somebody like you trying to make money

95:00on a book about NumPy, there's a million stories around that

95:04that are positive, and those are good to think about,

95:07to project positive intent on other people.

95:10Because for many reasons,

95:12usually because people are good

95:13and they do have good intent.

95:15And also when you project that positive intent,

95:17people will step up to that too.

95:19- Yes, it's a great point.

95:21- It has this kind of viral nature to it.

95:24And of course, what Twitter early on figured on,

§14Transcript · 1:35:27–1:43:01

95:27Facebook, is that they can make a lot of money

95:30in engagement from the negative.

95:32- Yes.

95:33- And so like, there's this, we're fighting this mechanism.

95:35- I agree. - Which is challenging.

95:36- It's like easier.

95:37- It's just easier to be. - To be negative.

95:39- And then for some reason, something in our minds

95:41really enjoys sharing that and getting all excited

95:45about the negativity.

95:46- We do, yeah.

95:47- But-- - Some protective mechanism

95:48perhaps that we're gonna get eaten if we don't.

95:50- Exactly, for us to be effective as a group of people

95:53in a software engineering project,

95:54you have to project positive intent, I think.

95:56- I totally agree, totally agree.

95:58And I think that's very,

95:59and so that happens in this space.

96:01But Python has done a reasonable job in the past,

96:03but here is a situation where I think

96:05it started to get this pressure where it didn't.

96:07I really didn't know enough about what happened.

96:10I've talked to several people about it,

96:12and I know most of the steering committee members today,

96:15one person nominated me for that role,

96:17but it's the wrong role for me right now, right?

96:20I have a lot of respect for the Python developer space

96:24and the Python developers.

96:25I also understand the gap between

96:26computer science Python developers

96:28and array programming developers or science developers.

96:31And in fact, Python succeeds in the array space

96:34the more it has people in that boundary.

96:36And there's often very few.

96:38Like I was playing a role in that boundary,

96:39and working like everything to try to keep up

96:42with even what Gita was saying.

96:45Like I'm a C programmer, but not a computer scientist.

96:49Like I was an engineer and physicist and mathematician,

96:52and I didn't always understand what they were talking about

96:56and why they would have opinions the way they did.

96:58So you have to listen and try to understand.

97:00Then you also have to explain your point of view

97:02in a way they can understand.

97:03And that takes a lot of work.

97:04And that communication is always the challenge.

97:07And it's just what we're describing here

97:09about the negativity is just another form of that.

97:11Like how do we come together?

97:12And it does appear we're wired anyway to at least have a,

97:15there's a part of us that will enemy, friend, enemy.

97:18And we see, yeah, it's like,

97:21why are we wiring on the enemy front?

97:22- Yeah.

97:23- So why are we pushing that?

97:24Why are we promoting that so deeply?

97:26- Assume friend until proven otherwise.

97:28- Yes, yes.

97:30- So 'cause you have such a fascinating mind

97:31and all of this, let me just ask you these questions.

97:34So one interesting side on the Python history

97:38is the move from Python two to Python three.

97:41You mentioned move from Python one to Python two,

97:43but the move from Python two to Python three

97:46is a little bit interesting

97:47because it took a very long time.

97:50It broke in quite a small way backward compatibility,

97:55but even that small way seemed to have been

97:56very painful for people.

97:58Is there lessons you draw--

98:00- Oh, man, tons of lessons.

98:01- From how long it took and how painful it seemed to be?

98:05- Yeah, tons of lessons.

98:07Well, I mentioned here earlier that NumPy was written in 2005.

98:11It was in 2005 that I actually went to Guido

98:15to talk about getting NumPy into Python three.

98:17Like my strategy was to,

98:18oh, we were moving to Python three, let's have that be,

98:20and it seems funny in retrospect

98:22because like, wait, Python three, that was in 2020, right?

98:25When we finally ended support for Python two,

98:27or at least 2017.

98:29The reason it took a long time,

98:30a lot of time, I think it was because,

98:32well, one of the things is there wasn't much

98:34to like about Python three.

98:363.0, 3.1, it really wasn't until 3.3.

98:40Like I consider Python 3.3 to be Python 3.0.

98:43But it wasn't until Python 3.3

98:44that I felt there was enough stuff in it

98:47to make it worth anybody using it, right?

98:49And then 3.4 started to be, oh, yeah, I want that.

98:52And then 3.5 as the matrix multiply operator,

98:54and now it's like, okay, we gotta use that.

98:56- Plus the libraries that started leveraging

98:58some of the features of Python three.

98:59- Exactly.

99:00So it really, the challenge was, it was,

99:03but it also illustrated a truism

99:05that when you have inertia,

99:08when you have a group of people using something,

99:10it's really hard to move them away from it.

99:11You can't just change the world on them.

99:13And Python three, it made some,

99:15I think it fixed some things Guido had always hated.

99:17I think he didn't like the fact that print was a statement.

99:19He wanted to make it a function.

99:20But in some sense, that's a bit of gratuitous change

99:23to the language.

99:24And you could argue, and people have.

99:27But one of the challenges was there wasn't enough features

99:31and too many just changes without features.

99:34And so that empathy for the end user

99:37as to why they would switch wasn't there.

99:40I think also it illustrated just the funding realities.

99:42Like Python wasn't funded.

99:45Like it was also a project

99:46with a bunch of volunteer labor, right?

99:48It had more people, so more volunteer labor,

99:50but it was still, it was funded in the sense

99:52that at least Guido had a job.

99:53And I've learned some of the behind the scenes

99:55on that now since, since talking to people

99:57who have lived through it.

99:57And maybe not on air, we can talk about some of that.

100:01But it's interesting to see, but Guido had a job,

100:03but his full-time job wasn't just work on Python.

100:07Like he had other things to do.

100:08- Just wild.

100:09- It is wild, isn't it?

100:10- It's wild how few people are funded.

100:13- Yes.

100:14- And how much impact they have.

100:15- Yes.

100:16- Maybe that's a feature and not a bug, I don't know.

100:17- Maybe, yes, exactly.

100:19At least early on, it's sort of, I know, yeah.

100:21- It's like Olympic athletes are often severely underfunded,

100:25but maybe that's what brings out the greatness.

100:27- Yes, correct, no, exactly.

100:29Maybe this is the essential part of it.

100:31'Cause I do think about that in terms of,

100:33I currently have an incubator for open source startups.

100:36Like what I'm trying to do right now

100:37is create the environment I wished had existed

100:40when I was leaving academia with NumPy

100:42and trying to figure out what to do.

100:44I'm trying to create those opportunities and environments.

100:46So, and that's what drives me still,

100:49is how do I make the world easier

100:50for the open source entrepreneur?

100:52- So let me stay, I mean, I could probably stay

100:55at NumPy for a long time, but this is fun question.

101:00So Andrej Kapothy leads the Tesla Autopilot team,

101:04and he's also one of the most like legit programmers I know.

101:09It's like he builds stuff from scratch a lot,

101:13and that's how he builds intuition

101:15about how a problem works.

101:16He just builds it from scratch, and I always love that.

101:18And the primary language he uses is Python

101:21for the intuition building.

101:23But he posted something on Twitter

101:27saying that they got a significant improvement

101:31on some aspect of their like data loading, I think,

101:35by switching away from np.squareroot.

101:39So the NumPy's implementation of square root

101:42to math.squareroot.

101:43And then somebody else commented

101:44that you can get even a much greater improvement

101:48by using the vanilla Python square root,

101:51which is like-- - Power 0.5.

101:53- Power 0.5. - Yeah, yeah.

101:55- And it's fascinating to me.

101:56I just wanted to--

101:57So that was-- - Absolutely.

101:59- That was some shade throwing at some--

102:02- No, no, and yes, we're talking about.

102:04- It's a good way to ask the trade-off

102:08between usability and efficiency broadly in NumPy,

102:12but also on these like specific weird quirks

102:14of like a single function.

102:16- Yep, so on that point,

102:19if you use a NumPy math function on a scalar,

102:23it's gonna be slower than using a Python function

102:26on that scalar. - Yeah.

102:27- But because the math object in NumPy

102:32is more complicated, right?

102:33'Cause you can also call that math object on an array.

102:36And so effectively, it goes through a similar machine.

102:39There aren't enough of the, which you would do,

102:42and you could do like checks and fast paths.

102:45So yeah, if you're basically doing a list,

102:48if you run over a list, in fact,

102:50for problems that are less than 1,000,

102:53even maybe 10,000 is probably the,

102:55if you're going more than 10,000,

102:56that's where you definitely need to be using arrays.

102:59But if you're less than that, and for reading,

103:01if you're doing a reading process,

§15Transcript · 1:43:02–1:50:09

103:02and essentially it's not compute bound, it's IO bound,

103:05and so you're really taking lists of 1,000 at a time

103:08and doing work on it, yeah, you could be faster

103:10just using Python, straight up Python.

103:12- See, but also-- - And then--

103:15- This is the, sorry to interrupt,

103:16but there's the fundamental questions

103:18when you look at the long arc of history,

103:21it's very possible that np.squareroot is much faster.

103:25- It could be.

103:26- So in terms of don't worry about it,

103:29it's the evils of over-optimization,

103:31or whatever, all the different quotes around that,

103:34is sometimes obsessing about this particular little quark

103:39is not sufficient.

103:41- For somebody like, if you're trying to optimize your path,

103:45I mean, I agree, premature optimization

103:47creates all kinds of challenges, right,

103:49because now, but you may have to do it.

103:51- I believe the quote is, it's the root of all evil.

103:53- It's the root of all evil, right.

103:55Let's give Donald Knuth, I think,

103:57or we should go to somebody else.

103:59- Well, Doc Knuth is kind of like Mark Twain,

104:00people just attribute stuff to him, I don't--

104:02- And it's fine, because he's brilliant, so.

104:05No, I was a LaTeX user myself,

104:07and so I have a lot of respect,

104:09and you did more than that, of course,

104:10but yeah, someone I really appreciate

104:14in the computer science space.

104:15Yeah, I don't, I think that's appropriate,

104:17there's a lot of little things like that,

104:18where people actually, if you understood it,

104:20you go, yeah, of course that's the case.

104:22And the other part, the other part I didn't mention,

104:25and Numba was a thing we wrote early on,

104:27and I was really excited by Numba,

104:29because it's something we wanted,

104:30it was a compiler for Python syntax,

104:32and I wanted it from the beginning of writing NumPy,

104:35because of this function question,

104:38like, taking, the power of arrays

104:41is really that you can write functions using all of it.

104:45It has implicit looping, right,

104:47so you don't worry about,

104:47I write this N-dimensional for loop with four loops,

104:50for four statements, you just say,

104:51oh, big four-dimensional array,

104:53I'm gonna do this operation, this plus, this minus,

104:55this reduction, and you get this,

104:57it's called vectorization in other areas,

104:59but you can basically think at a high level

105:01and get massive amounts of computation done,

105:03with the added benefit of, oh, it can be parallelized,

105:07easily, it can be put in parallel,

105:09you don't have to think about that.

105:09In fact, it's worse to go decompose your,

105:12you write the for loops,

105:14and then try to infer parallelism from for loops.

105:16So that's actually a harder problem,

105:17than to take the array problem,

105:19and just automatically parallelize that problem.

105:22That's what, and so functions in NumPy

105:25are called universal functions, Ufuncs,

105:27so square root is an example of a Ufunc,

105:28there are others, sine, cosine, add, subtract,

105:32in fact, one of the first libraries to SciPy

105:34was something called special,

105:35where I added Bessel functions,

105:36and all these special functions that come up in physics,

105:40and I added them as Ufuncs, so they could work on arrays.

105:43So I understood Ufuncs very, very well

105:44from day one inside of Numeric,

105:45that was one of the things we tried to make better in NumPy

105:47was how do they work, can they do broadcasting,

105:50what does broadcasting mean?

105:51But one of the problems is,

105:53okay, what do I do with a Python scaler?

105:56So what happens, the Python scaler gets broadcast

105:59to a zero dimensional array,

106:01and then it goes through the whole same machinery

106:02as if it were a 10,000 dimensional array,

106:05and then it kind of unpacks the element,

106:07and then does the addition.

106:09That's not to mention the function it calls,

106:12in the case of square root,

106:13is just the CLIB square root.

106:15In some cases, like Python's Power,

106:18there's some optimizations they're doing

106:20that can be faster than just calling the CLIB square root.

106:23- In the interpreter, or in the--

106:25- No, in the C code, in the Python runtime.

106:27- In the Python runtime, so they really optimize it,

106:30and they have the freedom to do that,

106:32'cause they don't have to worry about--

106:32- 'Cause it's just a scaler.

106:34- It's just a scaler.

106:35- They don't have to worry about the fact that,

106:36oh, this could be an object with many pieces.

106:39The Ufunc machiner is also generic,

106:41in the sense that typecasting and broadcasting,

106:44broadcasting's idea of, I'm gonna go,

106:46I have a zero dimensional array,

106:47I have a scaler with a four dimensional array,

106:49and I add them.

106:50Oh, I have to kind of coerce the shape of this guy

106:54to make it work against the whole four dimensional array.

106:56So it's the idea of, I can do a one dimensional array

106:59against a two dimensional array, and have it make sense.

107:02- Well, that's what NumPy does,

107:03is it challenges you to reformulate, rethink your problem,

107:07as a multi-dimensional array problem,

107:09versus move away from scalers completely.

107:12- Right, exactly.

107:13- Yeah.

107:14- Exactly, in fact, that's where some of the edge cases,

107:16boundaries are, is that, well, they're still there,

107:18and this is where array scalers are particular.

107:21So array scalers are particularly bad,

107:23in the sense that they were written

107:24so that you could optimize the math on them,

107:26but that hasn't happened.

107:28And so their default is to coerce the array scaler

107:32to a zero dimensional array,

107:33and then use the NumPy machinery.

107:36That's what, and you could specialize,

107:38but it doesn't happen all the time.

107:39So in fact, when we first wrote Numba,

107:41we do comparisons and say, look, it's a thousand X speed up.

107:44We're lying a little bit in the sense that,

107:47well, first do the 40 X slowdown

107:50of using array scalers inside of a loop.

107:52'Cause if you used to use Python scalers,

107:53you'd already be 10 times faster.

107:56But then we would get a hundred times faster

107:58over that using just compilation.

108:00But what we do is compile the loop

108:01from out of the interpreter to machine code.

108:04And then that's always been the power of Python,

108:06is this extensibility so that you can,

108:08'cause people say, oh, Python's so slow.

108:09Well, sure, if you do all your logic

108:11in the runtime of the Python interpreter, yeah.

108:13But the power is that you don't have to.

108:15You write all the logic,

108:17which you do in the high level is just high level logic.

108:19And the actual calls you're making

108:21could be on gigabyte arrays of data,

108:24and that's all done at compiled speeds.

108:26And the fact that integration is,

108:29one, can happen, but two, is separable.

108:32That's one of the,

108:34the language like Julia says, we're gonna be all in one.

108:36You can do all of it together.

108:37And then there's, the jury's out, is that possible?

108:39I tend to think that you're gonna,

108:41there's separate concerns there.

108:43You wanna precompile,

108:44and generally you will wanna precompile

108:46some of your loops.

108:48Like SciPy is a compilation step.

108:50To install SciPy, it takes about two hours.

108:53If you have many, many machines,

108:54maybe you can get it down to one hour.

108:55But to compile those libraries takes a while.

108:57You don't wanna do that at runtime.

108:59You don't wanna do that all the time.

109:00You wanna have this precompiled binary available

109:02that you're then just linking into.

109:04So there's real questions about the whole,

109:07source code, code is,

109:09running binary code is more than source code.

109:11It's creating object code, it's the linker,

109:13it's the loader, it's the how does that interpret it

109:15inside of a virtual memory space.

109:17There's a lot of details there that actually,

109:19I didn't understand for a long time

109:20until I read books on the topic.

109:23And it led to, the more you know,

109:25the better off you are, and you can do more details.

109:28But sometimes it helps with abstractions too.

109:31- Well, the problem, as we mentioned earlier

109:33with abstractions is you kind of sometimes assume

109:36that whoever implemented this thing

109:41had your case in mind and found the optimal solution.

109:45- Yes.

109:45- Or like you assume certain things.

109:47I mean, there's a lot of,

109:48- Correct.

109:49- One of the really powerful things to me early on,

109:52I mean, it sounds silly to say, but with Python,

109:55probably one of the reasons I fell in love with it

109:58is dictionaries.

109:59- Yes.

110:00- So obviously probably most languages have some,

110:04- Mapping concept.

110:05- Some mapping concept,

110:06but it felt like it was a first-class citizen.

110:09And it was just my brain was able to think in dictionaries.

§16Transcript · 1:50:12–1:57:46

110:12But then there is the thing that I guess I still use

110:14to this day is order dictionaries,

110:16because that seems like a more natural way

110:20to construct dictionaries.

110:21- Yeah.

110:22- And from a computer science perspective,

110:23the running time cost is not that significant.

110:26There's a lot of things to understand about dictionaries

110:30that the abstraction kind of doesn't necessarily

110:34incentivize you to understand.

110:37- Right, do you really understand the notion of a hash map

110:39and how that dictionary is implemented?

110:41But you're right, dictionaries are a good example

110:43of an abstraction that's powerful.

110:44And I agree with you, I love dictionaries too.

110:47Took me a while to understand that once you do,

110:49you realize, oh, they're everywhere.

110:50And Python uses them everywhere too.

110:52Like it's actually constructed,

110:54that one of the foundational things is dictionaries,

110:55and it does everything with dictionaries.

110:57- Yeah.

110:57- So it is, it's powerful.

110:58Order dictionaries came later,

111:00but it is very, very powerful.

111:02It took me a little while coming from

111:04just the array programming entirely

111:06to understand these other objects,

111:07like dictionaries and lists and tuples and binary trees.

111:11Like I said, I wasn't a computer scientist,

111:13but I studied arrays first.

111:15And so I was very array-centric.

111:16And you realize, oh, these others

111:18don't have purposes and value actually.

111:20I agree.

111:22- There's a friendliness about,

111:24like one way to think about arrays is,

111:28arrays are just like full of numbers,

111:31but to make them accessible to humans

111:35and make them less error-prone to human users,

111:38sometimes you want to attach names,

111:41human interpretable names that are sticky to those arrays.

111:44So that's how you start to think about dictionaries.

111:47- Yeah, that's a good point.

111:48- You start to convert numbers

111:50into something that's human interpretable.

111:52And that's actually the tension I've had with NumPy

111:55because I've built so much tooling around

111:58human interpretability and also protecting me

112:04from a year later not making the mistakes

112:07by being, I wanted to force myself

112:09to use English versus numbers.

112:12- Yes, so there's a project called Labeled Arrays.

112:15Like very early it was recognized that,

112:18oh, we need, we're indexing NumPy with just numbers,

112:21all the columns and particularly the dimensions.

112:23I mean, if you have an image,

112:25you don't necessarily need to label each column or row,

112:27but if you have a lot of images

112:29or you have another dimension,

112:30you'd at least like to label the dimension

112:31as this is X, this is Y, this is Z,

112:33or this is, give us some human meaning

112:34or some domain-specific meaning.

112:36That was one of the impetuses for pandas actually,

112:39was just, oh, we do need to label these things.

112:43And Labeled Array was an attempt to add that,

112:45like a lighter weight version of that.

112:47And there's been, like that's an example of something

112:49I think NumPy could add, could be added to NumPy.

112:53But one of the challenges again, how do you fund this?

112:55Like I said, one of the tragedies I think is that,

112:58so I never had the chance to,

113:00I was never paid to work on NumPy, right?

113:02So I've always just done it in my spare time,

113:04always taken from one thing,

113:05taken from another thing to do it.

113:07And at the time, I mean, today,

113:09it would be the wrong time today,

113:11like paying me to work on NumPy now

113:12would not be a good use of effort.

113:13But we are finally at QuantSight Labs,

113:16I'm actually paying people to work on NumPy and SciPy,

113:19which is I'm thrilled with, I'm excited by.

113:21I've wanted to do that.

113:22That's what I always wanted to do from day one,

113:24it just took me a while to figure out a mechanism to do that.

113:27- Even like in the university setting, respecting that,

113:31like pushing students, young minds,

113:34the young graduate students to contribute

113:38and then figuring out financial mechanisms

113:41that enable them to contribute

113:43and then sort of reward them

113:45for their innovative scientific journey,

113:48that would be nice.

113:49But then also there's just a better allocation of resources.

113:52It's 20 year anniversary since 9/11,

113:55and I was just looking,

113:57we spent over $6 trillion in the Middle East after 9/11

114:02in the various efforts there.

114:04And sort of to put politics and all that aside,

114:08it's just, you think about the education system,

114:10all the other ways we could have possibly allocated

114:12that money.

114:13To me, to take it back,

114:18the amount of impact you would have

114:21by allocating a little bit of money to the programmers

114:26that build the tools that run the world, it's fascinating.

114:30I mean-- - It is.

114:31- I don't know, I think, again,

114:34there is some aspect to being broke

114:38as somewhat of a feature, not a bug,

114:40that you make sure that your--

114:42- You still manage that.

114:43- Right, no, I know.

114:45But I don't think that's a big part.

114:47So it's like, I think you can have enough money

114:50and actually be wealthy while maintaining your values.

114:53- Agreed, agreed.

114:55There's an old adage that nations that trade together

114:57don't go to war together.

114:59I've often thought about nations that code together.

115:01- Yeah, code together.

115:02(laughing)

115:03- Because one of the things I love about open source

115:05is it's global, it's multinational.

115:08There aren't national boundaries.

115:09One of the challenges with business and open source

115:10is the fact that, well, business is national.

115:13Businesses are entities that are recognized

115:14in legal jurisdictions, right,

115:16and have laws that are respected in those jurisdictions,

115:18and hiring, and yet the open source ecosystem

115:21is not, it's not there.

115:23Like, currently, one of the problems we're solving

115:25is hiring people all over the world, right,

115:27'cause we, it's a global effort.

115:29And I've had the chance to work,

115:30and I've loved the chance.

115:31I've never been to, like, Iran,

115:35but I once had a conference where I was able

115:37to talk to people there, right,

115:38and talk to folks in Pakistan.

115:40Never been there, but we had a call,

115:44and there were people there,

115:45like, just scientists and normal people,

115:47and, you know, and it's, there's a certain amount

115:50of humanizing, right, that gets away from the,

115:54like, we often get the memes of society

115:56that bubble up and get discussed,

115:58but the memes are not even an accurate reflection

116:00of the reality of what people are.

116:02- Well, if you look at the major power centers

116:05that are leading to something like cyber war

116:08in the next few decades, it's the United States,

116:11it's Russia, and China.

116:13And those three countries in particular

116:16have incredible developers.

116:18So if they work together, I think that's one way,

116:21the politicians can do their stupid bickering,

116:23but, like, there's a layer of infrastructure, of humanity,

116:27if they collaborate together,

116:29that I think can prevent major military conflict,

116:34which would, I think, most likely happen at the cyber level

116:37versus the actual hot war level.

116:39- You're right.

116:40No, I think that's good prediction.

116:43Nations that code together don't go to war together.

116:46- Don't go to war together.

116:47That's a hope, right?

116:48That's one of the philosophical hopes, but yeah.

116:51- So you mentioned the project of Numba,

116:55which is fascinating.

116:58So from the early days, there was kind of a pushback

117:01on Python that it's not fast.

117:04You know, you see C,

117:05if you wanna write something that's fast,

117:06you use C, C++.

117:08If you wanna write something that's usable and friendly,

117:11but slow, you use Python.

117:13And so what is Numba?

117:15What is its goal?

117:16How does it work?

117:17- Great, yeah.

117:18Yes, that's what the argument.

117:19And the reality was people would write high-level code

117:22and use compiled code,

117:23but there's still user story, use cases,

117:25where you want to write Python,

117:27but then have it still be fast.

117:28You still need to write a for loop.

117:30Like before Numba, it was always don't write a for loop.

117:33You know, write it in a vectorized way,

117:35you know, put it in an array.

117:37And often that can make a memory trade-off.

117:39Like quite often you can do it,

117:41but then you make maybe use more memory

117:42because you have to build this array of data

117:44that you don't necessarily need all the time.

117:46So Numba was, it started from a desire

§17Transcript · 1:57:49–2:04:53

117:49to have kind of a vectorized that worked.

117:52A vectorized was a tool in NumPy, it was released.

117:56You give it a Python function

117:57and it gave you a universal function,

117:59a Ufunc that would work on arrays.

118:01So you get a function that just worked on a scalar.

118:03Like you could make a,

118:04like the classic case was a simple function

118:06that had an if then statement in it.

118:08So a sine X over X function, sinc function.

118:12If X equals zero, return one, otherwise do sine X over X.

118:15The challenge is you don't want that loop

118:17to have one in Python.

118:18So you want a compiled version of that.

118:21But the Ufunc, the vectorized in NumPy

118:23would just give you a Python function.

118:24So it'd take the array of numbers

118:26and at every call do a loop back into Python.

118:29So it was very slow.

118:30It gave you the appearance of a Ufunc, but it was very slow.

118:32So I always wanted a vectorized

118:34that would take that Python scalar function

118:36and produce a Ufunc working on binary native code.

118:39So in fact, I had somebody work on that with PyPy

118:42and see if PyPy could be used to produce a Ufunc like that

118:45early on in 2009 or something like that, 2010.

118:50It didn't work that well.

118:51It was kind of pretty bulky.

118:52But in 2012, Peter and I had just started Anaconda.

118:57We had, I had just, I'd learned to raise money.

119:00That's a different topic, but I'd learned to, you know,

119:03raise money from friends, family, and fools, as they say.

119:05(laughing)

119:07- That's a good line.

119:09- So we were trying to do something.

119:10We were trying to change the world.

119:11Peter and I are super ambitious.

119:13We wanted to make array computing,

119:14and we had ideas for really what's still,

119:16what's still the energy right now.

119:17How do you do at scale data science?

119:20And we had a bunch of ideas there, but one of them,

119:23I had just talked to people about LLVM,

119:24and I was like, there's a way to do this.

119:27I just, I went, I heard about my friend Dave Beasley

119:30at a compiler course.

119:31So I was looking at compilers, like,

119:32and I realized, oh, this is what you do.

119:34And so I wrote a book about it.

119:36And I was like, oh, this is what you do.

119:37And so I wrote a version of Numba

119:40that just basically mapped Python bytecode to LLVM.

119:45- Nice.

119:46- Right, so, and the first version is like, this works,

119:49and it produces code that's fast.

119:50This is cool for, you know,

119:51obviously a reduced subset of Python.

119:53I didn't support all the Python language.

119:55There had been efforts to speed up Python in the past,

119:57but those efforts were, I would say,

119:59not from the array computing perspective,

120:00not from the perspective of wanting

120:01to produce a vectorized improvement.

120:03They were from a perspective of speeding up

120:05the runtime of Python, which is fundamentally hard,

120:07because Python allows for some constructs

120:10that aren't, you can't speed up.

120:12Like, it's generic, you know, when it does this variable.

120:15So I, from the start, did not try

120:17to replicate Python's semantics entirely.

120:20I said, I'm gonna take a subset of the Python syntax

120:23and let people write syntax in Python,

120:25but it's kind of a new language, really.

120:27- So it's almost like for loops, like focusing on for loops.

120:30- For loops, scalar arithmetic, you know, typed,

120:34you know, really typed language, a typed subset.

120:37That was the key.

120:39So, but we wanted to add inference of types.

120:41So you didn't have to spell all the types out,

120:43because when you call a function, so Python is typed.

120:47It's just dynamically typed.

120:48So you don't tell it what the types are,

120:49but when it runs, every time an object runs,

120:52there's a type for the variables.

120:53You know what it is.

120:54And so that was, the design goals of Numba

120:56were to make it possible to write functions

120:59that could be compiled and have them used for NumPy arrays.

121:03Like they needed to support NumPy arrays.

121:05- And so how does it work?

121:07Do you add a comment within Python that tells it to do,

121:10like how do you help out a compiler?

121:11- Yeah, so there isn't much actually.

121:15You don't, it's kind of magical in the sense

121:17that it just looks at the type of the objects

121:19and then does type inference to determine

121:21any of the other variables it needs.

121:23And then it was also, because we had a use case

121:26that could work early, like one of the challenges

121:29of any kind of new development is if you have something

121:31that to make it work, it was gonna take you

121:33a long time, it's really hard to get it off the ground.

121:35If you have a project where there's some incremental story,

121:39it can start working today and solve a problem,

121:42then you can start getting it out there, getting feedback.

121:44Because Numba today, now Numba is nine years old today,

121:47right, the first two, three versions were not great, right?

121:52But they solved a problem and so people could try it

121:54and we could get some feedback on it.

121:55- Not great in that it was very focused.

121:57- Very fragile, very, the subset,

122:00the subset it would actually compile was small.

122:03And so if you wrote Python code and said,

122:05so the way it worked is you write a function

122:06and you say @JIT, use decorators.

122:09So decorators are just these little constructs

122:11that let you decorate code with an @ and then a name.

122:15The @JIT would take your Python function

122:17and actually just compile it and replace the Python function

122:20with another function that interacts

122:23with this compiled function.

122:24And it would just do that and we went from Python bytecode,

122:28then we went to AST, I mean, writing compilers

122:30actually, I learned a lot about why computer science

122:32is taught the way it is because compilers

122:35can be hard to write.

122:36They use tree structures, they use all the concepts

122:39of computer science that are needed.

122:40And it's actually hard to, it's easy to write a compiler

122:44and then have it be spaghetti code.

122:46Like the passes become challenging

122:47and we ended up with three versions of Numba, right?

122:49Numba got written three times.

122:51- What's, what programming language is Numba written in?

122:55- Python.

122:56- Wait, okay.

122:57- Yeah, Python.

122:58So. (laughs)

123:00- Really?

123:00- Yeah. - That's fascinating.

123:01- Yeah, so Python, but then the whole goal of Numba

123:03is to translate Python bytecode to LLVM.

123:07And so LLVM actually does the code generation.

123:09In fact, a lot of times I'd say,

123:10yeah, it's super easy to write a compiler

123:12if you're not writing the parser nor the code generator.

123:15Right?

123:16- So for people who don't know, LLVM is a compiler itself.

123:19So you're compiling to--

123:20- Yeah, it's really badly named low-level virtual machine,

123:22which that part of it is not used.

123:24It's really low-level.

123:25- Chris, he doesn't mean that.

123:26(laughs)

123:27- Yeah, love Chris.

123:29But the name makes you imply that the virtual machine

123:31is what it's all about.

123:32It's actually the IR and the library,

123:34the code generation.

123:36That's the real beauty of it.

123:37The fact that, what I love about LLVM

123:39was the fact that it was a plateau

123:41you could collaborate on.

123:43Right?

123:44Instead of the internals of GCC

123:45or the internals of the Intel compiler,

123:47like how do I extend that?

123:49And it was a place where you could collaborate.

123:51And we were early, I mean, people had started before.

123:54It's a slow compiler.

123:55Like it's not a fast compiler.

123:56So for some kind of JITs,

123:59like JITs are common in a language

124:01because one, every browser has a JavaScript JIT.

124:04It does real-time compilation

124:06of the JavaScript to machine code.

124:09- For people who don't know,

124:09JIT is just-in-time compilation.

124:11- Thank you, yeah, just-in-time compilation.

124:13They're actually really sophisticated.

124:14In fact, I got jealous of how much effort

124:17was put into the JavaScript JITs.

124:18- Yes, well, it's kind of incredible what they've done.

124:20- Yes. - JavaScript JITs, yeah.

124:22- I completely agree.

124:22I'm very impressed.

124:24But Numba was an effort to make that happen with Python.

124:29And so we used some of the money

124:30we raised from Anaconda to do it.

124:32And then we also applied for this DARPA grant

124:34and used some of that money to continue the development.

124:36And then we used proceeds from service projects we would do.

124:40We get consulting projects

124:41on that we would then use some of the profits

124:44to invest in Numba.

124:45So we ended up with a team of two or three people

124:47working on Numba.

124:48It was a fits and starts, right?

124:50And ultimately, the fact that we had a commercial version

124:53of it also we were writing.

§18Transcript · 2:04:54–2:12:14

124:54So part of the way I was trying to fund Numba

124:56is say, well, let's do the free Numba

124:58and then we'll have a commercial version of Numba

124:59called Numba Pro.

125:00And what Numba Pro did is it targeted GPUs.

125:03So we had the very first CUDA JIT

125:05and the very first AppJIT compiler that in 2012, 2013,

125:10you could run not just a VueFunk on CPU,

125:14but a VueFunk on GPUs.

125:15And it would automatically parallelize it

125:17and get 1000x speedup.

125:18- And that's an interesting funding mechanism

125:21because large companies or larger companies care about speed

125:26in just this way.

125:30So it's exactly a really good way.

125:33- Yeah, there's been a couple of things

125:34you know people will pay for.

125:35One, they'll pay for really good user interfaces, right?

125:37And so I'm always looking for what are the things

125:40people will pay for that you could actually adapt

125:41to the open source infrastructure?

125:43One is definitely user interfaces.

125:45The second is speed, like a better runtime, faster runtime.

125:49- And then when you say people,

125:50you mean like a small number of people pay a lot of money,

125:52but then there's also this other mechanism

125:54that a ton of people pay a little bit.

125:57First, I gotta, we mentioned Anaconda,

126:00we mentioned Friends, Family and Fools.

126:04So Anaconda is yet another.

126:06So there's a company, but there's also a project

126:09that is exceptionally impactful in terms of,

126:14for many reasons, but one of which is bringing

126:16a lot more people into the community

126:21of folks who use Python.

126:23So what is Anaconda?

126:26What is its goals?

126:28Maybe what is Conda versus Anaconda?

126:31- Yeah, I'll tell you a little bit of the history of that.

126:33'Cause Anaconda, we wanted to do,

126:35we wanted to scale Python 'cause we, you know,

126:38that was the goal.

126:39Peter and I had the goal of when we started Anaconda,

126:40we actually started as Continuum Analytics

126:42was the name of the company that started.

126:43It got renamed Anaconda in 2015.

126:46But we said, we want to scale analytics.

126:49NumPy's great, Pandas is emerging,

126:52but these need to run at scale with lots of machines.

126:55The other thing we wanted to do was make user interfaces

126:57that were web.

126:59We wanted to make sure the web did not pass by

127:01the Python community, that we had a ways

127:03to translate your data science to the web.

127:05So those are the two kind of technical areas.

127:07We thought, oh, we'll build products in this space.

127:09And that was the idea.

127:12Very quickly in, but of course, the thing I knew how to do

127:14was to do consulting to make money

127:16and to make sure my family and friends

127:18and fools that had invested didn't lose their money.

127:21So it's a little different than if you take money

127:23from a venture fund.

127:24If you take money from a venture fund,

127:25the venture fund, they want you to go big or go home.

127:27They're kind of like expecting nine out of 10 to fail

127:30or 99 out of 100 to fail.

127:32It's different, I was in a barbell strategy.

127:35I was like, I can't fail.

127:37I mean, I may not do super well,

127:38but I cannot lose their money.

127:40So I'm gonna do something I know can return a profit,

127:43but I want to have exposure to an upside.

127:46So that's what happened at Anaconda.

127:48There was lots of things we did not well

127:50in terms of that structure.

127:51And I've learned from since and have it better.

127:53But we did a really good job

127:56of kind of attracting the interest around the area

127:58to get good people working

128:00and then funnel some money on some interesting projects.

128:02Super excited about what came out of our energy there.

128:05Like a lot did.

128:06- So what are some of the interesting projects?

128:08- So Dask, Numba, Bokeh, Conda.

128:11There was a data shader, Panel, HoloViz.

128:15These are all tools that are extremely relevant

128:19in terms of helping you build applications,

128:21build tools, build faster code.

128:24- So Bokeh is the plotting--

128:26- Oh, JupyterLab, JupyterLab came out of this too.

128:28- That's fascinating.

128:30Okay, so Bokeh does plotting?

128:33- Bokeh does plotting.

128:34So Bokeh was one of the foundational things to say,

128:35I want to do plot in Python,

128:37but have the thing show up in a web.

128:39- Right, that's right, that's right, that's right.

128:41And plotting to me still,

128:43with all due respect to Matplotlib and Bokeh,

128:46it feels like still an unsolved problem,

128:48not a solved problem. - Oh, it is.

128:50It is, it's a big problem.

128:52- Right, 'cause you're, I mean, I don't know.

128:55It's visualization broadly, right?

128:58- I think we've got a pretty good API story

129:00around certain use cases of plotting.

129:03But there's a difference between static plots

129:04versus interactive plots versus,

129:06I'm an end user, I just want to write a simple,

129:09for Panda started the idea of here's a data frame,

129:12I'm gonna dot plot.

129:12I'm just gonna attach plot as a method to my object,

129:16which was a little bit controversial, right?

129:18But works pretty well, actually,

129:20'cause there's a lot less you have to pass in, right?

129:23You can just say, here's my object, you know what you are.

129:26You tell the visualization what to do.

129:29So that, and there's things like that

129:31that have not been super well-developed entirely.

129:33But Bokeh was focused on interactive plotting.

129:36So you could, it's a short path

129:38between interactive plotting and application,

129:41dashboard application.

129:42And there's some incredible work that got done there, right?

129:44And it was a hard project

129:45because then you're basically doing JavaScript and Python.

129:49So we wanted to tackle some of these hard problems

129:51and try to just go after them.

129:53We got some DARPA funding to help,

129:54and it was super helpful.

129:56It's a funny story there,

129:57we actually did two DARPA proposals,

129:58but one we were five minutes late for.

130:00And DARPA has a very strict cutoff window.

130:03And so we had two proposals, one for the Bokeh

130:05and one for actually Numba and the other work.

130:09- Which one were you late for?

130:10- The foundational numerical work.

130:12So Bokeh got funded. - Oh no.

130:14- Fortunately, Chris let us use some of the money to fund

130:17still some of the other foundational work.

130:19But it wasn't as, yeah, his hands were tied,

130:22he couldn't do anything about it.

130:23That was a whole interesting story.

130:25- So one of the incredible projects

130:27that you worked on is Conda.

130:29- Yes.

130:30- So what is Conda? - So how did that

130:30come about?

130:31Yeah, Conda, it was early on, like I said, with SciPy.

130:35SciPy was a distribution, mass generation library.

130:37And you heard me talking about compiler issues

130:40and trying to get the stuff shipped

130:41and the fact that people can use your libraries

130:43if they have it.

130:44So for a long time, we'd understood

130:46the packaging problem in Python.

130:47And one of the first things we did at Continuum Analytics

130:50became Anaconda, was organize the PyData ecosystem

130:54in conjunction with NumFocus.

130:56We actually started NumFocus

130:57with some other folks in the community

131:00the same year we started Anaconda.

131:02I said, we're gonna build a corporation,

131:04but we're also gonna reify the community aspect

131:07and build a nonprofit.

131:08So we did both of those.

131:09- Can we pause real quick and can you say

131:12what is PyPy, the Python package index,

131:14like this whole story of packaging in Python?

131:19- Yeah, that's what I'm gonna get to, actually.

131:20This is exactly the journey I'm on.

131:22It's to sort of explain packaging in Python.

131:24I think it's best expressed through the conversation

131:26I had with Guido at a conference, where I said,

131:28so, you know, packaging's kind of a problem.

131:31And Guido said, I don't ever care about packaging.

131:34I don't use it.

131:34I don't install new libraries.

131:36I'm like, I guess if you're the language creator

131:38and if you need something, you just put it

131:39in the distribution, maybe you don't worry about packaging.

131:42But Guido has never really cared about packaging, right?

131:45And never really cared about the problem of distribution.

131:47It's somebody else's problem.

131:48And that's a fair position to take, I think,

131:50as a language creator.

131:51In fact, there's a philosophical question about

131:54should you have different development packaging managers?

131:56Should you have a package manager per language?

131:58Is that really the right approach?

131:59I think there are some answers of

132:01it is appropriate to have development tools.

132:04And there's an aspect of the development tool

132:06that is related to packaging.

132:07And every language should have some story there

132:10to help their developers create.

132:12- So you should have language-specific development tools.

132:14- Development tools that relate to package managers.

§19Transcript · 2:12:17–2:19:09

132:17But then there's a very specific user story

132:19around package management that those language-specific

132:21package managers have to interact with

132:23and currently aren't doing a good job of that.

132:25That was one of the challenges of not seeing that difference

132:29and it still exists in the difference today.

132:31Conda always was a user,

132:34I'm gonna use Python to do data science.

132:36I'm gonna use Python to do something.

132:38How do I get this installed?

132:39It was always focused on that.

132:41So it didn't have a develop.

132:43Classic example is Pip has a pip develop.

132:45It's like, I wanna install this

132:47into my current development environment today.

132:49Now, Conda doesn't have that concept

132:51because it's not part of the story.

132:52- For people who don't know,

132:54Pip is a Python-specific package manager

132:59that's exceptionally popular.

133:04That's probably the default thing you learn.

133:06- It's the default user.

133:07Yeah, and so the story there emerged

133:08because what happened is in 2012,

133:11we had this meeting at the Googleplex

133:13and Guido was there to come talk about

133:15what are we gonna do?

133:15How are we gonna make things work better?

133:17And Wes McKinney, me, Peter.

133:19Peter has a great photo of me talking to Guido

133:21and he pretends we're talking about this story.

133:23Maybe we were, maybe we weren't.

133:24But we did at that meeting talk about it

133:26and ask Guido, "Guido, we need to fix packaging in Python.

133:29"People can't get the stuff."

133:31And he said, "Go fix it yourself.

133:32"I don't think we're gonna do it."

133:33(laughing)

133:34All right.

133:35- That's the origin story right there.

133:36- All right, you said, okay, you said to do this ourselves.

133:39So at the same time, people did start to work

133:42on the packaging story in Python.

133:44It just took a little longer.

133:45So in 2012, kind of motivated by our training courses

133:49we were teaching, like how do we,

133:50very similar to what you just mentioned about your mother.

133:52Like it was motivated by the same purpose.

133:54Like how do we get this into people's hands?

133:56And it's this big, long process.

133:57It takes too expensive.

133:58It was actually hurting NumPy development

134:00because I would hear people were saying,

134:02"Don't make that change to NumPy

134:03"because I just spent a week getting my Python environment

134:05"and if you change NumPy, I have to reinstall everything.

134:09"And reinstalling is such a pain, don't do it."

134:10I'm like, wait, okay, so now we're not making changes

134:14to a library because of the installation problem

134:16that it'll cause for end users.

134:17Okay, there's a problem with installation.

134:19We gotta fix this.

134:20So we said, we're gonna make a distribution of Python.

134:23And we'd previously done that at mDot.

134:26I wanted to make one that we gave away for free

134:28that everyone could just get.

134:29Like that was critical that we just get it.

134:32It wasn't tied to a product.

134:33It was just you could get it.

134:35And then we had constantly thought about,

134:36well, do we just leverage RPM?

134:39But the challenge had always been,

134:40we want a package manager that works on Windows,

134:42Mac OS X and Linux the same.

134:43And it wasn't there.

134:46Like you don't have anything like that.

134:47- And for people who don't know,

134:49RPM is operating system specific package manager.

134:54- Correct, it's an operating specific, yes.

134:56- So do you create the design questions?

135:00Do you create an umbrella package manager

135:02that works across operating systems?

135:03- Yes, that was the decision.

135:05- And a neighboring design question is,

135:08do you also create a package manager

135:09that spans multiple programming languages?

135:11- Correct, exactly.

135:12That was the world we faced.

135:14And we decided to go multiple operating systems,

135:17multiple and programming language independent.

135:19Because even Python, and particularly what was important

135:21was SciPy has a bunch of Fortran in it, right?

135:24And scikit-learn has links to a bunch of C++.

135:27There's a lot of compiled code.

135:30And the Python package managers, especially early on,

135:32didn't even support that.

135:34So in 2000, so we released Anaconda,

135:38which was just a distribution of libraries,

135:39but we started to work on Conda in 2012.

135:42First version of Conda came out early 2013,

135:44summer of 2013.

135:46And it was a package manager.

135:47So you could say Conda install scikit-learn.

135:49In fact, scikit-learn was a fantastic project that emerged.

135:54It was the classic example of the scikits.

135:57I talked to you earlier about SciPy being too big

135:59to be a single library.

136:01Well, what the community had done is said,

136:02let's make scikits.

136:04And there's scikit-image, there's scikit-learn,

136:05there's a lot of scikits.

136:07And it was a fantastic move that the community did.

136:10I didn't do it.

136:11I was like, okay, that's a good idea.

136:12I didn't like the name.

136:13I didn't like the fact you typed scikit-image.

136:15I was like, it has got to be simpler, sklearn.

136:17We've got to make that smaller.

136:19I don't like typing all this stuff, it's important.

136:21So I was kind of a pressure that way.

136:23But I love the energy.

136:24I love the fact that they went out and they did it.

136:26And lots of people, Jared Millman,

136:27and then of course, Gael,

136:29and there's people I'm not even naming.

136:31Scikit-learn really emerged as a fantastic project.

136:34- And the documentation around that is also incredible.

136:36- And the documentation was incredible, exactly.

136:37- I don't know who did that, but they did a great job.

136:40- A lot of people in INRIA,

136:41a lot of people, a lot of European contributors.

136:44Andreas, there's some Andreas in the US.

136:47There's a lot of people I just adore,

136:48I think are amazing people.

136:50Awesome use of SciPy, right?

136:52I love the fact that they were using SciPy

136:54effectively to do something I love,

136:55which is machine learning, but couldn't install it.

136:58- 'Cause there's so many pieces involved.

137:00- So many dependencies, right?

137:02So our use case of Conda was Conda install Scikit-learn.

137:06Right, and it was the best way to install Scikit-learn

137:09in 2013 to really 2018, '17, '18.

137:14Pip finally caught up.

137:16I still think you should Conda install Scikit-learn

137:19instead of Pip install Scikit-learn,

137:20but you can Pip install Scikit-learn.

137:22The issue is the package they created was wheels,

137:24and Pip does not handle the multi-vendor approach.

137:27They don't handle the fact you have C++ libraries

137:29you're depending on.

137:30They just stop at the Python boundary.

137:32And so what you have to do in the wheel world

137:34is you have to vendor.

137:36You have to take all the binary and vendor it.

137:38Now if a change happens in underlying dependency,

137:41you have to redo the whole wheel.

137:43So TensorFlow is a good example,

137:44but you should not Pip install TensorFlow.

137:47It's a terrible idea.

137:48People do it because the popularity of Pip,

137:51many people think, "Oh, of course that's how

137:52"I install everything in Python."

137:54- Yeah, this is one of the big challenges.

137:56You know, you take a GitHub repository

137:58or just a basic blog post,

138:00the number of time Pip is mentioned over Conda

138:03is like 100x to one.

138:05- Correct, correct.

138:06- So it just has to do with--

138:07- And that was increasing.

138:07It wasn't true early because Pip didn't exist.

138:10Like, Conda came first.

138:11- So but that's like the long tail

138:13of the internet documentation user-generated.

138:15So that, like you think, how do I install,

138:18you Google, "How do I install TensorFlow?"

138:20You're just not gonna see Conda in that first page.

138:22- It's not correct, exactly.

138:24- And that--

138:25- Not today, you would have in 2016, 2017.

138:29- And it's sad because you saw the,

138:32Conda solves a lot of usability issues.

138:34- Correct.

138:35- Like for especially super challenging thing,

138:36I don't know, one of the big pain points for me

138:38was just on the computer vision side,

138:41OpenCV installation that--

138:43- Perfect example, yes.

138:44- I think Conda, I don't know if Conda has solved that one.

138:47- Conda has an OpenCV package.

138:49- I don't know, I certainly know Pip has not solved,

138:53I mean, there's complexities there because--

138:55- Right.

138:56- I actually don't know, I should probably know

138:58a good answer for this, but if you compile OpenCV

139:03with certain dependencies,

139:05you'll be able to do certain things.

139:07So there's this kind of flexibility of what you,

139:09like what options you compile with.

§20Transcript · 2:19:13–2:26:29

139:13- Yes.

139:13- And I don't think it's trivial to do that

139:16in a with Conda or with--

139:17- So Conda has a notion of variance of a package.

139:20You can actually have different compilation versions

139:23of a package, so not just the version's different,

139:24but oh, this is compiled with these optimizations on it.

139:26So Conda does have an answer.

139:27- Has those flavors, yeah.

139:28- Has flavors, basically.

139:30- Well, Pip, as far as I know, does not have flavors.

139:32- No, Pip generally hasn't thought deeply

139:36about the binary dependency problem, right?

139:38That's why fundamentally it doesn't work

139:41for the Sci-Fi ecosystem.

139:43It barely, you can sort of paper over it and duct tape it

139:46and it kind of works, until it doesn't

139:48and it falls apart entirely.

139:49So it's been a mixed bag.

139:52And I've been having lots of conversations

139:54with people over the years because, again,

139:56it's an area where if you understand some things,

139:58but not all the things, but they've done a great job

140:00of community appeal.

140:02This is an area where I think Anaconda,

140:04as a company, needed to do some things

140:07in order to make Conda more community-centric, right?

140:10And this is, I talk about this all the time,

140:13there's a balance between you have,

140:15every project starts with what I call

140:17company-backed open source.

140:18Even if the company is yourself, it's just one person.

140:20Just doing business as.

140:23But ultimately for products to succeed virally

140:26and become massive influencers,

140:28they have to get community people on board.

140:30They have to get other people on board.

140:32So it has to become community-driven.

140:33And a big part of that is engagement with those people,

140:35empowering people, governance around it.

140:38And what happened with Conda in the early days,

140:41Pip emerged and we did do some good things,

140:43Conda Forge, Conda Forge community

140:46is sort of the community recipe creation community.

140:49But Conda itself, I still believe,

140:52and Peter is CEO of Anaconda, he's my co-founder.

140:55I ran Anaconda until 2017, 2018.

140:58- Is Peter still in it?

140:59- Peter's still in Anaconda, right?

141:00We're still great friends, we talk all the time.

141:02I love him to death.

141:03There's a long story there about why and how,

141:06and we can cover it in some other podcast perhaps.

141:08- Yeah. (laughs)

141:09- It's sort of a more, maybe a more business-focused one.

141:11But this is one area where I think Conda

141:15should be more community-driven.

141:17Like he should be pushing more

141:18to get more community contributors to Conda.

141:21And let the, Anaconda shouldn't be fighting this battle.

141:26- Yeah. - Right?

141:26It's actually, it's really a developer's.

141:28Like you said, help the developers,

141:30and then they'll actually move us the right direction.

141:32- That was the problem I have,

141:33is many of the cool kids I know don't use Conda.

141:36And that, to me, is confusing.

141:38- It is confusing.

141:39It's really a matter of, Conda has some challenges,

141:42first of all.

141:43Conda still needs to be improved,

141:44there's lots of improvements to be made.

141:45And it's that aspect of, wait, who's doing this?

141:47And the fact that then the PyPA really stepped up.

141:50Like they were not solving the problem at all.

141:53And now they kinda got to where they're solving it

141:55for the most part.

141:56And then effectively, you could get,

141:58like Conda solved a problem that was there,

142:00and it still does, and it's still,

142:02there's still great things it can do.

142:03But, and we still use it all the time at Quantsite

142:07with other clients, but with,

142:09but you can kinda do similar things with Pip and Docker.

142:12Right?

142:13So, especially with the web development community,

142:15that part of it again is the,

142:17there's a lot of different kind of developers

142:19in the Python ecosystem.

142:20And there's still a lack of some clear understanding.

142:23I go to the Python conference all the time,

142:25and there's only a few people in the PyPA who get it.

142:28And then others who are just massively trumpeting

142:30the power of Pip, but just do not understand the problem.

142:32- Yeah, so one of the obvious things to me from a mom,

142:36from a non-programmer perspective,

142:37is the across operating system usability

142:41that's much more natural.

142:42So, there's people that use Windows,

142:44and just, it seems much easier to recommend Conda there.

142:49But then you should also recommend it across the board.

142:51So, I'll definitely sort of--

142:53- But what I recommend now is a hybrid.

142:55I do, I mean, I have no problem--

142:56- Is it possible to use--

142:57- Oh, it is, it is.

142:58What I, like, build the environment with Pip, with Conda,

143:01build an environment with Conda,

143:03and then Pip install on top of that, that's fine.

143:05Be careful about Pip installing OpenCV or TensorFlow,

143:09or, because if somebody's allowed that,

143:11it's gonna be most surely done in a way

143:13that can't be updated that easily.

143:15- So, install, like, the big packages,

143:17the infrastructure with Conda, and then the weirdos,

143:21that, like, the weird, like, implementation for some.

143:24I had, there's a cool library I used

143:28that, based on your location and time of day and date,

143:33tells you the exact position of the sun relative to the--

143:36- Oh, very cool. - To the earth.

143:38And it's just, like, a simple library,

143:39but it's very precise, and I was like, all right.

143:42But that was, and it's Pip, and it's very nice.

143:45- Well, the thing they did really well is,

143:46Python developers who wanna get their stuff published,

143:50you have to have a Pip recipe, right?

143:52I mean, even if it's, you know, the challenge is,

143:56and there's a key thing that needs to be added to Pip,

143:58just simply add to Pip the ability to defer

144:01to a system package manager.

144:03Like, 'cause it's, you know, recognize you're not

144:05gonna solve all the dependency problem.

144:07So, let, like, give up, and allow a system packager to work.

144:12That way, an Akanda's installed, and it has Pip,

144:15it would default to Kanda to install its stuff,

144:16but Red Hat RPM would default to RPM

144:19to install more things.

144:20Like, that's the, that's a key, not difficult,

144:23but somewhat work, some work, feature needs to be added.

144:25That's an example of something, like,

144:27I've known we need to re-do it.

144:28I mean, it's where I wish I had more money.

144:30I wish I was more successful in the business side,

144:33trying to get there, but I wish my, you know,

144:35my family, friends, and full community that I know--

144:37- Was larger.

144:38- Was larger, and had more money,

144:39'cause I know tons of things to do, effectively,

144:42with more resources, but, you know,

144:46I have not yet been successful at Channel.

144:48Tons of, you know, some, you know,

144:49I'm happy with what we've done.

144:51We've created again, at QuantSite,

144:54what we created to get Anaconda started.

144:56We created a community analytics to get Anaconda started.

144:58Done it again with QuantSite, super excited by that.

145:00- By the way-- - It took three years

145:01to do it.

145:02- What is QuantSite, what is its mission?

145:04We've talked a few times about different,

145:06fascinating aspects of it, but let's like,

145:08big picture, what is QuantSite?

145:09- Big picture, QuantSite.

145:10QuantSite is, its mission is to connect data

145:13to an open economy, so it's basically consulting

145:16of the PID ecosystem, right?

145:17It's a consulting company, and what I've said

145:20when I started it was we're trying to create products,

145:22people, and technology, so it's divided into two groups,

145:26and a third one as well.

145:28The two groups are a consulting services company

145:30that just helps people do data science,

145:31and data engineering, and data management better,

145:35and more efficiently.

145:35- Like full stack, like full thing.

145:36- Full stack, data science, full thing,

145:38which will help you build a infrastructure

145:40if you're using Jupyter, we do staff augmentation,

145:42need more programmers, help you use DAS more effectively,

145:44help you use GPUs more effectively,

145:46just basically a lot of people need help.

145:48So we do training as well to help people,

145:50both immediate help, and then learn from somebody.

145:55We've added a bunch of stuff too,

145:57we've kind of separated some of these other things

145:58into another company called OpenTeams

146:00that we currently started.

146:01One of the things I loved about what we did at Anaconda

146:03was create a community innovation team.

146:05And so I wanted to replicate that.

146:06This time we did a lot of innovation at Anaconda.

146:09I wanted to do innovation, but also contribute

146:12to the projects that existed, like create a place

146:15where maintainers, so that SciPy, and NumPy,

146:17and all these projects we already started

146:20can pay people to work on them and keep them going.

146:22So that's Labs, QuantSite Labs is a separate organization,

146:25it's a non-profit mission,

146:28the profits of QuantSite help fund it,

146:29and in fact, every project that we have at QuantSite,

§21Transcript · 2:26:33–2:33:28

146:33a portion of the money goes directly to QuantSite Labs

146:36to help keep it funded.

146:37So we've gotten several mechanisms

146:38we keep QuantSite Labs funded.

146:40And currently, so I'm really excited about Labs,

146:41'cause it's been a mission for a long time.

146:43- What kind of projects are within Labs?

146:45- So Labs is working to make the software better,

146:47like make NumPy better, make SciPy better,

146:49make it's only works on open source.

146:52So if somebody wants to, so companies do,

146:55we have a thing called a community work order, we call it.

146:57If a company says, I wanna make Spyder better,

146:59okay, cool, you can pay for a month

147:03of a developer of Spyder, or a developer of NumPy,

147:06or a developer of SciPy, you can't tell them

147:09what you want them to do, you can give them your priorities

147:10and things you wish existed, and they'll work

147:14on those priorities with the community

147:16to get what the community wants,

147:17and what emerges is what the community wants.

147:18- Is there some aspect on the consulting side

147:21that is helping, as we were talking about morphology

147:24and so on, is there specific applications

147:26that are particularly like driving,

147:29sort of inspiring the need for updates to SciPy?

147:31- Correct, absolutely, absolutely,

147:33GPUs are absolutely one of them,

147:34and new hardware beyond GPUs, I mean,

147:37Tesla's Dojo chip, I'm hoping we'll have a chance

147:39to work on that perhaps.

147:41Things like that are definitely driving it.

147:43The other thing that's driving it is scalable,

147:45like speed and scale, how do I write NumPy code

147:49or NumPy light code if I want it to run across a cluster?

147:52You know, that's Dask, or maybe it's Ray,

147:54I mean, there's sort of ways to do that now,

147:56or there's Modin, and there's, so Pandas code,

147:59NumPy code, SciPy code, Scikit-learn code,

148:02that I want to scale, so that's one big area.

148:04- Have you gotten a chance to chat with Andre and Elon

148:08about, 'cause like--

148:09- No, I would love to, by the way.

148:11I have not, but I'd love to.

148:12I just saw their Tesla AI Days video, super exciting.

148:16- So this one of the, you know, I love great engineering,

148:18software engineering teams, and engineering teams

148:20in general, and they're doing a lot of incredible stuff

148:22with Python, they're like--

148:23- They are. - Revolutionary,

148:25so many aspects of the machine learning pipeline

148:29that's operating in the real world,

148:30and so much of that is Python.

148:31Like you said, the guy running, you know,

148:33Andre Karpathy running Autopilot is tweeting

148:37about optimization of NumPy versus--

148:41- I would love to talk to him.

148:42In fact, we have at Quantsight, we've been fortunate enough

148:45to work with Facebook on PyTorch directly.

148:47So we have about 13 developers at Quantsight.

148:49Some of them are in labs working directly on PyTorch.

148:52- On PyTorch, that's great. - On PyTorch, right?

148:54So I basically, when we started Quantsight,

148:55I went to both TensorFlow and PyTorch and said,

148:57hey, I wanna help connect what you're doing

149:00to the broader SciPy ecosystem,

149:01because I see what you're doing,

149:03we have this bigger mission, we wanna make sure

149:04we don't, you know, lose energy here.

149:06So, and Facebook responded really positively,

149:09and I didn't get the same reaction.

149:12- Not yet, not yet. - Not yet.

149:13- I love the folks at TensorFlow.

149:15- I really love the folks at TensorFlow too,

149:17they're fantastic.

149:18I think it's the, just how it integrates

149:21with their business, I mean, like I said,

149:22there's a lot of reasons, just the timing,

149:24the integration with their business,

149:25what they're looking for.

149:27They're probably looking for more users,

149:28and I was looking to kind of cut some development effort,

149:31and they couldn't receive that as easily, I think.

149:33So I'm hoping, I'm really hopeful,

149:35and love the people there.

149:37- What's the idea behind OpenTeams?

149:39- So OpenTeams, I'm super excited about OpenTeams,

149:41because it's one of the, I mentioned my idea

149:44for investing directly in open source,

149:46so that's a concept called FerroSS.

149:48But one of the things we, when we started Quantsight,

149:50we knew we would do, is we'd develop products and ideas,

149:53and new companies might come out.

149:55At Anaconda, this was clear, right?

149:57Anaconda, we did so much innovation,

150:00that like five or six companies could have come out of that.

150:02And we just didn't structure it so they could.

150:05But in fact, they have, you look at Dask,

150:07there's two companies coming out of Dask.

150:08You know, Bokeh could be a company.

150:10There's like lots of companies that could exist

150:11off the work we did there.

150:13And so I thought, oh, here's a recipe for an incubation,

150:16a concept that we could actually spawn new companies,

150:19and new innovations.

150:20And then the idea has always been, well,

150:23money they earn should come back to fund

150:25the open source projects.

150:26So labs, I think there should be a lot of things

150:29like Quantsight labs.

150:30I think this concept is one that scales.

150:32You could have a lot of open source research labs.

150:35Along the way, so in 2018, when the bigger idea came,

150:37how to make open source investable, I said,

150:38oh, I need to create a venture fund.

150:41So we created a venture fund called Quantsight Initiate

150:43at the same time.

150:44It's an angel fund, really.

150:46We started to learn that process.

150:47How do we actually do this?

150:48How do we get LPs?

150:49How do we actually go in this direction and build a fund?

150:52And I'm like, every venture fund should have

150:54an associated open source research lab.

150:55There's just no reason.

150:56Like our venture fund, the carried interest portion of it

151:00goes to the lab.

151:01It directly will fund the lab.

151:03- That's fascinating, by the way.

151:04So you use the power of the organic formation of teams

151:06in the open source community, and then naturally,

151:10that leads to a business that can make money.

151:13- There are some, yeah, correct.

151:14- And then it always maintains and loops back

151:16to the open source. - Loops back to open source.

151:18Exactly, and to me, it's a natural fit.

151:19There's something, there's absolutely

151:20a repeatable pattern there.

151:22And it's also beneficial because, oh, I have natural

151:26connections to the open source,

151:27so I have an open source research lab.

151:29Like, they'll all be out there talking to people.

151:31And so we've had a chance to talk to a lot

151:34of early stage companies.

151:35And our fund focused on the early stage.

151:37So Quantsight has the services, the lab, the fund, right?

151:41In that process, a lot of stuff started to happen.

151:44They're like, oh, you know, we started to do recruiting

151:46and support and training.

151:48And I was starting to build a bigger sales team

151:50and marketing team and people besides just developers.

151:52And one of the challenges with that is you end up

151:54with different cultural aspects.

151:55You know, developers, you know, there's a,

151:58in any company you go to, you kind of go, look,

152:00is this a business led company, a developer led company?

152:03Do they kind of coexist?

152:04Are they, what's the interface between them?

152:06There's always a bit of a tension there,

152:07like we were talking about before.

152:08You know, what is the tension there?

152:10With OpenTeams, I thought, wait a minute,

152:11we can actually just create, like this concept

152:13of Quantsight plus labs, it's, well, we're,

152:16well, it's specific to the PyData ecosystem.

152:18The concept is general for all open source.

152:20So OpenTeams emerged as a, oh, we can create

152:23a business development company for many, many Quantsights,

152:27like thousands of Quantsights.

152:28And it can be a marketplace to connect,

152:30essentially be the enterprise software company

152:33of the future.

152:34If you look at what enterprise software wants

152:36from the customer side, and during this journey,

152:38I've had the chance to work and sell to lots of companies,

152:42Exxon and Shell and Davey Morgan, Bank of America,

152:45like the Fortune 100, and talk to a lot of people

152:47in procurement and see what are they buying

152:49and why are they buying?

152:50So, you know, I don't know everything,

152:51but I've learned a lot about, oh,

152:52what are they really looking for?

152:54And they're looking for solutions.

152:56They're constantly given products

152:58from the, from enterprise software.

153:01Here's open source, lead to enterprise software,

153:02now I buy it, and then they have to stitch it together

153:04into a solution.

153:05Open source is fantastic for gluing

153:07those solutions together.

153:08So, whereas they keep getting new platforms

153:11they're trying to buy, what most open source,

153:13what most enterprises want is tools

153:15that they can customize that are as inexpensive as they can.

153:18- Yeah, and so you always want to maintain

153:20the connection to the open source

153:21because that's-- - Yes, so open teams

153:23is about solving enterprise software problems.

153:26- Brilliant, brilliant idea, by the way.

153:28- With a connect, but we do it honoring the topology.

§22Transcript · 2:33:30–2:39:42

153:30We don't hire all the people.

153:32We are a network connecting the sales energy

153:35and the procurement energy, and we were on the business side

153:37get the deals closed, and then have a network of partners

153:40like QuantSite and others who we hand the deals to, right?

153:44To actually do the work, and then we have to maintain,

153:46I feel like we have to maintain

153:47some level of quality control

153:48so that the client can rely on open teams

153:50to ensure the delivery.

153:52It's not just, here's a lead, go figure that out,

153:54but no, we're gonna make sure you get what you need.

153:56- Yeah, by the way, it's such a skill,

153:58and I don't know if I have the patience,

154:00or ever will have the patience to talk

154:02to the business people, or more specific,

154:05I mean, there's all kinds of flavors of business people,

154:07or like marketing people.

154:10(laughing)

154:11- There's a challenge, I hear what you're saying,

154:13because I've had the same challenge, and it's true.

154:15There's sometimes you think, okay, this is way overwrought.

154:18- Yeah, but you have to become an adult,

154:20and you have to, 'cause the companies have needs.

154:22They have ways to make money,

154:24and they also wanna learn and grow,

154:26and it's your job to kind of educate them

154:28in the best way, like the value of open source, for example.

154:30- Right, and I'm really grateful for all my experiences

154:32over the past 14 years, understanding that side of it,

154:35and still learning, for sure,

154:37but not just understanding from companies,

154:38but also dealing with marketing professionals,

154:40and sales professionals, and people that make a career

154:42out of that, and understanding what they're thinking about,

154:44and also understanding, well, let's make this better.

154:46Like, we can really make a place,

154:47like OpenTeams, I see as the transmission layer

154:50between companies and open source communities,

154:53producing enterprise software solutions.

154:55Like, eventually, we wanna, like today,

154:57we're taking on SaaS, and MATLAB,

154:59and tools that we know we can replace for folks.

155:01Really, any time you have a software tool

155:03in an organization, where you have to do

155:05a lot of customization to make it work for you.

155:07Like, it's not you're just buying this thing

155:08off the shelf, and it works.

155:09It's like, okay, you buy the system,

155:11and then you customize it a lot,

155:12usually with expensive consultants,

155:15to actually make it work for you.

155:17All of those should be replaced by open source foundations,

155:19with the same customization. - You're doing

155:21such important work, such important work

155:23in these giant organizations that do exactly that,

155:26taking some proprietary software,

155:28and hiring a huge team of consultants that customize it,

155:31and then that whole thing gets outdated quickly.

155:33- Correct.

155:34- And so, I mean, that's brilliant.

155:36- Right. - So, the one solution

155:38to that is kind of what Tesla's doing a little bit of,

155:43which is basically build up a software engineering team.

155:46- Yeah. - Like, build a team

155:47from scratch. - Build a team from scratch.

155:48And companies that are doing it well,

155:49that's what they're doing right now.

155:50- Yeah, exactly. - Right, and that's okay.

155:52- And you're creating a topology for some of that.

155:54- You're right, you just don't have to do it.

155:55That's not the only answer, right?

155:57And so, other companies can access this,

155:58be more accessible.

155:59We usually, it's really, really safe.

156:01Open Team's the future of enterprise software.

156:03We're still early.

156:04Like, this idea just percolated over the past year

156:07as we've kind of grown QuantSite

156:08and realized the extensibility of it.

156:10We just finished in our seed round

156:12to help get more salespeople

156:15and then push the messaging correctly.

156:17And there's lots of tools we're building

156:19to make this easier.

156:20Like, we wanna automate the processes.

156:21We feel like a lot of the power

156:23is the efficiency of the sales process.

156:25There's a lot of wasted energy in small teams

156:29and the sales energy to get into large companies

156:31and make a deal.

156:32There's a lot of money spent on that process.

156:34- Creating the tools and processes for that sales.

156:36- So, make that super seamless.

156:38So, a single company can go,

156:39"Oh, I've got my contract with Open Team.

156:41"We've got a subscription they can get."

156:43They can make that procurement seamless.

156:45And then, the fact they have access

156:46to the entire open source ecosystem.

156:48And we have a, you know, so we have a part of our work

156:51that's embracing open source ecosystems

156:53and making sure we're doing things useful for them,

156:55we're serving them.

156:56And then, companies making sure

156:57they're getting solutions they care about.

156:59And then, figuring out which targets we have.

157:01You know, we're not taking on all of open source,

157:04all of enterprise software yet.

157:06But we're, you know, step by step.

157:07- Well, this feels like the future.

157:08The idea and the vision is brilliant.

157:10Can I ask you, why do you think Microsoft bought GitHub

157:14and what do you think is the future of GitHub?

157:16- Great point, great point.

157:17I thought it was a brilliant move.

157:18I think they did because Microsoft has always

157:20had a developer-centric culture.

157:22Like, they always have.

157:23Like, one of the things Microsoft's always done well

157:25is understand their power as developers, right?

157:27It's been, you know,

157:28Balmer didn't necessarily make a good meme

157:31about how he approached that.

157:32But, they're broadening that.

157:34I think that's why.

157:35Because they recognize GitHub is where developers are at.

157:38Right?

157:38And so--

157:39- But do they have a vision, like,

157:40open teams type of situation?

157:42- I don't think so, yet.

157:43- Are they just basically throwing money at developers

157:46to show their support?

157:47- I think so.

157:48- Without a topology, like you put it.

157:50Like, a way to leverage that,

157:53like, to give developers actual money.

157:55- Right.

157:56I don't think so.

157:57I think they're still,

157:58it's an enterprise software company.

157:59And they make a bunch of money.

158:00They make a bunch of games.

158:01They have a, you know,

158:02they're a big company and they sell products.

158:03I think part of it is,

158:04they know there's opportunity to make money from GitHub.

158:07Right?

158:08There's definitely a business there, you know,

158:10to sell to developers,

158:11or to sell to people using development.

158:13I think there's part of that.

158:14I think part of it is also,

158:15there's, they had definitely wanted to recognize

158:18that you need to value open source

158:20to get great developers.

158:21Which is an important concept

158:23that was emerging over the past 10 years.

158:25That, you know,

158:26PyData, we were able to convince JP Morgan

158:29to support PyData because of that fact.

158:31Right?

158:32That was where the money for them

158:33putting a couple hundred thousand

158:34into supporting PyData for several conferences

158:36was they want developers.

158:37And they realized that developers

158:39want to participate in open source.

158:40So, enterprise software folks

158:42don't always understand how their software gets used.

158:44Having spent a lot of time on the floors

158:46at JP Morgan, at InShell, at ExxonMobil,

158:49you see, oh, these companies have large development teams.

158:52And then you're,

158:53they're kind of dealing with the,

158:55what's being delivered to them.

158:56So I really feel kind of a privilege

158:58that I had a chance to learn some of these people

159:00and see what they're doing.

159:01And even work alongside them, you know, as a consultant,

159:05using my, using open source and trying to think,

159:07how do we make this work

159:08inside of our large organization?

159:09- Some of it is actually, for a large organization,

159:13some of it is messaging to the world

159:14that you care about developers

159:16and you're the cool, you care.

159:18Like, for example, like if Ford,

159:21'cause I talked to them,

159:22like car companies, right?

159:23They want to attract, you know,

159:26you want to take on Tesla

159:28and autopilot, you want to take that, right?

159:29And so what do you do there?

159:31You show that you're cool.

159:32Like you try to show off that you care about developers

159:36and they have a lot of trouble doing that.

159:39And like one way, I think like Ford should have bought GitHub

159:42but it's just a show off.

§23Transcript · 2:39:43–2:47:21

159:43- Yeah, that's a better, yeah.

159:45- Like these old school companies

159:46and it's in a lot of different industries.

159:49There's probably different ways.

159:51It's probably an art to show that you care to developers

159:54and the developers, it's exactly what you,

159:57like for example, just spitballing here,

160:00but like Ford or somebody like that

160:02could give a hundred million dollars

160:05to the development of NumPy

160:07and like literally look at like the top most popular projects

160:12in Python and just say, we're just gonna give money.

160:17- Right.

160:17- Like that's gonna immediately make you cool.

160:20- They could actually, yeah.

160:21And in fact, they set up NumFocus to make it easy.

160:24But the challenge was,

160:26is also you have to have some business development.

160:28Like it's a bit of a seeding problem, right?

160:31And you look at how I've talked to the folks

160:32at Linux Foundation, know how they're doing it.

160:34I know how, and starting NumFocus

160:36'cause we had two babies in 2012.

160:39One was Anaconda, one was NumFocus, right?

160:41And they were both important efforts.

160:42They had distinct journeys

160:44and super grateful that both existed

160:46and still grateful both exist.

160:47But there's different energies in getting donations

160:51as there is getting, this is important to my business.

160:55Like I'm selling you something that,

160:57this is a, I'm gonna make money this way.

161:00Like if you can tie it,

161:01if you can tie the message to an ROI for the company,

161:04it becomes a brainer. - That's more effective.

161:05- It's much more effective, right?

161:07So, and there are rational arguments to make.

161:09I've tried to have conversations with marketing,

161:11especially marketing departments.

161:12Like very early on, it was clear to me that,

161:14oh, you could just take a fraction of your marketing budget

161:18and just spend it on open source development

161:20and you get better results from your marketing.

161:23Like, because--

161:24- What are those, can I, sorry,

161:26I'm gonna try not to go on a rant here.

161:27What have you learned from the interaction

161:29with the marketing folks on that kind of,

161:31'cause you gave a great example of something

161:34that will obviously be a much better investment

161:37in terms of marketing is supporting open source projects.

161:40- The challenge is not dissimilar

161:41from the challenge you have in academia

161:44at the different colleges, right?

161:46Knowledge gets very specific and very channeled, right?

161:50And so people get, they get a lot of learning

161:52in the thing they know about.

161:53And it's hard then to bridge that

161:56and to get them to think differently enough

161:58to have a sense that you might have something to offer.

162:02'Cause it's different.

162:03It's like, well, how do I implement that?

162:04How do I, what do I do with that?

162:06Do I, which budget do I take from?

162:07Do I slow down my spend on Google ads

162:10or my spend on Facebook ads?

162:11Or do I not hire a content creator?

162:13And so like, there's an operational aspect to that

162:16that you have to be the CMO, right?

162:19Or the CEO, you have to get the right level.

162:21- So you have to hire at a high position level

162:24where they care about this and they specialize.

162:26- Or they won't know how, right?

162:27And because you can also do it very clumsily, right?

162:30And I've seen, 'cause you can.

162:32You absolutely have to honor and recognize

162:33the people you're going to and the fact

162:36that if you just throw money at them,

162:37it could actually create more problems.

162:39- Can I just say, this is not you saying.

162:40Can I just, 'cause I just need, I need to say this.

162:44I've been very surprised how often marketing people

162:49are terrible at marketing.

162:51I feel like the best marketing is doing something novel

162:55and unique that anticipates the future.

162:58It feels like so much of the marketing practice

163:01is like what they took in school,

163:04or maybe they're studying for what was the best thing

163:06that was done in the past decade.

163:08And they're just repeating that over and over

163:10as opposed to innovating, like taking the risk.

163:13To me, marketing is taking the big risk.

163:17- That's a great point.

163:17- And being the first one to risk.

163:18- Yeah, there's an aspect of data observation

163:21from that risk, right, that's, I think,

163:23'cause shared what they're doing already.

163:25But it absolutely, it's about, I think it's content.

163:27Like, there's this whole world on content marketing

163:30that you could almost say, well, yeah, it can get over,

163:33you can get inundated with stuff that's not relevant to you.

163:36Whereas what you're saying would be highly relevant

163:39and highly useful and highly beneficial.

163:41- Yeah, but it's a risk.

163:42I mean, that's why I sort of, there's a lot

163:45of innovative ways of doing that.

163:46Tesla's an example of people that basically

163:48don't do marketing.

163:49They do marketing in a very, like,

163:52it's like Elon hired a person who's just good at Twitter

163:55for running Tesla's Twitter account.

163:57(laughing)

163:58- No, right, right.

163:59- I mean, that's exactly what you wanna be doing.

164:00You want to be constantly innovating in--

164:03- Right, there's an aspect of telling,

164:04I mean, I've definitely seen people doing great work

164:06where you're not talking about it.

164:08Like, I would say that's actually a problem

164:09I have right now with Quansight Labs.

164:11Quansight Labs has been doing amazing work,

164:12really excited about it, but we have not been talking

164:14about it enough.

164:15We haven't been--

164:16- And there's different ways to talk about it.

164:17There's different ways to, there's different channels

164:19through which to communicate.

164:20There's also, like, I'll just throw some shade

164:25at companies I love.

164:26So for example, iRobot, I just had a conversation

164:30with them, they make Roombas.

164:31- Sure.

164:32- And I think I love, they're incredible robots,

164:35but like, every time they do, like, advertisement,

164:38not advertisement, but like, marketing type stuff,

164:41it just looks so corporate.

164:44And to me, the incredible, I may be wrong

164:48in the case of iRobot, I don't know,

164:50but to me, when you're talking about engineering systems,

164:53it's really nice to show off the magic of the engineering

164:56and the software and all the geniuses behind this product

165:01and the tinkering and like, the raw authenticity

165:06of what it takes to build that system

165:07versus the marketing people who want to have, like,

165:11pretty people, like, standing there all pretty

165:13with the robots, like, moving perfectly.

165:15So to me, there's some aspect, it's like,

165:18speaking to the hackers, you have to throw some bones,

165:22some care towards the engineers, the developers,

165:26because there's some aspect, one, for the hiring,

165:29but two, there's an authenticity to that kind

165:32of communication that's really inspiring

165:34to the end user as well.

165:36Like, if they know that brilliant people,

165:38the best in the world are working at your company,

165:40they start to believe that that product

165:42that you're creating is really good.

165:43- It's interesting, 'cause your initial reaction would be,

165:45wait, there's different users here, why would you do that?

165:48You know, my wife bought a Roomba,

165:50and she loves developers, she loves me,

165:52but she doesn't care about that hacker culture.

165:56So essentially what you said is actually the authenticity,

165:59'cause everyone has a friend, everyone knows people,

166:01there's word of mouth, I mean, if you--

166:02- Word of mouth is so, so powerful.

166:04- Yeah, exactly, that's interesting.

166:05- And then--

166:05- 'Cause I think it's the lack of that realization,

166:07there's this halo effect.

166:08- Right, and also like--

166:09- That influences your general marketing, interesting.

166:11- For some stupid reason, I do have a platform,

166:14and it seems that the reason I have a platform,

166:16many others like me, millions of others,

166:19is like the authenticity,

166:21and like we get excited naturally about stuff.

166:23And like, I don't wanna get excited

166:25about that iRobot video, because it's boring,

166:29it's marketing, it's corporate,

166:30as opposed to, I wanted to do some fun,

166:33this is me, like a shout out to iRobot,

166:36is they're not letting me get into the robot.

166:39- Yeah, well, there's an aspect of,

166:40they could be benefiting from a culture of modularity,

166:44like add-ons, and that could actually dramatically help.

166:47You've seen that over history, I mean,

166:49Apple is an example of a company like that,

166:51or the, like, I can see what your point is,

166:54is that you have something that needs to be,

166:56it needs to be adopted broadly,

166:58the concept needs to be adopted broadly.

167:00And if you wanna go beyond this one device,

167:01you need to engage this community.

167:04- Yeah, and connecting to the open source, as you said.

167:07I gotta ask you, you're a programmer,

167:11one of the most impactful programmers ever.

167:14You've led many programmers, you lead many programmers.

167:18What are some, from a programmer perspective,

167:21what makes a good programmer?

§24Transcript · 2:47:23–2:54:35

167:23What makes a productive programmer?

167:25Is there a device you can give

167:27to be a great programmer this way?

167:27- That's a great, great question.

167:30And there are times in my life,

167:31I'd probably answer this even better

167:32than I hope maybe give an answer today.

167:35'Cause I thought about this numerous times,

167:36like right now I've spent on so much time

167:38recently hiring salespeople that--

167:40- That your mind is a little bit on something else.

167:43- On something else.

167:44But I reflected on the past, and also,

167:47you know, I have some really, the only way I can do this,

167:49I have some really great programmers that I work with

167:51who lead the teams that they lead.

167:53And my goal is to inspire them and hopefully help them,

167:56encourage them, and help them encourage with their teams.

167:59I would say there's a number of things, a couple things.

168:01One is curiosity.

168:03Like I think a programmer without curiosity is mundane.

168:08Like you'll lose interest, you won't do your best work.

168:12So it's an affect, it's sort of,

168:13are you, have some curiosity about things.

168:16I think two, don't try to do everything at once.

168:19Recognize that you're, we're limited as humans.

168:21You're limited as a human.

168:23And each one of us are limited in different ways.

168:24You know, we all have our different strengths and skills,

168:26so it's adapting the art of programming to your skills.

168:29One of the things that always works

168:31is to limit what you're trying to solve, right?

168:33So if you're part of a team,

168:36usually maybe somebody else has put the architecture

168:38together and they've gotten given a portion for you

168:40if you're young.

168:41If you're not part of a team,

168:43it's sort of breaking down the problem into smaller parts

168:46is essential for you to make progress.

168:48It's very easy to take on a big project

168:50and try to do it all at once and you get lost

168:52and then you do it badly.

168:53And so thinking about, you know,

168:57very concretely what you're doing,

168:59defining the inputs and outputs,

169:01defining what you want to get done.

169:03Even just talking about that and like writing down

169:07before you write code, just what are you trying to accomplish?

169:09I mean, very specific about it really, really helps.

169:12I think using other people's work, right?

169:17Don't be afraid that somehow you're,

169:20like you should do it all.

169:21Like nobody does.

169:23- Stand on the shoulders of giants.

169:24- Stand on the shoulders of giants.

169:25- And copy and paste from Stack Overflow.

169:26- Copy and paste from Stack Overflow.

169:27It's like, but don't just copy and paste.

169:30It's particularly relevant in the era of codex

169:31and the auto-generated code,

169:34which is essentially I see as an indexing of Stack Overflow.

169:36- Right, exactly.

169:37- It's like--

169:38- It's a search engine.

169:39- It's a search engine over Stack Overflow basically.

169:41So it's not, I mean, we've had this for a while.

169:43But really you want to cut and paste, but not blindly.

169:47Like absolutely have cut and paste to understand,

169:51but then you understand, oh, this is what this means.

169:53Oh, this is what it's doing.

169:54And understand as much as you can.

169:56So it's critical, that's where the curiosity comes in.

169:59If you're just blindly cutting and pasting,

170:01you're not gonna understand.

170:01And so understand, and then be sensitive to hype cycles.

170:06Right, every few often there's always a,

170:10oh, test-driven development's the answer.

170:12Oh, object-oriented's the answer.

170:13Oh, there's always an answer.

170:15You know, agile's the answer.

170:18Be cautious of jumping onto a hype cycle.

170:20Like likely there's signal, like there's a thing there

170:23that's actually valuable you can learn from,

170:25but it's almost certainly not the answer

170:27to everything you need.

170:28- What lessons do you draw from you having created NumPy

170:32and SciPy, like in service of sort of answering

170:36the question of what it takes to be a great programmer

170:38and giving advice to people?

170:40How can you be the next person to create a SciPy?

170:42- Yeah, so one is listen.

170:44- To? - Listen.

170:46- To who?

170:47- To people that have a problem, right?

170:51Which is everybody, right?

170:52But listen and listen to many.

170:54And then try to, and then do.

170:57Like you're gonna have to do an experiment.

170:59You know, do, fall down.

171:00Don't be afraid to fall down.

171:01Don't be afraid, the first thing you do

171:04is probably gonna suck, and that's okay, right?

171:07It's honestly, I think iteration is the key to innovation.

171:11And it's almost that psychological hesitation we have

171:16to just iterate.

171:18Like yeah, we know it's not great,

171:20but next time it'll be better.

171:22I mean, just keep learning and keep improving

171:24and keep improving.

171:25So it's an attitude.

171:27And then it doesn't take intense concentration, right?

171:31Good things don't happen just,

171:34it's not quite like TikTok or like Facebook.

171:38You can't scroll your way to good programming, right?

171:40There are sincere hours of deep,

171:44don't be afraid of the deep problem.

171:46Like often people will run away from something

171:47because oh, I can't solve this.

171:49And you might be right, but give it an hour.

171:51Give it a couple of hours and see.

171:53And just five minutes, not gonna give you that.

171:56- Was it lonely when you were building SciPy and NumPy?

172:00- Hugely, yeah, absolutely lonely in the sense of

172:04you had to have an inner drive.

172:05And that inner drive for me always comes from,

172:07I have to see that this is right in some angle.

172:11I have to believe it, that this is the right approach,

172:13the right thing to do.

172:14With SciPy, it was like, oh yeah,

172:16the world needs libraries and Python.

172:19Clearly Python's popular enough

172:20with enough influential people to start.

172:22And it needs more libraries.

172:24So that is a good in and of itself.

172:26So I'm gonna go do that good.

172:28So find a good, find a thing that you know is good

172:30and just work on it.

172:32So that has to happen, and it is.

172:34And you kind of have to have enough realization

172:37of your mission to be okay with the naysayer

172:40or the fact that not everybody joins you up front.

172:42In fact, one thing I've talked to people a lot,

172:43I've seen a lot of projects come and some fail.

172:45Not everything I've done has actually worked perfectly.

172:47I've tried a bunch of stuff that, okay,

172:49that didn't really work, or this isn't working and why.

172:51But you see the patterns.

172:53And one of the key things is you can't even know

172:57for six months, I say 18 months right now.

173:00If you're just starting a new project,

173:01you gotta give it a good 18-month run

173:03before you even know if the feedback's there.

173:05Like, you're not gonna know in six months.

173:07You might have the perfect thing,

173:08but six months from now, it's still kinda still emerging.

173:11So give it time, 'cause you're dealing with humans,

173:13and humans have an inertia energy

173:15that just doesn't change that quickly.

173:18So--

173:18- Let me ask a silly question.

173:20But, you know, like you said,

173:23you're focused on the sales side of things currently.

173:26But back when you were actively programming,

173:28maybe in the '90s, you talked about IDs.

173:31What's your, a setup that you have that brings you joy?

173:36Keyboard, number of screens, Linux?

173:39- I do still like to program some,

173:40I just not as much as I used to.

173:42I have two projects I'm super interested in,

173:44trying to find funding for 'em,

173:45trying to figure out some good teams for 'em,

173:47but I could talk about those.

173:48But what I, yeah, what, I'm an Emacs guy.

173:51- Great, thank the superior editor, everybody.

173:56I've got, I don't often delete tweets,

173:58but one of the tweets I deleted

174:00when I said Emacs was better than Vim,

174:02and then the hate I got from them.

174:04- It is.

174:05- I was like, I'm walking away from this.

174:07I bored.

174:07- I do too, I don't push it.

174:09I mean, I'm not.

174:09- I'm just joking, of course.

174:11- Yeah, exactly, it's kinda like,

174:12but people do take the editor seriously, right?

174:14- I did as a joke.

174:15- It's your life.

174:16- It is, but there's something beautiful to me about Emacs,

174:20but for people that love Vim,

174:22there's something beautiful to them about that.

174:23- There is, I mean, I do use Vim for quick editing,

174:26like command line, if I send quick editing,

174:27I will still sometimes use it, but not much.

174:30Like, it's simple, corrective,

174:31corrective single edit character.

174:32- So when you were developing SciPy,

174:34you were using Emacs?

174:34- Emacs, yep.

174:35SciPy and NumPy are all written in Emacs on a Linux box,

§25Transcript · 2:54:39–3:02:22

174:39and CVS, and then SVN, version control.

174:43Git came later.

174:44I love distributed branch stuff.

174:48I think Git is pretty complicated, but I love the concept.

174:51And also, of course, GitHub, and then GitLab,

174:55make Git definitely consumable, but that came later.

174:59- Did you ever touch Lisp at all?

175:01What were your emotional feelings about all the parentheses?

175:04- Great question.

175:05So I find myself appreciating Lisp today

175:08much more than I did early,

175:09'cause when I came to programming,

175:10I knew programming, but I was a domain expert, right?

175:12And to me, the parentheses were in the way.

175:15It's like, "Wow, it's just all this."

175:17Like, it just gets in the way of my thinking

175:19about what I'm doing, so why would I have all these, right?

175:22That was my initial reaction to it.

175:24You know, and now as I appreciate kind of the structure

175:27that kind of naturally maps to a logical thinking

175:30about a program, I can appreciate them, right?

175:32And why it's actually, you could create editors

175:35that make it not so problematic, right, honestly.

175:40So I actually have a much more appreciation of Lisp

175:43and things like Clojure, and there's Hy-Vee,

175:44which is a Python, you know, a Lisp

175:46that compiles the Python bytecode.

175:48I think it's challenging.

175:50Like, typically, these languages are, you know,

175:53I even saw a whole data science programming system in Lisp

175:56that somebody created, which is, you know, cool.

175:58But again, I think it's the lack of recognition

176:00of the fact that there exists

176:02what I call occasional programmers.

176:04People that are never gonna be programmers for a living.

176:05They don't want to have all this cuteness in their head.

176:08They want just, you know, it's why BASIC, you know,

176:11Microsoft had the right idea with BASIC

176:14in terms of having that be the language of Visual BASIC,

176:17the language of Excel and SQL Server.

176:21They should have converted that to Python 10 years ago.

176:23Like, the world would be a better place if they had, but.

176:27- There's also, there's a beauty and a magic

176:29to the history behind a language in Lisp.

176:31You know, some of the most interesting people

176:34in the history of computer science

176:35and artificial intelligence have used Lisp, so.

176:38- Yes.

176:39- You feel.

176:40- Well, it's back to that language.

176:41When you have a language, you can think in it.

176:43- Yeah.

176:43- And it helps you think better.

176:44- And it attracts certain kinds of people

176:45that think in a certain kind of way,

176:46and then that's there.

176:48Okay, so what about, like, small laptop

176:50with a tiny keyboard, or is there like three screens?

176:55- You know, good question.

176:55I've never gotten into the many screens, to be honest.

176:58I mean, and maybe it's because in my head,

177:00I kind of just, I just swap between windows.

177:03Like, partly because I guess I really can't process

177:07three screens at once anyway.

177:09Like, I just am looking at one, and I just flip.

177:12You know, I flip an application open.

177:14- So what about--

177:15- Where it's really helpful is actually

177:17when I'm trying to, you know, here's data,

177:19and I want to input it from here.

177:19Like, this is the only time I really need another screen.

177:22- So now, because you're both a developer,

177:24lead developers, but then there's also these businesses,

177:27and there's salespeople,

177:29and you're working with large companies.

177:30- Operations people, hiring people, yeah.

177:32- The whole thing.

177:33Which operating system is your favorite still,

177:35at this point?

177:37- So Linux was the early days.

177:38- So yeah, I love Linux as a server side,

177:41and it was early days I had my own Linux desktop.

177:44I've been on Mac laptops for 10 years now.

177:47- Yeah, this is what leadership looks like.

177:50(laughing)

177:50You switch to Mac.

177:52Okay, great.

177:53- Pretty much, I mean, just the fact that I had

177:56to do PowerPoints, I had to do presentations,

177:58and you know, plug in, I just couldn't mess

178:01with plugging in laptops.

178:02It wouldn't project, and yeah.

178:04- So you mentioned, so Quonset Labs, and things like that.

178:08Can you give advice on how to hire great programmers,

178:13and great people?

178:14- Yeah, I would say, produce an open source project.

178:18- Yeah.

178:19- Get people contributing to it, and hire those people.

178:21- Yeah.

178:22I mean, you're doing it sort of,

178:25you may be perhaps a little biased,

178:27but that's probably 100% really good advice.

178:30- I find it hard to hire.

178:31I still find it hard to hire.

178:32Like, in terms of, I don't think,

178:35it's not hard to hire if I've worked with somebody

178:37for a couple of weeks.

178:39But an hour or two of interviews, I have no idea.

178:43- So that instinct, that radar of knowing

178:47if you're good or not, you've found

178:49that you're still not able to really--

178:50- It's really hard, I mean, the resume can help,

178:53but again, the resume is like a presentation

178:55of the things they want you to see,

178:56not the reality of, and there's also,

179:01you have to understand what you're hiring for.

179:03There are different stages and different kinds of skills,

179:06and so it isn't just a, one of the things

179:09I talk a lot about internally at my company

179:12is just that the whole idea of measuring ourselves

179:16against a single axis is flawed,

179:18'cause we're not, it's a multidimensional space,

179:20and how do you order a multidimensional space?

179:22There isn't one ordering.

179:23So this whole idea, you immediately have projected

179:26into a thing, and you're talking about hiring

179:28or best or worst or better or not better.

179:30So what is the thing you're actually needing,

179:33and you can hire for that.

179:35There is such a thing, generally I really value people

179:39who have the affect, that care about open source.

179:42Like so in some cases, their affinity to open source

179:45is simply kind of a filter of an affect.

179:48However, I have found this interesting dichotomy

179:52between open source contributors and product creation.

179:57I don't know if it's fully true,

180:00but there does seem to be the more experience,

180:04the more affect somebody has to an open source community,

180:08the less ability to actually produce product that they have.

180:11But the opposite's kind of true too.

180:13The more product focused are, I find a lot of people,

180:16I've talked to a lot of people

180:16who produce really great products,

180:18and they have a, they're looking over

180:20the open source communities,

180:21kind of wanting to participate and play,

180:23but they've played here, and they do a great job here,

180:25and then they don't necessarily have some of the same.

180:29Now I don't think that's entirely necessary.

180:32I think part of it is cultural, how they've emerged.

180:34'Cause one of the things that open source communities

180:36often lack is great product management,

180:39like some product management energy.

180:40- That's brilliant, but you want both of those energies

180:43in the same place together.

180:44- Yes, you really do.

180:45And so it's a lot of it's creating these teams of people

180:48that have these needed skills and attributes that are hard.

180:51And so one of the big things I look for

180:54is somebody that fundamentally recognizes

180:56their need to learn.

180:57Like one of the values that we have

180:59in all of the things we do is learning.

181:01If somebody thinks they know it all,

181:04they're gonna struggle.

181:06- And some of that is just,

181:07there's more basic things like humility,

181:10just being humble in the face of

181:13all the things you don't know,

181:14and that's step one of learning.

181:15- That's step one of learning, right?

181:16And I've spent a lot of time learning, right?

181:20Other people have spent a lot more time,

181:21but I've spent a lot of time learning.

181:23My whole goal was to get a PhD because I love school,

181:26and I wanted to be a scientist.

181:28And then what I found is what's been written

181:30about elsewhere as well is the more I learned,

181:32the more I didn't know.

181:33The more I realized, man, I know about this,

181:37but this is such a tiny thing in the global scope

181:40of what I might wanna know about.

181:41So I need to be listening a whole lot better

181:43than I am just talking.

181:46That's changed a little bit, actually.

181:48My wife says that I used to be a better listener.

181:50Now that I'm so full of all these ideas I wanna do,

181:52she kind of says, "You gotta give people time to talk."

181:55- So you've succeeded on multiple dimensions.

181:58So one is the tenure track faculty.

182:01The other is just creating all these products,

182:03then building up the businesses,

182:04then working with businesses.

182:06Do you have advice for young people today

182:09in high school and college of how to live a life

182:13as nonlinear and as successful as yours?

182:17- Nonlinear.

182:18- A life that they could be proud of?

182:21- Well, Lex, that's a super compliment.

182:22I'm humbled by that, actually.

§26Transcript · 3:02:24–3:05:18

182:24I would say a life they can be proud of,

182:27honestly, one thing that I've said to people is,

182:30first, find people you love and care about them.

182:33Family matters to me a lot.

182:36And family means people you love and have committed to.

182:38So it can be whatever you mean by that,

182:42but you need to have a foundation.

182:45So find people you love and wanna commit to and do that,

182:47'cause it anchors you in a way that nothing else can.

182:52And then you find other things.

182:55And then from out there, you find other kinds of things

182:57you can commit to, whether it's ideas or people

183:01or groups of people.

183:03So especially in high school, I would say,

183:06don't settle on what you think you know.

183:08Give yourself 10 years to think about the world.

183:13I see a lot of high school students

183:15who seem to know everything already.

183:17I think I did, too.

183:18I think it's maybe natural.

183:20But recognize that the things you care about,

183:23you might change your perspective over time.

183:26I certainly have over time.

183:28I was really passionate about one specific thing

183:30and that's kind of softened.

183:32I was a big, I didn't like the Federal Reserve.

183:35We can have a longer conversation

183:38about monetary policy and finances,

183:40but I'm a little more nuanced

183:44in my perspective at this point.

183:46But that's one area where you learn about something

183:50and go, oh, I wanna attack it.

183:52Build, don't destroy.

183:54Build, so often the tendency is to not like something,

183:58they wanna go attack it.

183:59Build something, build something to replace it.

184:02Build up, attract people to your new thing.

184:05It'd be far better.

184:08You don't need to destroy something

184:10to build something else.

184:11So that's, I guess, generally.

184:14And then definitely curiosity.

184:19Follow your curiosity.

184:20And let it, don't just follow the money.

184:24- And all of that, like you said,

184:25is grounded in family, friendship, and ultimately love.

184:30- Yes.

184:31- Which is a great way to end it.

184:34Travis, you're one of the most impactful people

184:37in the engineering and the computer science

184:38in the human world.

184:39So I truly appreciate everything you've done.

184:43And I really appreciate that you would spend

184:45your valuable time with me.

184:46It was an honor.

184:47- It was a real pleasure for me.

184:48I appreciate that.

184:50- Thanks for listening to this conversation

184:52with Travis Oliphant.

184:53To support this podcast,

184:55please check out our sponsors in the description.

184:57And now, let me leave you with something

185:00that in the programming world is called Hodgkin's Law.

185:04Every sufficiently advanced Lisp application

185:08will eventually be re-implemented in Python.

185:11Thank you for listening, and hope to see you next time.

185:15(upbeat music)

185:18(upbeat music)

— 读到这里,多懂一点。 —