forked from mikeckennedy/talk-python-transcripts
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path339-perf.vtt
More file actions
4353 lines (2177 loc) · 88.8 KB
/
339-perf.vtt
File metadata and controls
4353 lines (2177 loc) · 88.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WEBVTT
00:00:00.000 --> 00:00:05.000
- Mark Guido, welcome to Talk Python To Me.
00:00:05.000 --> 00:00:06.340
- Hi, hello.
00:00:06.340 --> 00:00:09.580
- It's fantastic to have you here.
00:00:09.580 --> 00:00:12.000
I'm so excited about all the things
00:00:12.000 --> 00:00:14.340
that are happening around Python performance.
00:00:14.340 --> 00:00:18.000
I feel like there's just a bunch of new ideas springing up
00:00:18.000 --> 00:00:21.660
and people working on it and yeah, it's exciting times.
00:00:21.660 --> 00:00:24.260
- Definitely.
00:00:24.260 --> 00:00:27.640
- Yeah, and you two are of course,
00:00:27.640 --> 00:00:29.120
right at the center of it.
00:00:29.120 --> 00:00:32.040
But before we talk about the performance work
00:00:32.040 --> 00:00:32.880
that you are all doing,
00:00:32.880 --> 00:00:35.800
as well as some of the other initiatives going along,
00:00:35.800 --> 00:00:37.040
maybe in parallel there,
00:00:37.040 --> 00:00:40.720
let's just get started with a little bit of background.
00:00:40.720 --> 00:00:42.200
Guido, you've been on the show before,
00:00:42.200 --> 00:00:44.080
you're a creator of Python,
00:00:44.080 --> 00:00:47.560
you hardly need an introduction to most people out there.
00:00:47.560 --> 00:00:50.960
But you have recently made a couple of big changes
00:00:50.960 --> 00:00:54.160
in your life, I thought I'd just ask you how that's going.
00:00:54.160 --> 00:00:56.780
You retired and we were all super happy for you on that.
00:00:56.780 --> 00:00:58.600
And then you said, you know what,
00:00:58.600 --> 00:01:00.140
I kind of want to play with code some more.
00:01:00.140 --> 00:01:01.360
And now you're at Microsoft.
00:01:01.360 --> 00:01:03.040
What's the story there?
00:01:03.040 --> 00:01:07.160
- Oh, I just liked the idea of retiring.
00:01:07.160 --> 00:01:12.160
So I tried to see how many times in a lifetime I can retire.
00:01:12.160 --> 00:01:15.240
Starting with my retirement from BDFL,
00:01:15.240 --> 00:01:20.920
which didn't stop me from staying super active
00:01:20.920 --> 00:01:21.940
in the community.
00:01:24.760 --> 00:01:29.460
But when I retired from Dropbox a little over two years ago,
00:01:29.460 --> 00:01:33.800
I really thought that that was it, that I believed it.
00:01:33.800 --> 00:01:34.640
- Yeah.
00:01:34.640 --> 00:01:36.200
- And everybody else believed it too.
00:01:36.200 --> 00:01:38.280
Dropbox certainly believed it.
00:01:38.280 --> 00:01:41.580
They were very sad to see me go.
00:01:41.580 --> 00:01:44.080
I was sad to go, but I thought there was time.
00:01:44.080 --> 00:01:49.080
And I sort of, I had a few great months decompressing,
00:01:54.400 --> 00:01:59.400
going on bike rides with my wife and family, fun stuff.
00:01:59.400 --> 00:02:02.600
And then the pandemic hit.
00:02:02.600 --> 00:02:03.440
- Yeah.
00:02:03.440 --> 00:02:05.960
- And a bunch of things got harder.
00:02:05.960 --> 00:02:09.040
The fortunately the bike rides eventually got restored
00:02:09.040 --> 00:02:12.120
but other activities like eating out
00:02:12.120 --> 00:02:14.020
was a lot more stressful.
00:02:14.020 --> 00:02:17.160
Basically just life was a lot more stressful in general.
00:02:17.160 --> 00:02:18.540
- Right, and human interaction
00:02:18.540 --> 00:02:22.060
was definitely strunken down to a kernel.
00:02:22.060 --> 00:02:29.420
Yeah, and I somehow I thought, well, I want to have something to do. I want to
00:02:29.420 --> 00:02:34.780
do more sort of software development in the team.
00:02:34.780 --> 00:02:42.460
And the Python core development team didn't really cut it for me because it's
00:02:42.460 --> 00:02:49.820
sort of diffuse and volunteer-based and sometimes you get stuck waiting for months for the steering
00:02:49.820 --> 00:02:59.180
council to sort of approve of or reject a certain idea that you've worked on.
00:02:59.180 --> 00:03:05.020
So I asked around and I found that Microsoft was super interested in hiring me
00:03:05.020 --> 00:03:13.260
and that was now, well tomorrow exactly a month, a year, tomorrow a year ago
00:03:14.380 --> 00:03:28.220
I started at Microsoft. In the beginning I just had to find my way around at Microsoft.
00:03:28.220 --> 00:03:35.180
Eventually I figured I should pick a project and after looking around and realizing I
00:03:35.180 --> 00:03:41.900
couldn't really turn the world of machine learning upside down. I figured I'd
00:03:42.940 --> 00:03:48.860
stay closer to home and see if Microsoft was interested in funding a team working on
00:03:48.860 --> 00:03:58.620
speeding up CPython. And I was actually inspired by Mark's proposals that were going around at the
00:03:58.620 --> 00:04:07.340
time. So I convinced Microsoft to sort of start a small team and get Mark on board.
00:04:08.460 --> 00:04:15.020
Yeah, that's fantastic. I also feel a little bit like machine learning is amazing, but I don't have
00:04:15.020 --> 00:04:20.460
a lot of experience with it. And whenever I work with it, I always kind of feel on the outside of
00:04:20.460 --> 00:04:27.100
it. But this core performance of Python, that helps everybody, right? Including even Microsoft,
00:04:27.100 --> 00:04:33.260
right? It maybe saves them energy on Azure when they're running Python workloads or whatever.
00:04:36.300 --> 00:04:38.300
So you're enjoying your time, you happy you're there?
00:04:38.300 --> 00:04:40.300
I'm very happy.
00:04:40.300 --> 00:04:45.300
Yeah, a lot of freedom to basically pursue what you are, right?
00:04:45.300 --> 00:04:50.300
And it's nice that the new Microsoft is very open source friendly.
00:04:50.300 --> 00:04:55.300
At least in many cases, obviously not everywhere.
00:04:55.300 --> 00:05:00.300
But sort of our department is very open source friendly.
00:05:00.300 --> 00:05:04.300
Things like Visual Studio Code are all open source.
00:05:04.300 --> 00:05:13.180
And so there was great support with management for sort of the way I said I wanted to do this project,
00:05:13.180 --> 00:05:15.860
which is completely out in the open.
00:05:15.860 --> 00:05:24.020
Everything we do is sort of just merged into main as soon as we can.
00:05:24.020 --> 00:05:27.980
We work with the core developers.
00:05:27.980 --> 00:05:31.900
we don't have like a private fork of Python
00:05:31.900 --> 00:05:34.100
where we do amazing stuff.
00:05:34.100 --> 00:05:37.620
And then we knock on the steering council's door
00:05:37.620 --> 00:05:41.820
and say, "Hey, we'd like to merge this."
00:05:41.820 --> 00:05:45.180
- Yeah, you're not gonna drop six months of work
00:05:45.180 --> 00:05:46.820
just in one block, right?
00:05:46.820 --> 00:05:49.240
It's there for everyone to see.
00:05:49.240 --> 00:05:50.080
- Exactly.
00:05:50.080 --> 00:05:53.320
- I think that's really, really positive.
00:05:53.320 --> 00:05:57.460
And wow, what a change, not just from Microsoft,
00:05:57.460 --> 00:06:00.140
but so many companies to work that way
00:06:00.140 --> 00:06:02.300
compared to 10, 15 years ago.
00:06:02.300 --> 00:06:05.820
Yeah, absolutely.
00:06:05.820 --> 00:06:08.460
Now, before I get to Mark, I just wanna,
00:06:08.460 --> 00:06:11.320
you know, a bunch of people are excited that you're here.
00:06:11.320 --> 00:06:13.820
And Luis out in the audience said,
00:06:13.820 --> 00:06:15.700
"Wow, it's Guido, I can't thank you enough
00:06:15.700 --> 00:06:18.020
"for your amazing Python and all the community."
00:06:18.020 --> 00:06:18.860
Awesome.
00:06:18.860 --> 00:06:21.060
- Great to hear.
00:06:21.060 --> 00:06:21.900
- Yeah.
00:06:21.900 --> 00:06:23.700
Mark, how about you?
00:06:23.700 --> 00:06:26.300
How'd you get into this Python performance thing?
00:06:26.300 --> 00:06:28.940
I know you did some stuff with HotPie back in the day.
00:06:28.940 --> 00:06:32.020
- Yeah, that was sort of my PhD work.
00:06:32.020 --> 00:06:36.460
So I guess I kind of got into the performance
00:06:36.460 --> 00:06:37.780
almost before the Python.
00:06:37.780 --> 00:06:42.020
So I was doing sort of compiler work, masters,
00:06:42.020 --> 00:06:44.700
and obviously just, you know,
00:06:44.700 --> 00:06:48.280
you need to write scripts and just get stuff done.
00:06:48.280 --> 00:06:51.300
And, you know, often just Python is just a language
00:06:51.300 --> 00:06:52.140
to get stuff done.
00:06:52.140 --> 00:06:55.540
And then it's that, I think I'm in Rigo,
00:06:55.540 --> 00:06:58.580
sort of, I think one of his sort of credits
00:06:58.580 --> 00:06:59.740
in one of his papers or something,
00:06:59.740 --> 00:07:01.060
he says, "Thank you for Python
00:07:01.060 --> 00:07:02.780
"for being such a great language to use
00:07:02.780 --> 00:07:05.220
"and such a challenge to optimize."
00:07:05.220 --> 00:07:08.540
So it's doubly good if you're coming at it from a sort of,
00:07:08.540 --> 00:07:10.720
so it provides this great intellectual challenge
00:07:10.720 --> 00:07:12.540
when you're actually trying to optimize it.
00:07:12.540 --> 00:07:14.380
And it's a really nice language to use as well.
00:07:14.380 --> 00:07:16.780
So it's doubly good.
00:07:16.780 --> 00:07:19.500
- It is doubly good, it's doubly good.
00:07:19.500 --> 00:07:21.220
Yeah, and before we move on really quick,
00:07:21.220 --> 00:07:22.860
Paul Everett says, "It's really impressive
00:07:22.860 --> 00:07:25.500
of how the in the open work has been done.
00:07:25.500 --> 00:07:27.020
Yeah, totally agree.
00:07:27.020 --> 00:07:28.060
- Hi, Paul.
00:07:28.060 --> 00:07:29.100
- Yeah, keep that going.
00:07:29.100 --> 00:07:30.800
Hey, Paul, happy to see you here.
00:07:30.800 --> 00:07:35.020
Now, we're gonna talk about making Python faster,
00:07:35.020 --> 00:07:38.380
but I wanna start this conversation
00:07:38.380 --> 00:07:41.180
with a bit of a hypothetical question,
00:07:41.180 --> 00:07:44.460
but sort of set the stage and ask,
00:07:44.460 --> 00:07:47.380
how much does Python really need to be faster?
00:07:47.380 --> 00:07:49.780
Because on one hand,
00:07:51.020 --> 00:07:53.260
Sure, there's a lot more performance we can do
00:07:53.260 --> 00:07:55.660
if you're going to say, well, we're going to solve the nbody
00:07:55.660 --> 00:08:00.940
problem using C++ or C# versus Python.
00:08:00.940 --> 00:08:04.540
It's going to be faster with the native value types and whatnot.
00:08:04.540 --> 00:08:06.780
On the other, people are building amazing software
00:08:06.780 --> 00:08:08.860
that runs really fast with Python already.
00:08:08.860 --> 00:08:12.900
We've got the C optimizations for things like NumPy
00:08:12.900 --> 00:08:16.780
and SQL alchemies, transformation layer,
00:08:16.780 --> 00:08:18.500
serialization layer, and so on.
00:08:18.500 --> 00:08:20.900
So a lot of times that kind of brings it back
00:08:20.900 --> 00:08:21.740
to C performance.
00:08:21.740 --> 00:08:25.380
So how much do you think Python really needs
00:08:25.380 --> 00:08:28.760
to be optimized already?
00:08:28.760 --> 00:08:32.220
Not that more is always better, faster is always better,
00:08:32.220 --> 00:08:34.400
but I just kind of want to set the stage
00:08:34.400 --> 00:08:36.100
and get your two thoughts on that.
00:08:36.100 --> 00:08:43.020
- Well, I always think back to my experience at Dropbox,
00:08:43.020 --> 00:08:48.080
where there was a large server called the meta server,
00:08:48.080 --> 00:09:00.480
which did sort of almost all the server side work, like anything that hits www.dropbox.com hits that server.
00:09:00.480 --> 00:09:10.080
And that server was initially a small prototype written in Python. The client was actually also a small prototype written in Python.
00:09:10.080 --> 00:09:16.480
And to this day, both the server and the client at Dropbox, as far as I know,
00:09:16.480 --> 00:09:20.720
unless in the last two years, they totally ripped it apart, but I don't think they did.
00:09:20.720 --> 00:09:27.120
They tweaked it, but it's still all now very large Python applications.
00:09:27.120 --> 00:09:36.960
And so Dropbox really sort of feels the speed of Python
00:09:36.960 --> 00:09:41.960
in its budget because they have thousands,
00:09:41.960 --> 00:09:44.440
I don't know how many thousands of machines
00:09:44.440 --> 00:09:48.760
that all run this enormous Python application.
00:09:48.760 --> 00:09:49.600
And yes-
00:09:49.600 --> 00:09:50.740
- If it was four times faster,
00:09:50.740 --> 00:09:54.180
that's not just for a quarter of the machines,
00:09:54.180 --> 00:09:58.120
that's less DevOps, less admin, all sorts of stuff, right?
00:09:58.120 --> 00:10:02.080
- Oh, even if it was 4% faster, they would notice.
00:10:02.080 --> 00:10:03.920
- Yeah.
00:10:04.920 --> 00:10:07.560
The other area where I think it's really relevant
00:10:07.560 --> 00:10:13.260
has to do with the multi-core side of things, right?
00:10:13.260 --> 00:10:17.220
I have a PC over there, 16 cores.
00:10:17.220 --> 00:10:19.020
My new laptop has 10 cores.
00:10:19.020 --> 00:10:23.700
Although with Python, it's hard to take true advantage
00:10:23.700 --> 00:10:27.160
of that side of modern CPU performance
00:10:27.160 --> 00:10:28.620
if it's not IO bound, right?
00:10:28.620 --> 00:10:33.800
- Yeah, so the, I don't know how deep you want me
00:10:33.800 --> 00:10:42.920
go into that and Mark can stop me if I'm going too deep too. But there are existing patterns
00:10:42.920 --> 00:10:53.080
that work reasonably well if you have a server application that sort of handles multiple
00:10:53.080 --> 00:11:00.120
fairly independent requests. Like if you're building a multi-core web application
00:11:03.080 --> 00:11:09.560
you can use multi-processing or pre-forking or a variety of ways of running a Python
00:11:09.560 --> 00:11:15.480
interpreter on each core that you have, each independently handling requests.
00:11:15.480 --> 00:11:21.160
And you can do that if you have 64 cores, you run 64 Python processes.
00:11:21.160 --> 00:11:24.920
Right, that's just a number in a micro-WSGI config file. It's nothing.
00:11:25.800 --> 00:11:35.240
Yeah, but it works for applications that are designed to handle
00:11:35.240 --> 00:11:43.880
multiple independent requests in a scalable fashion. There are other algorithms that
00:11:43.880 --> 00:11:52.120
you would want to execute where it's much more complicated to employ all your cores efficiently.
00:11:54.040 --> 00:11:56.040
Yeah, absolutely.
00:11:56.040 --> 00:12:00.040
That's still a nut that Python hasn't cracked.
00:12:00.040 --> 00:12:08.040
And I'm assuming you're asking this question because Sam Gross, a very smart developer at Facebook, claims that he has cracked it.
00:12:08.040 --> 00:12:16.040
Yeah, and perhaps he has. It's an interesting idea. We'll dive into that a little bit later.
00:12:16.040 --> 00:12:21.880
I'm more asking it just because I see a lot of people say that Python is too slow.
00:12:21.880 --> 00:12:25.640
And then I also see a lot of people being very successful with it.
00:12:25.640 --> 00:12:31.640
And it not being slow in practice, or not being much slower than other things.
00:12:31.640 --> 00:12:36.600
And so I more want to set the stage of like the context matters, right?
00:12:36.600 --> 00:12:39.880
This Dropbox example you have, it really matters to them.
00:12:39.880 --> 00:12:43.560
You know, my course website where people take courses,
00:12:43.560 --> 00:12:45.960
the response time of the pages is 40 milliseconds.
00:12:45.960 --> 00:12:48.560
If it was 38, it doesn't matter.
00:12:48.560 --> 00:12:50.640
It's really fast, it's fine.
00:12:50.640 --> 00:12:53.660
So I think, but if I was trying to do computational biology
00:12:53.660 --> 00:12:56.480
in Python, I would really want to be able to take advantage
00:12:56.480 --> 00:12:58.200
of those 16 cores, right?
00:12:58.200 --> 00:13:02.320
So there's just such a variety of perspectives
00:13:02.320 --> 00:13:04.320
where it matters.
00:13:04.320 --> 00:13:06.600
Mark, what are your thoughts on all this?
00:13:06.600 --> 00:13:10.120
- Well, it's just a case of saving energy, saving time.
00:13:10.120 --> 00:13:13.240
Just, it just makes the whole thing nicer to use.
00:13:13.240 --> 00:13:20.920
So I mean, there's a lot of just if development in data science and it's that responsiveness,
00:13:20.920 --> 00:13:26.000
the whole, you know, just breaking your train of thought because things take too long versus
00:13:26.000 --> 00:13:28.240
just keeping in the flow and all this sort of stuff.
00:13:28.240 --> 00:13:30.480
It's just nice to have something that's faster.
00:13:30.480 --> 00:13:33.480
I mean, it's not just the big companies saving money as well.
00:13:33.480 --> 00:13:36.280
I mean, it's just keeps everyone's server budgets down.
00:13:36.280 --> 00:13:41.320
I mean, if you just need a smaller virtual instance because you can serve the requests
00:13:41.320 --> 00:13:49.560
up fast enough because Python's faster. So I think it's just generally a sort of responsible
00:13:49.560 --> 00:13:53.460
thing to do. I mean, it's also just, you know, people expect technology to move forwards
00:13:53.460 --> 00:13:58.560
and there's this feeling of, you know, falling behind or not, you know, people wanting to
00:13:58.560 --> 00:14:01.320
move other languages because of the perceived performance.
00:14:01.320 --> 00:14:05.400
Right. I do think that that's an issue, you know, I'm moving to Go because it has better
00:14:05.400 --> 00:14:08.360
or async support, or we're rewriting this in Rust
00:14:08.360 --> 00:14:11.240
for whatever reason.
00:14:11.240 --> 00:14:13.200
Sometimes that might make sense, but other times
00:14:13.200 --> 00:14:16.080
I feel like that's just a shame, and it could be used better.
00:14:16.080 --> 00:14:17.800
A couple of questions from the audience
00:14:17.800 --> 00:14:21.120
I just want to throw out there.
00:14:21.120 --> 00:14:24.080
Let's see.
00:14:24.080 --> 00:14:29.720
One was, Guido, especially, you must
00:14:29.720 --> 00:14:31.640
be really proud to hear about the Mars
00:14:31.640 --> 00:14:35.600
helicopter and the lander and Python in space,
00:14:35.600 --> 00:14:39.160
how did you feel when you heard about the helicopter
00:14:39.160 --> 00:14:42.520
using Python and the lander using Python and Flask
00:14:42.520 --> 00:14:43.560
and things like that?
00:14:43.560 --> 00:14:53.880
- It wasn't really a surprise given how popular Python is
00:14:53.880 --> 00:14:55.400
amongst scientists.
00:14:57.240 --> 00:15:04.280
So I didn't throw a party but it made me feel good. I mean it's definitely
00:15:04.280 --> 00:15:12.040
sort of one of those accomplishments for a piece of technology if it's actually shot into space.
00:15:12.040 --> 00:15:22.040
You know you've made a difference. I remember like 30 years ago or more when I
00:15:23.480 --> 00:15:31.080
helped some coding on a European project called Amoeba, which was like a little distributed
00:15:31.080 --> 00:15:37.800
operating system. And one of the things that they always boasted was that
00:15:37.800 --> 00:15:44.040
our software runs on the European Space Station. And that's very important.
00:15:44.040 --> 00:15:50.920
Yeah, so yeah, I totally get the feeling and I hope that everyone who contributed to Python
00:15:51.800 --> 00:15:56.800
also sort of feels that their contribution has.
00:15:56.800 --> 00:16:00.200
- That sense of awe, if you look up in the night sky
00:16:00.200 --> 00:16:02.080
and you see that little, that bright star
00:16:02.080 --> 00:16:04.880
that's actually Mars and you think, yeah, it's up there.
00:16:04.880 --> 00:16:07.760
Yeah, fantastic.
00:16:07.760 --> 00:16:10.880
All right, let's dive into some of the performance stuff
00:16:10.880 --> 00:16:12.140
that you all have been doing.
00:16:12.140 --> 00:16:15.920
So maybe Guido, start us out with the team.
00:16:15.920 --> 00:16:18.760
So you've got a group of folks working together.
00:16:18.760 --> 00:16:21.400
It's not just you and also now Mark Shannon
00:16:21.400 --> 00:16:23.200
is working with you as well, right?