forked from mikeckennedy/talk-python-transcripts
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path046_python_in_m_e.vtt
2201 lines (1467 loc) · 74 KB
/
046_python_in_m_e.vtt
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.001 --> 00:00:03.060
What did you experience the last time you watched a movie in a theater?
00:00:03.060 --> 00:00:06.640
Were you captivated by the fast-paced action and special effects?
00:00:06.640 --> 00:00:12.340
Deeply moved by the characters that came to life during those two hours when the outside world just melted away?
00:00:12.340 --> 00:00:14.260
Yeah, movies are still magical.
00:00:14.260 --> 00:00:18.880
What was likely not top of mind was all the work that went into that movie,
00:00:18.880 --> 00:00:23.360
from the editing of the audio and video, to the special effects, the rendering, the coordination,
00:00:23.360 --> 00:00:25.260
and maybe hundreds of creative professionals.
00:00:25.620 --> 00:00:29.880
It turns out that Python plays a key role in coordinating all of that production work,
00:00:29.880 --> 00:00:31.700
and that's what this episode is all about.
00:00:31.700 --> 00:00:37.560
Join me as I talk with Rob Blau from Autodesk about Python in the movies and entertainment business.
00:00:37.560 --> 00:00:43.000
This is Talk Python to Me, episode number 46, recorded January 28, 2016.
00:00:43.000 --> 00:00:49.940
I'm a developer in many senses of the word,
00:00:49.940 --> 00:00:54.300
because I make these applications, but I also use these verbs to make this music.
00:00:54.540 --> 00:00:58.860
I construct it line by line, just like when I'm coding another software design.
00:00:58.860 --> 00:01:02.000
In both cases, it's about design patterns.
00:01:02.000 --> 00:01:05.060
Anyone can get the job done, it's the execution that matters.
00:01:05.060 --> 00:01:07.200
I have many interests, sometimes...
00:01:07.200 --> 00:01:10.900
Welcome to Talk Python to Me, a weekly podcast on Python,
00:01:10.900 --> 00:01:13.960
the language, the libraries, the ecosystem, and the personalities.
00:01:13.960 --> 00:01:16.100
This is your host, Michael Kennedy.
00:01:16.100 --> 00:01:18.080
Follow me on Twitter, where I'm @mkennedy.
00:01:18.080 --> 00:01:21.980
Keep up with the show and listen to past episodes at talkpython.fm,
00:01:21.980 --> 00:01:24.580
and follow the show on Twitter via at talkpython.
00:01:24.580 --> 00:01:28.940
This episode is brought to you by SnapCI and OpBeat.
00:01:28.940 --> 00:01:33.620
Thank them for supporting the show on Twitter via snap underscore CI and OpBeat.
00:01:33.620 --> 00:01:35.560
Hey, everyone.
00:01:35.560 --> 00:01:39.660
Two weeks ago, I told you I had a huge announcement that I was really excited to share with you,
00:01:39.660 --> 00:01:40.340
but couldn't.
00:01:40.340 --> 00:01:44.120
Now that everything is in place, it's time to share my big plan with you.
00:01:44.600 --> 00:01:50.000
When I started this podcast almost a year ago, I had modest expectations and more than a little
00:01:50.000 --> 00:01:52.340
uncertainty about how it would be received by the community.
00:01:52.340 --> 00:01:57.600
And honestly, every day I'm blown away by how many people's lives I touch and help educate
00:01:57.600 --> 00:02:00.040
in some part of Python that was less well known to them.
00:02:00.040 --> 00:02:04.760
I get a huge amount of satisfaction spending time making Python more relevant to you through
00:02:04.760 --> 00:02:05.360
this podcast.
00:02:05.860 --> 00:02:07.780
I've been thinking about how I do more of that.
00:02:07.780 --> 00:02:14.000
I believe the natural counterpart to this podcast, which exposes people to new ideas and inspires
00:02:14.000 --> 00:02:19.380
them to learn more about Python, is a comprehensive set of online courses to help you go from inspired
00:02:19.380 --> 00:02:24.860
to empowered, from new developer to highly effective developer, from specialized developer to a
00:02:24.860 --> 00:02:25.620
well-rounded one.
00:02:25.620 --> 00:02:30.860
So today, I'm announcing the first course and taking the first step on a journey to build
00:02:30.860 --> 00:02:33.580
this resource for you and the whole Python community.
00:02:33.580 --> 00:02:39.920
Over the next two years, I plan to release 20 high-quality online courses that will be between
00:02:39.920 --> 00:02:41.540
three to ten hours each.
00:02:41.540 --> 00:02:46.700
These no-fluff courses will strive to make you effective with some corner of the Python ecosystem,
00:02:46.700 --> 00:02:51.500
including the Python language, web apps, databases, GUIs, parallelism, and more.
00:02:51.500 --> 00:02:56.920
The first course will be about the Python programming language, and will take a fun and playful approach
00:02:56.920 --> 00:03:00.640
to teaching you the language details such as classes, loops, variables, and more.
00:03:01.120 --> 00:03:03.860
It's called Python Jumpstart by Building 10 Applications.
00:03:03.860 --> 00:03:07.940
It'll be about six hours long, and it will be a comprehensive introduction to the Python
00:03:07.940 --> 00:03:08.300
language.
00:03:08.300 --> 00:03:11.560
If this project resonates with you, I need your help.
00:03:11.560 --> 00:03:16.380
As of today, I'm launching a Kickstarter to make the first course, this first step on
00:03:16.380 --> 00:03:17.420
my journey, a reality.
00:03:17.420 --> 00:03:20.960
Take a moment to visit the Kickstarter to see what it's all about.
00:03:20.960 --> 00:03:25.920
Just go to talkpython.fm/course, and you'll be redirected to the Kickstarter page.
00:03:26.480 --> 00:03:31.080
There are many reward levels, but the main one is the $29 student reward, which gives you
00:03:31.080 --> 00:03:33.820
lifetime access to the course at a significant discount.
00:03:33.820 --> 00:03:38.520
If you believe in this project and want to help, please tweet about the Kickstarter, share
00:03:38.520 --> 00:03:40.560
it with your coworkers, or even back it yourself.
00:03:41.200 --> 00:03:45.120
I'm really excited to start down this path to build something amazing for the community,
00:03:45.120 --> 00:03:46.880
and I can't do it without you.
00:03:46.880 --> 00:03:50.860
So any support or word-of-mouth endorsements you can give me will be deeply appreciated.
00:03:50.860 --> 00:03:52.800
Please let me know what you think.
00:03:52.800 --> 00:03:58.300
Send me a message over email, contact at talkpython.fm, or on Twitter via at Talk Python.
00:03:58.840 --> 00:04:03.900
I'm also doubling my efforts on this podcast as well, so keep listening and sending in suggestions
00:04:03.900 --> 00:04:07.160
and feedback, and I'll do my best to bring you interesting and relevant episodes.
00:04:07.160 --> 00:04:11.640
Now, let's hear from Rob Blau about making movies and video games with Python.
00:04:11.640 --> 00:04:13.660
Rob, welcome to the show.
00:04:13.660 --> 00:04:14.960
It's great to be here.
00:04:14.960 --> 00:04:15.620
Thanks for having me.
00:04:15.620 --> 00:04:16.620
Oh, you're welcome.
00:04:16.620 --> 00:04:17.560
Thanks for coming.
00:04:17.560 --> 00:04:19.760
I'm super excited to talk about Autodesk.
00:04:19.760 --> 00:04:22.440
You guys kind of make a little bit of everything.
00:04:22.440 --> 00:04:24.800
There's so many different pieces of software that you write.
00:04:25.440 --> 00:04:29.360
And it sounds like Python plays some pretty cool part in that.
00:04:29.360 --> 00:04:30.460
Yeah, definitely.
00:04:30.460 --> 00:04:33.420
So Autodesk is a great company.
00:04:33.420 --> 00:04:37.300
The company mission is to help people build cool things.
00:04:37.300 --> 00:04:43.220
So pretty much software that helps people realize their creative vision.
00:04:43.220 --> 00:04:49.780
The largest piece is kind of on the AutoCAD, like production architecture side.
00:04:49.780 --> 00:04:56.420
And the piece of Autodesk that I work in is the media and entertainment division.
00:04:56.420 --> 00:05:03.740
So we get to work with animation houses, visual effects houses, and help build the software
00:05:03.740 --> 00:05:08.340
that they use to do the cool things they do to put pixels and games together.
00:05:08.860 --> 00:05:09.860
That's really cool.
00:05:09.860 --> 00:05:18.680
So if I jump on a train and I go over to the airport and I get on a plane, fly somewhere,
00:05:18.680 --> 00:05:26.380
and find my way to a movie theater, how many of those different experiences are modeled or
00:05:26.380 --> 00:05:28.460
somehow created with Autodesk things?
00:05:29.300 --> 00:05:35.740
Chances are every single step of the way from the car that you jumped into, somewhere along
00:05:35.740 --> 00:05:39.960
the way from the factory that it was created in and the robots that made it, they were designed
00:05:39.960 --> 00:05:46.740
using some of the Autodesk software, the actual car itself, the models, all of the pre-visualization
00:05:46.740 --> 00:05:49.400
that people do in order to figure out what it's going to be.
00:05:49.400 --> 00:05:51.620
And then the actual instructions for building it.
00:05:51.620 --> 00:05:53.720
Autodesk makes products that do that.
00:05:54.860 --> 00:06:00.220
I mean, the city streets and the planning, it's incredible, the places that the software
00:06:00.220 --> 00:06:02.400
is used, and then the airplane, the exact same thing.
00:06:02.400 --> 00:06:04.700
And then you're going to the movie theater.
00:06:04.700 --> 00:06:07.960
The movie theater itself was probably done by an architect who was using AutoCAD in some
00:06:07.960 --> 00:06:13.700
way, shape, or form, or Revit, which is used to build bigger projects and make sure that
00:06:13.700 --> 00:06:19.320
all of the various components in the building, like the HVAC and the design and the wiring,
00:06:19.320 --> 00:06:22.460
all talk to each other and will work once you actually build it.
00:06:23.620 --> 00:06:30.200
And then you finally get the movie showing and you start seeing, nowadays, almost every
00:06:30.200 --> 00:06:35.740
single shot has some kind of visual effect on it, whether it's just a little bit of 2D
00:06:35.740 --> 00:06:40.140
cleanup that happens up to the full 3D.
00:06:40.140 --> 00:06:46.140
The actual environment is completely created from scratch inside of some software.
00:06:46.840 --> 00:06:53.420
Autodesk makes some of the most widely used pieces of software for that, like Maya 3 Studio
00:06:53.420 --> 00:06:54.440
Max.
00:06:54.440 --> 00:06:59.840
All of those are used to model and render what you're seeing up on screen.
00:06:59.840 --> 00:07:02.000
That actually kind of blows my mind.
00:07:02.000 --> 00:07:04.920
That's even more intense than my original thought.
00:07:04.920 --> 00:07:05.760
That's awesome, though.
00:07:05.760 --> 00:07:06.960
It's really cool.
00:07:06.960 --> 00:07:12.340
Fun mission to have to just make it easier for people to realize their creative vision.
00:07:12.340 --> 00:07:13.620
It's a nice one.
00:07:14.020 --> 00:07:15.360
Yeah, I bet it is.
00:07:15.360 --> 00:07:17.600
So let's totally dig into that.
00:07:17.600 --> 00:07:20.560
But before we do, maybe sort of give me your background story.
00:07:20.560 --> 00:07:24.100
Like, how do you get into this place where you're working on basically building everything
00:07:24.100 --> 00:07:26.460
that makes up the synthetic world?
00:07:26.460 --> 00:07:29.680
I had kind of a roundabout way there.
00:07:29.680 --> 00:07:33.260
I went to school for computer science.
00:07:33.260 --> 00:07:42.300
So from Boston, went to MIT and graduated around the first tech boom, did a couple of dot coms
00:07:42.300 --> 00:07:47.440
at that point and built up kind of just a varied background.
00:07:47.560 --> 00:07:53.580
I did a lot of scripting, a lot of database work, a lot of just systems admin kind of stuff.
00:07:53.580 --> 00:07:57.940
Just there was a startup culture and you did whatever you had to do to get going.
00:07:57.940 --> 00:08:04.600
And from that, I went to actually a Linux conference and saw a presentation from DreamWorks,
00:08:04.600 --> 00:08:08.500
DreamWorks Animation, where they were presenting how they're using Linux because they were one
00:08:08.500 --> 00:08:14.720
of the first companies to switch over to kind of big open source software as the foundation
00:08:14.720 --> 00:08:16.200
of the technology that they're using.
00:08:16.200 --> 00:08:17.060
Interesting.
00:08:17.060 --> 00:08:18.380
What were they switching from?
00:08:18.380 --> 00:08:18.840
Do you know?
00:08:18.840 --> 00:08:20.180
Silicon Graphics?
00:08:20.180 --> 00:08:20.760
Yeah.
00:08:20.760 --> 00:08:22.860
Back in the day, it was kind of Silicon Graphics.
00:08:22.860 --> 00:08:23.060
Yeah.
00:08:23.440 --> 00:08:29.300
So they kind of had deals with Red Hat going and figuring out kind of the enterprise Linux
00:08:29.300 --> 00:08:29.780
distro.
00:08:29.780 --> 00:08:32.300
They were early in adopting all of that stuff.
00:08:32.300 --> 00:08:35.540
So you intersected there when they were talking about how they were using Linux.
00:08:35.540 --> 00:08:36.440
Okay.
00:08:36.440 --> 00:08:36.880
Exactly.
00:08:36.880 --> 00:08:44.560
And I got to talking with them and it turns out that they had an interesting job that was
00:08:44.560 --> 00:08:49.900
doing, it's called pipeline work in the visual effects industry, which is the software that
00:08:49.900 --> 00:08:53.220
helps tie together what all of the different departments do.
00:08:53.220 --> 00:08:57.320
So you've got an artist sitting there, they've got a very specific job to do.
00:08:57.320 --> 00:09:02.540
It's almost like in an assembly line in a factory, you've got your station where you're doing your
00:09:02.540 --> 00:09:07.320
very specific thing, except with an artist, it's a very creative process, but they still have to
00:09:07.320 --> 00:09:12.740
take work done by somebody else, get it working for them, do what they're supposed to do to it,
00:09:12.740 --> 00:09:15.260
package it up for somebody else and then hand it to somebody else.
00:09:15.260 --> 00:09:19.860
And all of those pieces other than that creative work is kind of overhead that it's
00:09:19.860 --> 00:09:21.740
nice to artists to not have to do.
00:09:21.740 --> 00:09:24.640
And that's where this idea of pipeline comes in.
00:09:24.640 --> 00:09:29.980
So I was kind of fascinated by that right from this original conversation.
00:09:29.980 --> 00:09:35.780
Plus I had about 10 Boston winters and the idea of California sounded pretty good.
00:09:35.780 --> 00:09:43.240
So I went to work for DreamWorks where I was for five years and was a member of their pipeline
00:09:43.240 --> 00:09:47.020
department, ended up being a supervisor in that department.
00:09:47.820 --> 00:09:52.600
And that actually is where I first started using Python extensively.
00:09:53.600 --> 00:10:00.880
The pipeline at DreamWorks was Pro-based because back originally when you were doing text processing
00:10:00.880 --> 00:10:06.500
and having to glue together different software, Pro made a lot of sense.
00:10:06.500 --> 00:10:07.000
Right.
00:10:07.000 --> 00:10:08.040
What year was that?
00:10:09.160 --> 00:10:12.200
That was about 2003, 2004.
00:10:12.200 --> 00:10:12.900
Yeah.
00:10:12.900 --> 00:10:13.920
I'm talking about right now.
00:10:13.920 --> 00:10:14.380
Yeah.
00:10:14.380 --> 00:10:17.240
Pearl was still in a pretty strong position back then.
00:10:17.240 --> 00:10:17.940
Exactly.
00:10:17.940 --> 00:10:26.140
And the pipeline that I'm talking about had been in place for like a good probably five, six,
00:10:26.140 --> 00:10:27.420
seven years before that even.
00:10:27.940 --> 00:10:30.660
So when it was written, like that was the choice.
00:10:30.660 --> 00:10:37.540
But there was something that was kind of interesting that was happening with software in the 3D space.
00:10:38.660 --> 00:10:43.660
There was already a couple of pieces of software that had Python embedded in them.
00:10:44.440 --> 00:10:53.140
And Maya actually, as one of the biggest, again, taking it back to an Autodesk product, was introducing a version that had an embedded Python.
00:10:53.960 --> 00:11:01.040
And at that point, if one of the biggest applications that you're using in your pipeline speaks Python natively,
00:11:01.040 --> 00:11:09.500
there was a pretty serious indication to DreamWorks as a whole that maybe committing to Python rather than Perl would be a great idea
00:11:09.500 --> 00:11:19.320
because all of a sudden, all of this integration work that we're doing doesn't have to end outside of the applications that we're trying to tie together.
00:11:19.320 --> 00:11:26.740
We get the chance to run inside the application with code that you're using to tie everything together,
00:11:26.740 --> 00:11:33.060
which is amazing because all of a sudden you can speak the same language throughout the entire pipeline
00:11:33.060 --> 00:11:42.160
and do a much more seamless handoff for the artists, kind of, which is, again, the purpose of all of this is to make it so that they can spend their time
00:11:42.160 --> 00:11:44.240
just doing as much creative work as possible.
00:11:44.240 --> 00:11:45.100
Right.
00:11:45.100 --> 00:11:45.980
Yeah, that's really cool.
00:11:45.980 --> 00:11:54.320
rather than trying to integrate Perl and Python and have some sort of handshake or handoff, just make it Python all the way through, right?
00:11:54.320 --> 00:11:58.200
Yep, which actually was, at the time, controversial.
00:11:58.200 --> 00:12:06.400
It was a pretty big jump to do, and it wasn't clear that Python was going to take hold in the entertainment industry the way that it has.
00:12:06.900 --> 00:12:09.540
But since then, nowadays, it's a no-brainer.
00:12:09.540 --> 00:12:14.580
Almost every new piece of software that comes out has an embedded Python interpreter,
00:12:14.580 --> 00:12:23.100
and Python studios around the world is the de facto language that's used in order to do this kind of work,
00:12:23.100 --> 00:12:28.060
in order to tie stuff together, or even just the tools that you write for artists.
00:12:28.060 --> 00:12:32.700
Unless it has to be compiled, you tend to gravitate towards Python to do it.
00:12:33.120 --> 00:12:34.540
That totally makes sense to me.
00:12:34.540 --> 00:12:38.900
What I think is interesting, and I see it happening in data science, I see it happening in education,
00:12:38.900 --> 00:12:43.520
you're telling me it happens here as well, which makes a lot of sense,
00:12:43.520 --> 00:12:51.700
is it seems like Python is becoming more and more popular, and that popularity is almost accelerating.
00:12:52.700 --> 00:12:59.940
The rate of popularity growth seems to actually be growing, which is really cool to be part of it as that's happening.
00:12:59.940 --> 00:13:03.240
Why do you think that is the case in the entertainment industry?
00:13:03.820 --> 00:13:08.040
I think I was thinking about this in advance of sitting down.
00:13:08.040 --> 00:13:18.960
A lot of it, I think it got its start by being so easy to embed and having kind of this kitchen sink approach.
00:13:18.960 --> 00:13:24.180
Those two things combined together made it so that with just a little bit of C code,
00:13:24.500 --> 00:13:32.300
all of a sudden, the scripting environment that you could offer people became incredibly rich.
00:13:32.300 --> 00:13:40.800
And because of the ease of exposing your C, C++ libraries through to Python,
00:13:40.800 --> 00:13:44.520
even if you just go natively to the Python C API,
00:13:44.520 --> 00:13:53.540
it meant that all of these programs that didn't necessarily have a great scripting language
00:13:53.540 --> 00:13:57.680
could have one without too much investment.
00:13:57.680 --> 00:14:04.440
Now, Maya actually did have an incredibly embedded scripting language, still does, called Mel,
00:14:04.440 --> 00:14:06.340
but it was only for Maya.
00:14:06.340 --> 00:14:08.440
And people were Mel experts.
00:14:08.440 --> 00:14:10.240
There was a ton of work done in Mel,
00:14:10.240 --> 00:14:15.740
but your world ended at the boundaries that Maya provided.
00:14:15.740 --> 00:14:19.240
And it didn't give you too much of a chance to extend outside of that.
00:14:19.240 --> 00:14:24.000
Whereas with Python, you get the exact same kind of scriptability,
00:14:24.000 --> 00:14:27.840
but now you get to talk to the rest of the world and the rest of the universe
00:14:27.840 --> 00:14:30.200
that's also speaking Python, which is huge.
00:14:30.200 --> 00:14:36.580
So I think the application developers saw that,
00:14:36.580 --> 00:14:39.420
and it wasn't that huge an investment to say,
00:14:39.420 --> 00:14:41.020
like, hey, let's just slap Python in there.
00:14:41.020 --> 00:14:43.620
And then it paid dividends.
00:14:43.620 --> 00:14:48.560
And then once that started happening, it almost was a no-brainer.
00:14:48.560 --> 00:14:50.580
If you're going to be doing this work,
00:14:50.580 --> 00:14:56.180
you do it in a language that all of the big applications that you're running speak natively.
00:14:56.180 --> 00:15:00.140
And everything just kind of came together around that.
00:15:00.140 --> 00:15:02.620
Yeah, it just kind of snowballs from there.
00:15:02.620 --> 00:15:03.680
Exactly.
00:15:04.160 --> 00:15:06.560
And then once it's kind of established as the de facto,
00:15:06.560 --> 00:15:09.720
then everything else that comes in just has to speak it.
00:15:09.720 --> 00:15:15.220
In the industry, there's been a ton of new open source projects
00:15:15.220 --> 00:15:16.620
that are going on,
00:15:16.620 --> 00:15:21.620
like a standard way to pass 3D geometry between applications,
00:15:22.760 --> 00:15:28.260
a standard way of describing what's going on inside of a 3D scene.
00:15:28.260 --> 00:15:33.920
And every single one of those comes with Python bindings out of the box
00:15:33.920 --> 00:15:39.700
because everybody knows that you're going to have to interact with it via Python.
00:15:39.700 --> 00:15:40.560
Right.
00:15:40.640 --> 00:15:42.660
So if you don't have the Python bindings,
00:15:42.660 --> 00:15:46.640
it's almost like you don't have a mature scripting story or something like that.
00:15:46.640 --> 00:15:47.460
Yes.
00:15:47.460 --> 00:15:51.580
And it almost like that can be the bulk of your scripting story.
00:15:51.580 --> 00:15:55.200
And if you don't write it, then someone will write it really shortly
00:15:55.200 --> 00:15:57.480
because people need it.
00:15:57.480 --> 00:16:00.360
If you're going to be used, you need to speak Python.
00:16:00.360 --> 00:16:01.520
That's interesting.
00:16:01.520 --> 00:16:03.580
You were talking about sort of, you know,
00:16:03.580 --> 00:16:07.880
you had the scripting language Mel and it was doing fine, presumably,
00:16:07.880 --> 00:16:11.080
but it kind of, it could only do its thing.
00:16:11.080 --> 00:16:15.020
And I think that's also why Python's becoming one of the major reasons
00:16:15.020 --> 00:16:17.120
why it's becoming so popular in like data science
00:16:17.120 --> 00:16:20.940
is there are languages like R and so on.
00:16:20.940 --> 00:16:23.700
But if you want to build like a full stack sort of thing,
00:16:23.700 --> 00:16:26.340
like I want to do my, you know, the data science part,
00:16:26.340 --> 00:16:29.840
I want to do my science and my visualization and my web app
00:16:29.840 --> 00:16:32.480
and my database access all in Python.
00:16:32.480 --> 00:16:35.780
You know, you can't do that in these other more specialized languages.
00:16:36.460 --> 00:16:39.320
So it's interesting to see the parallels over there.
00:16:39.320 --> 00:16:41.280
Yeah, it is.
00:16:41.280 --> 00:16:48.200
I'd actually say the thing that I'm seeing where Python isn't in play as much
00:16:48.200 --> 00:16:51.600
comes from applications that were kind of originally developed
00:16:51.600 --> 00:16:56.220
for either like a very specific workflow or from outside the industry
00:16:56.220 --> 00:16:57.000
and they're coming in.
00:16:57.540 --> 00:17:02.940
a lot of those actually start with nowadays JavaScript engines built in
00:17:02.940 --> 00:17:07.680
because I think the same story has kind of repeated itself a little bit on the JavaScript side
00:17:07.680 --> 00:17:12.480
where it's so easy to embed at this point that for very little investment,
00:17:12.480 --> 00:17:16.640
you can go ahead and have a JavaScript interpreter running inside your app,
00:17:16.640 --> 00:17:19.480
just like you can have a Python interpreter inside your application.
00:17:20.140 --> 00:17:22.040
like within the entertainment industry,
00:17:22.040 --> 00:17:26.200
those are actually some of the big areas where we're kind of have a miss
00:17:26.200 --> 00:17:28.240
in terms of getting everything to talk to each other.
00:17:28.240 --> 00:17:36.400
Photoshop is a good example where there's various somewhat convoluted ways
00:17:36.400 --> 00:17:41.820
to try to get the JavaScript that Photoshop speaks to talk to Python outside of Photoshop
00:17:41.820 --> 00:17:44.540
and various places are doing that.
00:17:44.540 --> 00:17:51.480
But again, it's that idea of just how easy it is to create a scripting environment
00:17:51.480 --> 00:17:56.480
inside of these applications where there's a lot of value to being able to talk to it
00:17:56.480 --> 00:17:57.960
without writing compiled code.
00:17:57.960 --> 00:18:02.400
You know, I think the whole V8, the thing happening with Node,
00:18:02.400 --> 00:18:06.780
but really the V8 engine itself being a separate thing that you can host
00:18:06.780 --> 00:18:09.540
has done some pretty amazing stuff for JavaScript.
00:18:09.540 --> 00:18:11.020
Exactly.
00:18:11.560 --> 00:18:15.360
And I think some of the full stack, like it's Python all the way through,
00:18:15.360 --> 00:18:19.420
like the whole Node story and V8 is like it's JavaScript all the way through.
00:18:19.420 --> 00:18:20.300
Yeah.
00:18:20.300 --> 00:18:23.700
And it has a lot of the similar kind of parallels where it has a little bit more
00:18:23.700 --> 00:18:26.300
of the kitchen sink, not as much as Python does,
00:18:26.300 --> 00:18:30.580
but there's more and more JavaScript libraries popping up all the time,
00:18:30.580 --> 00:18:33.060
just like there are Python libraries too.
00:18:33.060 --> 00:18:36.680
So it's interesting just seeing that pattern replicate itself.
00:18:36.680 --> 00:18:38.880
It's kind of detrimental from where I'm sitting,
00:18:38.880 --> 00:18:40.880
because I would love it if all of those things spoke Python.
00:18:40.980 --> 00:18:41.860
It would make my job easier,
00:18:41.860 --> 00:18:45.720
but it's just kind of interesting seeing that take hold again.
00:18:53.720 --> 00:18:55.460
continuous delivery.
00:18:55.460 --> 00:19:03.160
Continuous delivery isn't just a buzzword.
00:19:03.160 --> 00:19:06.820
It's a shift in productivity that will help your whole team become more efficient.
00:19:06.820 --> 00:19:12.980
With SnapCI's continuous delivery tool, you can test, debug, and deploy your code quickly and reliably.
00:19:12.980 --> 00:19:18.880
Get your product in the hands of your users faster and deploy from just about anywhere at any time.
00:19:18.880 --> 00:19:24.120
Did you know that ThoughtWorks literally wrote the book on continuous integration and continuous delivery?
00:19:24.120 --> 00:19:29.260
Connect Snap to your GitHub repo and they'll build and run your first pipeline automagically.
00:19:29.620 --> 00:19:35.840
Thanks SnapCI for sponsoring this episode by trying them for free at snap.ci slash talkpython.
00:19:44.360 --> 00:19:45.240
That is super interesting.
00:19:45.240 --> 00:19:45.700
That is super interesting.
00:19:45.700 --> 00:19:53.900
It makes a lot of sense to say either Python or JavaScript as a proposition for somebody who's not a developer but needs to automate a thing.
00:19:53.900 --> 00:20:00.740
To say your API is C++ and you've got to have this compiler with these headers and these libs you're statically linking.
00:20:00.740 --> 00:20:02.720
That just doesn't fly, does it?
00:20:03.020 --> 00:20:03.520
No.
00:20:03.520 --> 00:20:09.020
The stuff that Python is used for tends to be a lot higher level workflow.
00:20:09.020 --> 00:20:12.140
I think you're taking workflow and translating it to code.
00:20:12.140 --> 00:20:14.680
So it tends to be pretty dynamic.
00:20:14.680 --> 00:20:16.680
It needs to be updated constantly.
00:20:16.680 --> 00:20:24.720
I mean, almost each project you'll be tweaking the stuff to work how the people working on that project need to work to get their job done most efficiently.
00:20:24.720 --> 00:20:27.060
And it doesn't need to be performant, I guess.
00:20:27.060 --> 00:20:30.380
Yeah, because it's just orchestrating the things that are probably written in C.
00:20:30.380 --> 00:20:31.560
Exactly.
00:20:31.560 --> 00:20:32.540
Interesting.
00:20:32.540 --> 00:20:40.040
You were talking about JavaScript and having the JavaScript try to interact with Python somehow.
00:20:40.040 --> 00:20:44.900
And obviously getting out of a JavaScript engine can be pretty tricky because they try to sandbox you a lot.
00:20:44.900 --> 00:20:55.320
But have you looked at PyPyJS or one of these embedded JavaScript foundation Python implementations?
00:20:55.320 --> 00:20:56.940
We haven't.
00:20:56.940 --> 00:20:57.980
I guess I should qualify.
00:20:57.980 --> 00:21:10.420
What I'm doing at Autodesk is actually a group that is putting together one of these production pipelines that is just part of a production management product that we make.
00:21:10.900 --> 00:21:29.900
So I'm now not working at a studio doing all this pipeline work, but working at a software company that is, again, just trying to make it so that the various workflows that we see being done in VFX and animation, just content creation in general, we make it really easy for people to get some of the grunt work out of that.
00:21:29.900 --> 00:21:35.400
Given that setup, we're not embedding the interpreters ourselves.
00:21:35.400 --> 00:21:41.900
So I'm working on the scripting code that's going to be able to talk to that application.
00:21:41.900 --> 00:21:44.920
So it's like Photoshop has JavaScript.
00:21:44.920 --> 00:21:52.440
We're not going to be able to embed Python in it, although we could do a plugin, get an embedded Python running.
00:21:52.440 --> 00:21:57.980
But then there's a lot of threading issues and other stuff that we've tried to be as seamless as possible.
00:21:57.980 --> 00:22:01.400
But you can only do so much with an application.
00:22:01.400 --> 00:22:04.660
It all depends on what kind of SDK and API they offer you.
00:22:05.120 --> 00:22:07.140
So we don't have that level of control.
00:22:07.140 --> 00:22:16.840
But we are looking at some standard RPC kind of libraries and trying to figure out what does make for a good bridge between those worlds.
00:22:16.840 --> 00:22:17.740
Right.
00:22:17.740 --> 00:22:24.400
I think probably the easiest way to bridge JavaScript to another thing is some kind of network layer, right?
00:22:24.400 --> 00:22:28.800
Network layer or even if you're not going over the network.
00:22:28.800 --> 00:22:29.660
Yeah, exactly.
00:22:30.260 --> 00:22:35.620
Like RPC, even if it's just talking to another process on the same machine.