forked from mikeckennedy/talk-python-transcripts
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path046_python_in_m_e.txt
More file actions
1414 lines (707 loc) · 58.7 KB
/
046_python_in_m_e.txt
File metadata and controls
1414 lines (707 loc) · 58.7 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
00:00:00 What did you experience the last time you watched a movie in a theater?
00:00:03 Were you captivated by the fast-paced action and special effects?
00:00:06 Deeply moved by the characters that came to life during those two hours when the outside world just melted away?
00:00:12 Yeah, movies are still magical.
00:00:14 What was likely not top of mind was all the work that went into that movie,
00:00:18 from the editing of the audio and video, to the special effects, the rendering, the coordination,
00:00:23 and maybe hundreds of creative professionals.
00:00:25 It turns out that Python plays a key role in coordinating all of that production work,
00:00:29 and that's what this episode is all about.
00:00:31 Join me as I talk with Rob Blau from Autodesk about Python in the movies and entertainment business.
00:00:37 This is Talk Python To Me, episode number 46, recorded January 28, 2016.
00:00:43 I'm a developer in many senses of the word, because I make these applications, but I also use these verbs to make this music.
00:00:54 I construct it line by line, just like when I'm coding another software design.
00:00:58 In both cases, it's about design patterns.
00:01:02 Anyone can get the job done, it's the execution that matters.
00:01:05 I have many interests, sometimes...
00:01:07 Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.
00:01:13 This is your host, Michael Kennedy.
00:01:16 Follow me on Twitter, where I'm @mkennedy.
00:01:18 Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via at talkpython.
00:01:24 This episode is brought to you by SnapCI and OpBeat.
00:01:28 Thank them for supporting the show on Twitter via snap underscore CI and OpBeat.
00:01:33 Hey, everyone.
00:01:35 Two weeks ago, I told you I had a huge announcement that I was really excited to share with you,
00:01:39 but couldn't.
00:01:40 Now that everything is in place, it's time to share my big plan with you.
00:01:44 When I started this podcast almost a year ago, I had modest expectations and more than a little
00:01:50 uncertainty about how it would be received by the community.
00:01:52 And honestly, every day I'm blown away by how many people's lives I touch and help educate
00:01:57 in some part of Python that was less well known to them.
00:02:00 I get a huge amount of satisfaction spending time making Python more relevant to you through
00:02:04 this podcast.
00:02:05 I've been thinking about how I do more of that.
00:02:07 I believe the natural counterpart to this podcast, which exposes people to new ideas and inspires
00:02:14 them to learn more about Python, is a comprehensive set of online courses to help you go from inspired
00:02:19 to empowered, from new developer to highly effective developer, from specialized developer to a
00:02:24 well-rounded one.
00:02:25 So today, I'm announcing the first course and taking the first step on a journey to build
00:02:30 this resource for you and the whole Python community.
00:02:33 Over the next two years, I plan to release 20 high-quality online courses that will be between
00:02:39 three to ten hours each.
00:02:41 These no-fluff courses will strive to make you effective with some corner of the Python ecosystem,
00:02:46 including the Python language, web apps, databases, GUIs, parallelism, and more.
00:02:51 The first course will be about the Python programming language, and will take a fun and playful approach
00:02:56 to teaching you the language details such as classes, loops, variables, and more.
00:03:01 It's called Python Jumpstart by Building 10 Applications.
00:03:03 It'll be about six hours long, and it will be a comprehensive introduction to the Python
00:03:07 language.
00:03:08 If this project resonates with you, I need your help.
00:03:11 As of today, I'm launching a Kickstarter to make the first course, this first step on
00:03:16 my journey, a reality.
00:03:17 Take a moment to visit the Kickstarter to see what it's all about.
00:03:20 Just go to talkpython.fm/course, and you'll be redirected to the Kickstarter page.
00:03:26 There are many reward levels, but the main one is the $29 student reward, which gives you
00:03:31 lifetime access to the course at a significant discount.
00:03:33 If you believe in this project and want to help, please tweet about the Kickstarter, share
00:03:38 it with your coworkers, or even back it yourself.
00:03:41 I'm really excited to start down this path to build something amazing for the community,
00:03:45 and I can't do it without you.
00:03:46 So any support or word-of-mouth endorsements you can give me will be deeply appreciated.
00:03:50 Please let me know what you think.
00:03:52 Send me a message over email, contact at talkpython.fm, or on Twitter via at Talk Python.
00:03:58 I'm also doubling my efforts on this podcast as well, so keep listening and sending in suggestions
00:04:03 and feedback, and I'll do my best to bring you interesting and relevant episodes.
00:04:07 Now, let's hear from Rob Blau about making movies and video games with Python.
00:04:11 Rob, welcome to the show.
00:04:13 It's great to be here.
00:04:14 Thanks for having me.
00:04:15 Oh, you're welcome.
00:04:16 Thanks for coming.
00:04:17 I'm super excited to talk about Autodesk.
00:04:19 You guys kind of make a little bit of everything.
00:04:22 There's so many different pieces of software that you write.
00:04:25 And it sounds like Python plays some pretty cool part in that.
00:04:29 Yeah, definitely.
00:04:30 So Autodesk is a great company.
00:04:33 The company mission is to help people build cool things.
00:04:37 So pretty much software that helps people realize their creative vision.
00:04:43 The largest piece is kind of on the AutoCAD, like production architecture side.
00:04:49 And the piece of Autodesk that I work in is the media and entertainment division.
00:04:56 So we get to work with animation houses, visual effects houses, and help build the software
00:05:03 that they use to do the cool things they do to put pixels and games together.
00:05:08 That's really cool.
00:05:09 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 and find my way to a movie theater, how many of those different experiences are modeled or
00:05:26 somehow created with Autodesk things?
00:05:29 Chances are every single step of the way from the car that you jumped into, somewhere along
00:05:35 the way from the factory that it was created in and the robots that made it, they were designed
00:05:39 using some of the Autodesk software, the actual car itself, the models, all of the pre-visualization
00:05:46 that people do in order to figure out what it's going to be.
00:05:49 And then the actual instructions for building it.
00:05:51 Autodesk makes products that do that.
00:05:54 I mean, the city streets and the planning, it's incredible, the places that the software
00:06:00 is used, and then the airplane, the exact same thing.
00:06:02 And then you're going to the movie theater.
00:06:04 The movie theater itself was probably done by an architect who was using AutoCAD in some
00:06:07 way, shape, or form, or Revit, which is used to build bigger projects and make sure that
00:06:13 all of the various components in the building, like the HVAC and the design and the wiring,
00:06:19 all talk to each other and will work once you actually build it.
00:06:23 And then you finally get the movie showing and you start seeing, nowadays, almost every
00:06:30 single shot has some kind of visual effect on it, whether it's just a little bit of 2D
00:06:35 cleanup that happens up to the full 3D.
00:06:40 The actual environment is completely created from scratch inside of some software.
00:06:46 Autodesk makes some of the most widely used pieces of software for that, like Maya 3 Studio
00:06:53 Max.
00:06:54 All of those are used to model and render what you're seeing up on screen.
00:06:59 That actually kind of blows my mind.
00:07:02 That's even more intense than my original thought.
00:07:04 That's awesome, though.
00:07:05 It's really cool.
00:07:06 Fun mission to have to just make it easier for people to realize their creative vision.
00:07:12 It's a nice one.
00:07:14 Yeah, I bet it is.
00:07:15 So let's totally dig into that.
00:07:17 But before we do, maybe sort of give me your background story.
00:07:20 Like, how do you get into this place where you're working on basically building everything
00:07:24 that makes up the synthetic world?
00:07:26 I had kind of a roundabout way there.
00:07:29 I went to school for computer science.
00:07:33 So from Boston, went to MIT and graduated around the first tech boom, did a couple of dot coms
00:07:42 at that point and built up kind of just a varied background.
00:07:47 I did a lot of scripting, a lot of database work, a lot of just systems admin kind of stuff.
00:07:53 Just there was a startup culture and you did whatever you had to do to get going.
00:07:57 And from that, I went to actually a Linux conference and saw a presentation from DreamWorks,
00:08:04 DreamWorks Animation, where they were presenting how they're using Linux because they were one
00:08:08 of the first companies to switch over to kind of big open source software as the foundation
00:08:14 of the technology that they're using.
00:08:16 Interesting.
00:08:17 What were they switching from?
00:08:18 Do you know?
00:08:18 Silicon Graphics?
00:08:20 Yeah.
00:08:20 Back in the day, it was kind of Silicon Graphics.
00:08:22 Yeah.
00:08:23 So they kind of had deals with Red Hat going and figuring out kind of the enterprise Linux
00:08:29 distro.
00:08:29 They were early in adopting all of that stuff.
00:08:32 So you intersected there when they were talking about how they were using Linux.
00:08:35 Okay.
00:08:36 Exactly.
00:08:36 And I got to talking with them and it turns out that they had an interesting job that was
00:08:44 doing, it's called pipeline work in the visual effects industry, which is the software that
00:08:49 helps tie together what all of the different departments do.
00:08:53 So you've got an artist sitting there, they've got a very specific job to do.
00:08:57 It's almost like in an assembly line in a factory, you've got your station where you're doing your
00:09:02 very specific thing, except with an artist, it's a very creative process, but they still have to
00:09:07 take work done by somebody else, get it working for them, do what they're supposed to do to it,
00:09:12 package it up for somebody else and then hand it to somebody else.
00:09:15 And all of those pieces other than that creative work is kind of overhead that it's
00:09:19 nice to artists to not have to do.
00:09:21 And that's where this idea of pipeline comes in.
00:09:24 So I was kind of fascinated by that right from this original conversation.
00:09:29 Plus I had about 10 Boston winters and the idea of California sounded pretty good.
00:09:35 So I went to work for DreamWorks where I was for five years and was a member of their pipeline
00:09:43 department, ended up being a supervisor in that department.
00:09:47 And that actually is where I first started using Python extensively.
00:09:53 The pipeline at DreamWorks was Pro-based because back originally when you were doing text processing
00:10:00 and having to glue together different software, Pro made a lot of sense.
00:10:06 Right.
00:10:07 What year was that?
00:10:09 That was about 2003, 2004.
00:10:12 Yeah.
00:10:12 I'm talking about right now.
00:10:13 Yeah.
00:10:14 Pearl was still in a pretty strong position back then.
00:10:17 Exactly.
00:10:17 And the pipeline that I'm talking about had been in place for like a good probably five, six,
00:10:26 seven years before that even.
00:10:27 So when it was written, like that was the choice.
00:10:30 But there was something that was kind of interesting that was happening with software in the 3D space.
00:10:38 There was already a couple of pieces of software that had Python embedded in them.
00:10:44 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 And at that point, if one of the biggest applications that you're using in your pipeline speaks Python natively,
00:11:01 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 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 We get the chance to run inside the application with code that you're using to tie everything together,
00:11:26 which is amazing because all of a sudden you can speak the same language throughout the entire pipeline
00:11:33 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 just doing as much creative work as possible.
00:11:44 Right.
00:11:45 Yeah, that's really cool.
00:11:45 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 Yep, which actually was, at the time, controversial.
00:11:58 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 But since then, nowadays, it's a no-brainer.
00:12:09 Almost every new piece of software that comes out has an embedded Python interpreter,
00:12:14 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 in order to tie stuff together, or even just the tools that you write for artists.
00:12:28 Unless it has to be compiled, you tend to gravitate towards Python to do it.
00:12:33 That totally makes sense to me.
00:12:34 What I think is interesting, and I see it happening in data science, I see it happening in education,
00:12:38 you're telling me it happens here as well, which makes a lot of sense, is it seems like Python is becoming more and more popular, and that popularity is almost accelerating.
00:12:52 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 Why do you think that is the case in the entertainment industry?
00:13:03 I think I was thinking about this in advance of sitting down.
00:13:08 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 Those two things combined together made it so that with just a little bit of C code,
00:13:24 all of a sudden, the scripting environment that you could offer people became incredibly rich.
00:13:32 And because of the ease of exposing your C, C++ libraries through to Python,
00:13:40 even if you just go natively to the Python C API, it meant that all of these programs that didn't necessarily have a great scripting language
00:13:53 could have one without too much investment.
00:13:57 Now, Maya actually did have an incredibly embedded scripting language, still does, called Mel,
00:14:04 but it was only for Maya.
00:14:06 And people were Mel experts.
00:14:08 There was a ton of work done in Mel, but your world ended at the boundaries that Maya provided.
00:14:15 And it didn't give you too much of a chance to extend outside of that.
00:14:19 Whereas with Python, you get the exact same kind of scriptability, but now you get to talk to the rest of the world and the rest of the universe
00:14:27 that's also speaking Python, which is huge.
00:14:30 So I think the application developers saw that, and it wasn't that huge an investment to say,
00:14:39 like, hey, let's just slap Python in there.
00:14:41 And then it paid dividends.
00:14:43 And then once that started happening, it almost was a no-brainer.
00:14:48 If you're going to be doing this work, you do it in a language that all of the big applications that you're running speak natively.
00:14:56 And everything just kind of came together around that.
00:15:00 Yeah, it just kind of snowballs from there.
00:15:02 Exactly.
00:15:04 And then once it's kind of established as the de facto, then everything else that comes in just has to speak it.
00:15:09 In the industry, there's been a ton of new open source projects that are going on,
00:15:16 like a standard way to pass 3D geometry between applications, a standard way of describing what's going on inside of a 3D scene.
00:15:28 And every single one of those comes with Python bindings out of the box because everybody knows that you're going to have to interact with it via Python.
00:15:39 Right.
00:15:40 So if you don't have the Python bindings, it's almost like you don't have a mature scripting story or something like that.
00:15:46 Yes.
00:15:47 And it almost like that can be the bulk of your scripting story.
00:15:51 And if you don't write it, then someone will write it really shortly because people need it.
00:15:57 If you're going to be used, you need to speak Python.
00:16:00 That's interesting.
00:16:01 You were talking about sort of, you know, you had the scripting language Mel and it was doing fine, presumably,
00:16:07 but it kind of, it could only do its thing.
00:16:11 And I think that's also why Python's becoming one of the major reasons why it's becoming so popular in like data science
00:16:17 is there are languages like R and so on.
00:16:20 But if you want to build like a full stack sort of thing, like I want to do my, you know, the data science part,
00:16:26 I want to do my science and my visualization and my web app and my database access all in Python.
00:16:32 You know, you can't do that in these other more specialized languages.
00:16:36 So it's interesting to see the parallels over there.
00:16:39 Yeah, it is.
00:16:41 I'd actually say the thing that I'm seeing where Python isn't in play as much
00:16:48 comes from applications that were kind of originally developed for either like a very specific workflow or from outside the industry
00:16:56 and they're coming in.
00:16:57 a lot of those actually start with nowadays JavaScript engines built in because I think the same story has kind of repeated itself a little bit on the JavaScript side
00:17:07 where it's so easy to embed at this point that for very little investment,
00:17:12 you can go ahead and have a JavaScript interpreter running inside your app,
00:17:16 just like you can have a Python interpreter inside your application.
00:17:20 like within the entertainment industry, those are actually some of the big areas where we're kind of have a miss
00:17:26 in terms of getting everything to talk to each other.
00:17:28 Photoshop is a good example where there's various somewhat convoluted ways
00:17:36 to try to get the JavaScript that Photoshop speaks to talk to Python outside of Photoshop
00:17:41 and various places are doing that.
00:17:44 But again, it's that idea of just how easy it is to create a scripting environment
00:17:51 inside of these applications where there's a lot of value to being able to talk to it
00:17:56 without writing compiled code.
00:17:57 You know, I think the whole V8, the thing happening with Node, but really the V8 engine itself being a separate thing that you can host
00:18:06 has done some pretty amazing stuff for JavaScript.
00:18:09 Exactly.
00:18:11 And I think some of the full stack, like it's Python all the way through,
00:18:15 like the whole Node story and V8 is like it's JavaScript all the way through.
00:18:19 Yeah.
00:18:20 And it has a lot of the similar kind of parallels where it has a little bit more
00:18:23 of the kitchen sink, not as much as Python does, but there's more and more JavaScript libraries popping up all the time,
00:18:30 just like there are Python libraries too.
00:18:33 So it's interesting just seeing that pattern replicate itself.
00:18:36 It's kind of detrimental from where I'm sitting, because I would love it if all of those things spoke Python.
00:18:40 It would make my job easier, but it's just kind of interesting seeing that take hold again.
00:18:53 continuous delivery.
00:18:55 Continuous delivery isn't just a buzzword.
00:19:03 It's a shift in productivity that will help your whole team become more efficient.
00:19:06 With SnapCI's continuous delivery tool, you can test, debug, and deploy your code quickly and reliably.
00:19:12 Get your product in the hands of your users faster and deploy from just about anywhere at any time.
00:19:18 Did you know that ThoughtWorks literally wrote the book on continuous integration and continuous delivery?
00:19:24 Connect Snap to your GitHub repo and they'll build and run your first pipeline automagically.
00:19:29 Thanks SnapCI for sponsoring this episode by trying them for free at snap.ci slash talkpython.
00:19:44 That is super interesting.
00:19:45 That is super interesting.
00:19:45 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 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 That just doesn't fly, does it?
00:20:03 No.
00:20:03 The stuff that Python is used for tends to be a lot higher level workflow.
00:20:09 I think you're taking workflow and translating it to code.
00:20:12 So it tends to be pretty dynamic.
00:20:14 It needs to be updated constantly.
00:20:16 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 And it doesn't need to be performant, I guess.
00:20:27 Yeah, because it's just orchestrating the things that are probably written in C.
00:20:30 Exactly.
00:20:31 Interesting.
00:20:32 You were talking about JavaScript and having the JavaScript try to interact with Python somehow.
00:20:40 And obviously getting out of a JavaScript engine can be pretty tricky because they try to sandbox you a lot.
00:20:44 But have you looked at PyPyJS or one of these embedded JavaScript foundation Python implementations?
00:20:55 We haven't.
00:20:56 I guess I should qualify.
00:20:57 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 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 Given that setup, we're not embedding the interpreters ourselves.
00:21:35 So I'm working on the scripting code that's going to be able to talk to that application.
00:21:41 So it's like Photoshop has JavaScript.
00:21:44 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 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 But you can only do so much with an application.
00:22:01 It all depends on what kind of SDK and API they offer you.
00:22:05 So we don't have that level of control.
00:22:07 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 Right.
00:22:17 I think probably the easiest way to bridge JavaScript to another thing is some kind of network layer, right?
00:22:24 Network layer or even if you're not going over the network.
00:22:28 Yeah, exactly.
00:22:30 Like RPC, even if it's just talking to another process on the same machine.
00:22:35 Yes, exactly.
00:22:36 But making that a really rich communication channel.
00:22:39 And there's some impressive projects out there that do that.
00:22:42 And we're actually kicking off an effort to evaluate them and try to pick one that's going to work well for us.
00:22:51 One of the things you'd sent over is you talked about sort of Python and games.
00:22:59 And what's the story there?
00:23:00 Sure.
00:23:01 Games is kind of an interesting take on all of this because VFX and pixel production has been around longer
00:23:12 and has a bunch of different constraints than games have.
00:23:17 So far, games have really been driven by the game engine and the developers as almost separate from the creation of the models and the shaders that show up in the game.
00:23:34 All of those need to play well together.
00:23:36 But it's almost been more of an agile developer kind of style than a cascade of content flowing between different departments,
00:23:47 which is what you see in animation and VFX, mostly because the complexity of all of the environments and models that VFX has been playing around with has been higher than what you've seen in games.
00:24:01 But that's actually switching a lot nowadays, where the complexity of production in a game is a lot of times higher than what you would see in a feature film.
00:24:14 The need for this kind of pipeline is showing up in games more and more.
00:24:20 But they've got this whole coding side to the game where the artists are just a piece of what's going on and they need the developers in order to tie everything that they're creating in.
00:24:32 And it all comes together in the game engine.
00:24:34 That is what's actually going to be running all this stuff at the end of the day.
00:24:38 What we've seen there is there's some game engines that speak JavaScript coming out now.
00:24:44 The tried and true has been .NET.
00:24:47 Just a lot of this has been pretty Microsoft-centric.
00:24:51 And the .NET code can speak Python, the iron Python that's out there, which has been kind of an interesting tie-in for us.
00:25:01 Or Lua, actually, is another scripting language that a lot of the game engines tend to speak.
00:25:08 But it's yet another kind of separate world.
00:25:10 Even the .NET side has limitations.
00:25:13 It lets us do kind of basic Python integration.
00:25:16 But you hit brick walls pretty quickly when you want to do cross-platform networking stuff or GUIs, especially.
00:25:24 You have to start writing things specifically for the .NET flavor as opposed to treating it just like another Python interpreter that's out there.
00:25:32 Right.
00:25:32 Yeah, you get very, very specific, like WPF-type stuff.
00:25:37 You can't do PySide, PyQt type of things.
00:25:41 That kind of, which is much more cross-platform.
00:25:43 Can you give me just your feedback on what you've done and what it's like to work with IronPython?
00:25:48 I haven't actually...
00:25:49 I've played with it and looked at it, but I don't really know much about it.
00:25:54 So it'd be interesting to hear.
00:25:55 I've actually found it to be pretty good.
00:25:58 The boundaries that you hit are kind of what you'd expect, where Python itself starts having dependencies on third-party libraries, like SSL implementation or the GUI kind of side of the world.
00:26:10 But, I mean, personally, I've had fun little side projects like getting IronPython up and running in a plugin for Microsoft Office projects.
00:26:21 So that, you know, there's an API that's available only via Python.
00:26:24 You can start interacting with it from within Excel in order to kind of get deep scripting ability within something like that without having to write visual basics.
00:26:33 So that you can, again, reuse that Python code base that you've got.
00:26:37 Yeah, that's quite interesting.
00:26:40 It's kind of a Frankenstein kind of approach, but a lot of the integration that we end up doing has some element of that because you're really trying to establish this rich Python programming environment in all of these different spots.
00:26:57 And some of them are more conducive to it.
00:26:59 Some of them, you kind of have to jam it in.
00:27:03 They resist a little more, huh?
00:27:05 Exactly.
00:27:06 IronPython was a Microsoft project.
00:27:09 I think it was created by people inside Microsoft or maybe they created it and promptly joined Microsoft.
00:27:14 I can't remember the exact chronology of it.
00:27:16 But they, a while ago, set it free and said, we're not really doing anything more with IronPython, but it's now this sort of open source project.
00:27:25 The world can have it.
00:27:26 And I just, like, a few hours ago, although it's been out for a couple of months, learned about this thing called Pyjion.
00:27:33 Pyjion?
00:27:34 P-Y-J-I-O-N.
00:27:36 Have you heard of this?
00:27:37 I've heard the name, but I don't actually know much more than that.
00:27:41 It's kind of a competitor to PyPy, which is a JET compiled runtime implementation for Python.
00:27:49 But this is one that runs on the new open source cross-platform version of .NET.
00:27:54 So maybe there's something interesting there coming in the future.
00:27:57 I don't know.
00:27:57 We'll see.
00:27:58 But it's interesting to see them taking kind of a second shot at something like that.
00:28:03 Cool.
00:28:04 I'll just check that out.
00:28:05 Because something like that could potentially open up, like, the game engines that speak .NET to the deep integration with kind of the rest of the creative process that would share the pipeline from feature animation and the kinds of complex asset builds, like the models and the various assets that you see on screen, that process for games.
00:28:29 Yeah, absolutely.
00:28:30 I mean, IronPython seemed really cool, but kind of like you were saying, its limitation is you're all in on Windows.
00:28:37 Like, it only runs on Windows.
00:28:39 You have to really program against the .NET, so at the time, Windows-specific APIs.
00:28:45 But with the cross-platform plus this, you know, maybe that sort of opens up again.
00:28:50 It's going to be really interesting.
00:28:52 I don't know where it is.
00:28:53 Is that the mono environment?
00:28:55 No.
00:28:56 No, it's the mono environment was Miguel de Caza's work on sort of re-implementing .NET, which is Herculean.
00:29:06 And they've gone on to do Xamarin, right, with the mobile stuff.
00:29:10 So this is a new effort called the Core CLR by Microsoft to do a shell or a core kernel of .NET that's totally cross-platform that you can do on OS X and Linux and sort of, but, you know, official, not like a sort of frenemy-type project in what they're doing.
00:29:27 So it'll be interesting to see if this can bring a really rich version of Python to that story, kind of like we have Jython for Java.
00:29:36 Exactly.
00:29:37 But, you know, that's not really updated really quickly.
00:29:40 So maybe, I don't know, I have high hopes, but they may get dashed.
00:29:43 We'll see.
00:29:44 I hope it comes out awesome.
00:29:46 We'll see.
00:29:46 Definitely dig into that.
00:29:48 Thanks.
00:29:48 Yeah, you bet.
00:29:49 This episode is brought to you by OpBeat.
00:30:04 OpBeat is application monitoring for developers.
00:30:07 It's performance monitoring, error logging, release tracking, and workflow in one simple product.
00:30:11 OpBeat is integrated with your code base and makes monitoring and debugging of your production apps much faster and your code better.
00:30:18 OpBeat is free for an unlimited number of users.
00:30:21 And starting today, December 1st, OpBeat is announcing that their Flask support is graduating from beta to a full commercial product.
00:30:28 Visit opbeat.com slash Flask to get started today.
00:30:32 There sounds like a lot of positive news from all the cool things you're doing and the way you're able to weave these pipelines together.
00:30:48 I want to kind of talk about what you see, the sticking points and so on a bit.
00:30:53 But before we do, maybe just to give me and everyone else a better idea, could you describe what the steps are and this pipeline that you talk about?
00:31:03 What are people doing?
00:31:05 What does the software have to do?
00:31:06 Just so we get a little more concrete idea there.
00:31:08 The kind of nature of this is that you can go down these giant rabbit holes.
00:31:14 Like you can go extremely deep into automating things.
00:31:18 And traditionally, only fairly large studios that could afford having an R&D department had the ability to go deep.
00:31:27 Lots of places had pipelines, but they tend to be pretty easy handoffs rather than tackling a lot of the deeper issues.
00:31:35 It can start as early as a script.
00:31:39 If you've got a script that you're thinking of making a movie of or that you need to do visual effects for, it tends to come in from some program that stores it as an XML file.
00:31:53 You can write a parser for that in Python and use that in order to get a listing of here's all of the different scenes in the movie and here's the characters and location, things like that.
00:32:03 Which, if you were doing this by hand, traditionally you would do a breakdown where you would just build up a spreadsheet of all of those things so that you can start getting your head around what you have to build.
00:32:12 You go ahead and you start storyboarding things so that you get an idea of what everything is going to look like.
00:32:19 And there's various software that's built around storyboarding.
00:32:22 I mean, Photoshop is kind of one of few players in that area.
00:32:26 Even then, you tend to just have these images that you're working on and then tracking those to say, OK, here's the current storyboards that relate to this scene.
00:32:37 We want to hand them off to editorial that's going to start cutting them together into a movie that we can watch to get a sense of how this plays together.
00:32:44 There's lots of iterations there that go back and forth.
00:32:47 So you have to keep track of those files and know which ones were approved, what the notes were, so that whoever's going to be doing the next iteration on that can take those into account.
00:32:57 And it's really trying to put some organization around a very creative, quick iteration workflow without getting in the way of that creative process.
00:33:06 So then you start getting this editorial content together where you're cutting together these images on a timeline and you get a sense of timing.
00:33:15 That tends to be a place where you need a lot of R&D to dig in because a lot of the editorial software out there, Avid being the biggest one, tends to be a little bit of a black box.
00:33:27 You've got Final Cut, which has an XML spec that you can start taking apart, but you don't get a chance to understand too much of what's going on inside of editorial software.
00:33:37 Sure.
00:33:38 So are you guys doing actual processing of MP4 files or raw assets in Python and looking at them, that kind of stuff?
00:33:47 So an example of how Python would tie in over there, not with Autodesk, but my previous job at a studio that's in Portland called Leica that does stop motion animation.
00:33:58 We actually, there's a C library around this file format called AAF that is what the Avid editorial software speaks.
00:34:08 And it's a pretty obscure format, very complicated.
00:34:12 The API is very complicated.
00:34:14 And we wrapped that with Python bindings so that we could take a export from Avid and really deconstruct it, which meant that we actually were able to know which storyboards an editor cut in where and what characters were in that storyboard.
00:34:33 So that when you're going ahead and putting together a shot, you would know generally the contents of that and all of the comments that came through, all of the notes that the director had for the storyboard artist, which is incredibly valuable because in the shot, you've got to go ahead and take your 3D models and bring them in.
00:34:55 So having the list of what's already been included from the storyboard artist gives your layout artist who's doing that work a leg up and you can get started and you can write a tool to automate the initial pass at that and then let him actually do the creative piece of that, which is where you should be spending his time rather than searching for the right models to put in.
00:35:15 And then when it gets to animation, it's really valuable for the animator to be able to see all of the notes that the director had for the storyboard artist because they're very applicable to the job that he has to do.
00:35:25 And none of that would be readily available without being able to connect the dots between all of those different handoffs.
00:35:32 So connecting those dots and managing those handoffs and making it so that you can deal with this explosion of data that happens throughout this process in a kind of tractable, meaningful way is what the pipeline is responsible for.
00:35:49 Okay.
00:35:49 Okay.
00:35:49 That gives me a really good view into it.
00:35:51 I think it seems like there's all these different apps that the various people have to use, editors, artists, and so on, and they don't necessarily talk to each other.
00:36:02 Right?
00:36:02 So you're kind of writing.
00:36:03 Yeah.
00:36:04 So you're kind of writing this glue that can turn that into like one almost distributed data source or something.
00:36:12 Right?
00:36:12 Right.
00:36:14 It's kind of like if you're used to using Excel on one front and you've got this text editor that you use on another front, if you were able to kind of connect those together because it knew that you're doing accounting work and it was able to actually react to the files that you're saving from the text editor, parse them, and automatically bring them into your spreadsheet so that you didn't have to manually do that.
00:36:39 Each time you've changed one piece of information and get the rest of it in sync with that.
00:36:45 It's kind of that on an extremely grand scale.
00:36:49 I don't know if you have the answer off the top of your head or really no, but I'm thinking about all these different processes and all these different raw editions and then produced and sliced up editions.
00:37:04 So these files, you know, if I go and get like a movie, it's probably a couple of gigabytes.
00:37:08 But what's the data, the total data size for like a modern production movie or something?
00:37:15 Do you have an idea?
00:37:16 Oh, we're in many terabytes land nowadays.
00:37:20 Yeah, it is terabytes and terabytes in order to do the models and the effects work and all of the simulations that need to happen in order to get the quality that we're seeing on screen.
00:37:33 It's incredible the amount of data that goes into just those final pixels that you see.
00:37:39 So like the gig, couple gig download that you get, which is a really high quality video that you could watch.
00:37:44 Yeah.
00:37:45 Each of those, you know, frames as gigabytes and gigabytes and gigabytes, like hundreds of gigs behind it alone.
00:37:52 So we put it all together at 24 frames a second for feature length.
00:37:56 It definitely adds up.
00:37:58 Yeah.
00:37:58 Wow, that's crazy.
00:37:59 It is the scale and especially just the amount of data and the number of people involved and the amount of handoffs that happen in order to achieve that thing that is on the screen is pretty amazing.
00:38:14 Yeah, I bet it is.
00:38:16 Everything sounds really good, but you said that there was actually some issues that you were running into.
00:38:22 Like one of them was that using Python 3 in this world is not something you can just necessarily jump straight into.
00:38:28 A lot of the issues kind of around Python use almost come from how successful Python has been and how it's embedded in so many different places.
00:38:38 We just have this versionitis problem where currently the code that we're writing, we actually support back to Python 2.4 because there's some versions of software that are out there and they've been updated since.
00:38:53 But studios are pretty notoriously slow to update if everything is still working.
00:38:58 It had Python 2.4 embedded in it.
00:39:00 There's definitely a lot of Python 2.5, 2.6 that's still out there.
00:39:06 The majority of modern stuff is on Python 2.7.
00:39:08 There's like one notable source project that's made the jump to Python 3.
00:39:14 But because the nature of this pipeline work is to glue stuff together, when you have a jump that's not backwards compatible, it kind of makes it hard because you have to have two different code bases.
00:39:29 There's one that will run for all of the environments that are Python 2.5 based and one that will run for everything that's Python 3.5 based.
00:39:37 And you can kind of work to minimize this.
00:39:40 But there's definitely this hard jump that happens because not all of these pieces of software are going to update their Python interpreters at the same time.
00:39:50 And there's nothing that says that you'll be able to, as a studio, be able to update to that version of that software at the same time.
00:39:58 It gets into a whole lot of issues from just cost, support, licensing, getting the bugs out of it, down to having the resources to update your code to run in Python 3.
00:40:08 Wow, that's crazy.
00:40:10 That's going to be an interesting cliff for the visual effects feature animation world to get to the other side of.
00:40:18 There's various attempts within the industry to try to control this versionitis issue because it's not just Python.
00:40:26 There's all sorts of common libraries that are used throughout production.
00:40:31 And whenever they don't match, it causes issues.
00:40:33 So there's a VFX reference platform that tries to standardize some things.
00:40:38 Python 3 isn't even on the radar of that.
00:40:41 I think Python 2.7.whatever is the target for the foreseeable future.
00:40:48 I think it's probably going to be dropping support with a combination of security issues that just force updates.
00:40:56 That'll be the thing that finally gets us as an industry to the other side of that.
00:41:01 But it is kind of unfortunate just because of the wide range of versions that you have to support and the dependent libraries and all of the complications that come up trying to develop software in that kind of an environment.
00:41:13 Yeah, that really, that's quite challenging, it sounds like.
00:41:16 I mean, when I think of people that are using Python 2 and they say we can't switch to Python 3, in my mind, I often think of a couple things.
00:41:26 Like one is we have a quarter million or more lines of code that was tested and is working on Python 2.
00:41:34 And we're just not going to change that because it's too risky and it's just, you know, it's not broken.
00:41:39 We don't really want to mess with it.