Our friends at Cult.Repo launch their epic Python documentary on August 28th, 2025! To celebrate, we sat down with Travis Oliphant –creator of NumPy, SciPy, and more– to get his perspective on how Python took over the software world.
Stick around for the twist ending! We set aside Python and dissect Travis' big idea to make open source projects financially sustainable through direct investment. :link: https://changelog.fm/656
Ch | Start | Title | Runs |
---|---|---|---|
01 | 00:00 | This week on The Changelog | 01:05 |
02 | 01:05 | Sponsor: Depot | 02:12 |
03 | 03:17 | Start the show! | 01:12 |
04 | 04:28 | Python dramas | 01:56 |
05 | 06:24 | Python as ecosystem | 02:36 |
06 | 09:00 | Come for the language... | 02:46 |
07 | 11:46 | Dongle gate | 01:06 |
08 | 12:52 | Coming to Python | 09:42 |
09 | 22:35 | The SciKits emerge | 03:00 |
10 | 25:35 | Key language features | 02:19 |
11 | 27:53 | How features get in | 02:16 |
12 | 30:09 | NumPy's story | 02:30 |
13 | 32:39 | Why not Ruby? | 05:22 |
14 | 38:01 | Early adopters | 03:27 |
15 | 41:28 | Sponsor: Auth0 | 01:29 |
16 | 42:56 | Someone had to do NumPy | 01:26 |
17 | 44:22 | NumPy's success | 01:05 |
18 | 45:27 | Based on a true story | 01:00 |
19 | 46:27 | Python in industry | 02:02 |
20 | 48:29 | Goldman Sachs messed up | 02:29 |
21 | 50:58 | The pain of closed source | 02:02 |
22 | 53:00 | Community demand | 03:56 |
23 | 56:56 | Google Borg / K8s | 00:52 |
24 | 57:47 | Corporate constraints | 03:10 |
25 | 1:00:58 | Open source as resumé | 03:15 |
26 | 1:04:12 | Thoughts on Mojo | 09:58 |
27 | 1:14:11 | FairOSS | 08:35 |
28 | 1:22:46 | Incentives | 02:05 |
29 | 1:24:51 | Are you doing this? | 00:36 |
30 | 1:25:27 | Impedance mismatch? | 01:12 |
31 | 1:26:39 | Imagine it running | 01:53 |
32 | 1:28:32 | Selling the idea | 03:45 |
33 | 1:32:17 | Scrutinizing FairOSS | 04:32 |
34 | 1:36:49 | Clear next steps | 01:41 |
35 | 1:38:31 | Public benefit corps | 03:26 |
36 | 1:41:57 | Drumming up interest | 01:32 |
37 | 1:43:29 | Raising the stakes | 02:14 |
38 | 1:45:43 | tea.xyz | 01:07 |
39 | 1:46:50 | Adam shares Adam shares an idea | 01:25 |
40 | 1:48:15 | Adam shares another idea | 04:08 |
41 | 1:52:23 | Wrapping up | 00:15 |
42 | 1:52:38 | Closing thoughts | 01:40 |
Great episode. He mentioned Julia just once but I think you guys should interview somebody from the Julia team. Julia is rapidly taking over python's place in scientific computing especially amongst the graduate students.
As for his idea of funding OS software I remain highly pessimistic. His vision requires an incredible amount of coordination and good will amongst tens of thousands of people most of whom are primarily driven by the profit motive.
I think I have an idea of how we could fund OSS and it's much simpler. Make a packaging system that requires payment (something like npm, rubygems etc). People can host their projects on the system and if you want to pull something you get charged every time you pull it. You get charged for every dep you pull down so if my code costs X and I have a depdency that costs Y you get charged X+Y. The package manager calculates the total cost so you can look at it before you decide to use it. All payments are automatic via blockchain premined currency.
Easy, simple, automatic.
Starting the documentary. Just noticed the pod is longer than it :sweat_smile:
I avoid Python as a personal choice (why significant whitespace!? why!?), but I will definitely watch the documentary
I started using it a lot a couple years ago... I wasn't a fan at first but I like it more and more. My main complaint is that it's not strongly typed, but that's a personal preference :smile:
I occasionally have to dabble in python but I'm not a fan of it at all. The whole whitespace forms the semantic structure part of it I find frustrating as well as the dynamic typing and poor performance. I can understand why the data science people like it's ergonomics but coming from a computer science background I don't enjoy it.
@Lars Ellingsen I think Python is one of the best examples of a strongly typed language! Here's an example:
>>> 'hi' + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
And here's weakly-typed Javascript:
> 'hi' + 1
'hi1'
Daniel Buckmaster said:
Lars Ellingsen I think Python is one of the best examples of a strongly typed language! Here's an example:
>>> 'hi' + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str
And here's weakly-typed Javascript:
> 'hi' + 1 'hi1'
This is nitpicky but that JS example is type coercion - not strongly vs. weakly typed. You can change a variable in Python to be any other type at any time (technically "dynamically" typed I think, but basically the same)
In practical terms, my main issue with this is that the 'hi' + 1
example you used doesn't cause a compile-time warning, but only occurs at run-time
A strongly typed language like Java or C# wouldn't even let you compile that example. I love getting errors as early as possible :smile:
Both Python and Ruby have introduced gradual typing into the language but it hasn't caught on. Mostly because people who are attracted to the language chose it because they didn't have to worry about types.
I just came back from RustForge ( https://rustforgeconf.com/ ) and there was some discussion about whether learning Rust as your first programming language is harder or easier, and whether static types (or the lack of automatic type coercion) facilitates learning or hinders it
A claim was made that it's actually confusing for new programmers to have a variable that can be a Boolean or a number of a string or a dictionary, that early on folks tend to find that more confusing than the alternative
@Lars Ellingsen these terms aren't well defined I agree, but I think what you're really talking about is definitely static/dynamic typing. For anything that happens at compile time versus runtime, that refers to "static" analysis.
Strong/weak is a separate axis and while opinions differ, things like implicit coercion can make a type system weaker. E.g. Python performs fewer implicit conversions than JS, making it stronger. Rust and Go perform fewer implicit conversions (e.g. between number types) than C, making them stronger even though all 3 are statically typed.
Daniel Buckmaster said:
Lars Ellingsen these terms aren't well defined I agree, but I think what you're really talking about is definitely static/dynamic typing. For anything that happens at compile time versus runtime, that refers to "static" analysis.
Strong/weak is a separate axis and while opinions differ, things like implicit coercion can make a type system weaker. E.g. Python performs fewer implicit conversions than JS, making it stronger. Rust and Go perform fewer implicit conversions (e.g. between number types) than C, making them stronger even though all 3 are statically typed.
Ah TIL! Yeah I think you're totally right, apparently I (and the devs I work with) have been misusing the term. Thanks for the clarification :smile:
And definitely what I'm after is static analysis. I've been bitten so many times in production by things that feel like they should have been caught by a compiler or some other tool. We've started using Mypy in strict mode but even that only gets us so far
In any case, though, I enjoyed this episode. Very interesting idea about funding OSS
I'm curious how the companion pod came to be, I saw that CultRepo made a mention of it so I'm assuming its an official collaboration. Will there be more for other docs down the road as well? Excited for the upcoming Vite doc.
I remember reading an essay by Paul Graham where he talked about programming as painting. At first you start by sketching with a pencil where you can quickly try out your ideas, erase your mistakes etc and then eventually you use paint to make your work more permanent.
That's why I think languages should have strong type inference or optional typing. You shouldn't have to worry about typing things until you need to. This is why I enjoyed playing with Crystal so much. It has very strong type inference and also a really good type system.
As a side note. I think at a minimum every language should have every type in postgres including nullable types. Eventually I will be pushing things into and out of postgres so I want a strong match. I also want structs with syntax similar to postgres tables including specifying defaults, constraints etc. Alas I haven't found anything like that.
@Don MacKinnon yup! We’re doing a Vite collab too
Awesome!
That's rad :smile: the doc and pod were both great!
Last updated: Oct 15 2025 at 11:36 UTC