Travis Oliphant on NumPy, SciPy and Open Source
·3h 11m
Shared point
–
Programming, language and scientific computing
Lex Fridman speaks with Travis Oliphant about his work on Python’s scientific ecosystem and the experiences that shaped it.
Learning to program and finding Python
- Oliphant recalls writing BASIC as a child, developing an interest in mathematics and problem-solving, and later finding Python more readable and accessible than languages such as Perl.
- They discuss how programming languages shape thought, and how array-based programming lets users think in terms of multidimensional data.
- Oliphant describes encountering Numeric while studying biomedical engineering and using Python for medical-imaging research.
SciPy and the open-source community
- Oliphant explains that SciPy grew from tools he needed for scientific work, including integration and differential-equation solvers, and from efforts to make Python useful as a scientific environment.
- He recalls early releases, community contributions, the difficulty of installing scientific software, and the tension between open-source collaboration and the product management needed to bring projects together.
- He describes teaching engineering, the development of SciPy, and the challenge of balancing academic work with maintaining software.
NumPy and the array ecosystem
- Oliphant says a split between Numeric and Numarray prompted him to build NumPy as a shared array library. He discusses its design, backward compatibility, data types, broadcasting and indexing, as well as the contributors who helped it gain adoption.
- They consider how array interfaces relate to TensorFlow and PyTorch, and efforts to establish a shared API across array libraries.
- Oliphant discusses shortcomings in NumPy’s type design, the difficulty of supporting GPUs in the existing ecosystem, and the need to fund ongoing maintenance and development.
Open source, economics and entrepreneurship
- Oliphant recounts studying economics while trying to understand how open-source work could support a livelihood. He reflects on incentives, prices, entrepreneurship and the challenges of creating ways to reward open-source contributors.
- He describes leaving academia for Enthought, writing and selling Guide to NumPy to fund a graduate student, and later starting Anaconda with Peter Wang.
- The conversation covers commercial models for open source, the role of companies and nonprofits, and the balance between serving developers and meeting business needs.
Numba, Anaconda and Conda
- Oliphant explains Numba’s goal of compiling a subset of Python for numerical work, its use of LLVM, and its development and funding, including an early GPU-focused commercial offering.
- He describes Anaconda’s aim to make Python analytics work at scale and names projects that emerged around it, including Dask, Bokeh, Conda and JupyterLab.
- The discussion turns to Conda and Python packaging: cross-platform installation, compiled dependencies, the different needs of developers and end users, and how Conda and pip can be used together.
QuantSight, OpenTeams and supporting projects
- Oliphant outlines QuantSight’s consulting work and QuantSight Labs’ support for open-source projects, including community work orders for work on projects such as NumPy and SciPy.
- He describes OpenTeams as a network connecting organizations with open-source providers, and explains the idea of linking commercial activity and investment back to open-source work.
- They discuss corporate support for open source, developer communities, enterprise software and the role of marketing in making technical work understood.
Programming practice, leadership and advice
- Oliphant reflects on Python’s evolution, Guido van Rossum’s approach to contributors, criticism and leadership, and the difficulty of major transitions such as Python 2 to Python 3.
- They discuss performance trade-offs in NumPy, vectorization, universal functions and Numba, alongside the benefits and limits of abstractions such as arrays and dictionaries.
- Oliphant’s advice for programmers includes curiosity, breaking problems into smaller pieces, learning from code rather than copying blindly, listening to users, iterating and giving projects time to find an audience.
- He also discusses hiring, the value of humility and continued learning, and advises young people to build rather than only criticize, follow their curiosity, and invest in relationships and family.