forked from mikeckennedy/talk-python-transcripts
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path020_interactive_python.vtt
3005 lines (2003 loc) · 77.9 KB
/
020_interactive_python.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.940
What if your computer science textbooks could run their Python code samples,
00:00:03.940 --> 00:00:06.220
and that code ran directly in your browser?
00:00:06.220 --> 00:00:09.420
Kind of like JavaScript, but better because Python.
00:00:09.420 --> 00:00:13.480
It is possible, and Brad Miller is making it happen.
00:00:13.480 --> 00:00:20.660
This is Talk Python to Me, episode number 20, recorded Tuesday, July 7th, 2015.
00:00:20.660 --> 00:00:49.320
Welcome to Talk Python to Me, a weekly podcast on Python,
00:00:49.320 --> 00:00:52.400
the language, the libraries, the ecosystem, and the personalities.
00:00:52.400 --> 00:00:54.420
This is your host, Michael Kennedy.
00:00:54.420 --> 00:00:56.740
Follow me on Twitter, where I'm @mkennedy,
00:00:56.740 --> 00:01:01.280
and keep up with the show and listen to past episodes at talkpythontome.com,
00:01:01.280 --> 00:01:04.820
and follow the show on Twitter via at Talk Python.
00:01:04.820 --> 00:01:10.560
This episode will be talking to Dr. Brad Miller about interactive Python,
00:01:10.560 --> 00:01:15.280
Python in higher education, and Sculpt, the Python that you run in your browser.
00:01:16.220 --> 00:01:20.360
I'm happy to tell you that this episode is brought to you by Hired and Codeship.
00:01:20.360 --> 00:01:26.320
Thank them for supporting the show on Twitter via at Hired underscore HQ and at Codeship.
00:01:26.320 --> 00:01:28.220
Now let's get right to the show.
00:01:28.220 --> 00:01:32.800
Brad Miller is an associate professor of computer science at Luther College.
00:01:32.800 --> 00:01:35.380
He's the founder of RuneStone Interactive.
00:01:35.380 --> 00:01:39.760
He loves to travel, hack, bike, and cook, but not necessarily in that order.
00:01:39.760 --> 00:01:41.560
Brad, welcome to the show.
00:01:42.180 --> 00:01:44.320
Thanks. It's a great pleasure to be here.
00:01:44.320 --> 00:01:47.560
Yeah. You guys are doing some really awesome stuff over at RuneStone,
00:01:47.560 --> 00:01:52.880
and online platforms for people learning and teaching Python,
00:01:52.880 --> 00:01:54.200
and that's what we're going to talk about today.
00:01:54.200 --> 00:01:59.140
But before we get to online Python and Python in the browser and a bunch of other cool stuff,
00:01:59.140 --> 00:02:00.700
what's your story? How did you get here?
00:02:00.700 --> 00:02:04.920
So, well, we can go all the way back to 1979,
00:02:04.920 --> 00:02:07.540
when I first got into programming, I suppose.
00:02:07.820 --> 00:02:12.740
That was when our high school got the first Apple IIs installed,
00:02:12.740 --> 00:02:15.760
and I discovered AppleSoft Basic,
00:02:15.760 --> 00:02:21.040
and I discovered that I could win a lot more often if I hacked the lemonade stand game
00:02:21.040 --> 00:02:25.580
and made it rain on Player 2 a higher percentage of the time than Player 1.
00:02:25.580 --> 00:02:29.660
So that was kind of my introduction to programming,
00:02:29.660 --> 00:02:33.020
was digging into Basic code.
00:02:33.020 --> 00:02:33.860
That's really awesome.
00:02:34.100 --> 00:02:36.580
I mean, that's what a lot of programming is, is you're like,
00:02:36.580 --> 00:02:38.280
I don't want to just use this tool.
00:02:38.280 --> 00:02:41.540
I want to make a better tool or change it or whatever, right?
00:02:41.540 --> 00:02:42.800
And that's really cool.
00:02:42.800 --> 00:02:46.940
It doesn't say much about my ethics in those days, but...
00:02:46.940 --> 00:02:47.700
That was lemonade.
00:02:47.700 --> 00:02:48.920
It was, yeah.
00:02:48.920 --> 00:02:52.080
Better than Oregon Trail,
00:02:52.080 --> 00:02:55.320
which was the other popular game back in those days.
00:02:55.320 --> 00:02:56.040
Yeah, indeed.
00:02:56.880 --> 00:02:57.700
So, yeah.
00:02:57.700 --> 00:03:01.180
So that's how you got started and sort of interested in computers.
00:03:01.180 --> 00:03:02.500
How did you get into programming?
00:03:02.500 --> 00:03:10.320
So I started out as a computer science major at Luther when I went to undergrad
00:03:10.320 --> 00:03:15.720
and learned, you know, that was back in the days when people learned Pascal.
00:03:16.720 --> 00:03:23.920
And then I started my career at a, you know, big iron mainframe manufacturer called Control Data
00:03:23.920 --> 00:03:28.100
and worked on energy management systems for Control Data.
00:03:28.100 --> 00:03:28.720
Yeah.
00:03:28.720 --> 00:03:29.080
Wow.
00:03:29.080 --> 00:03:29.700
What kind of language?
00:03:29.700 --> 00:03:31.100
Yeah.
00:03:31.100 --> 00:03:31.700
Fortran.
00:03:31.700 --> 00:03:32.840
So...
00:03:32.840 --> 00:03:33.760
Oh, yeah.
00:03:33.760 --> 00:03:38.540
I was told when I was in college and starting out that Fortran was the most important language
00:03:38.540 --> 00:03:40.100
I was ever going to learn in my career.
00:03:40.100 --> 00:03:40.320
Yeah.
00:03:40.400 --> 00:03:41.760
And I pleaded to take C++.
00:03:41.760 --> 00:03:42.760
I said, after Fortran.
00:03:42.760 --> 00:03:43.980
All right, fine.
00:03:43.980 --> 00:03:45.720
I just missed the punch card days.
00:03:45.720 --> 00:03:49.540
So I guess Fortran is as bad as I get.
00:03:49.540 --> 00:03:50.020
Yeah.
00:03:50.020 --> 00:03:50.560
Cool.
00:03:50.560 --> 00:03:51.980
Yeah.
00:03:51.980 --> 00:03:57.160
And I had a great internship with Amoco Research where I got to work in their AI lab.
00:03:57.160 --> 00:04:00.380
So that got me interested in Lisp and interpreted languages.
00:04:00.380 --> 00:04:03.220
And, yeah.
00:04:03.260 --> 00:04:06.520
Then in grad school, I started hacking in Perl a lot.
00:04:06.520 --> 00:04:10.680
And then C++ and Java.
00:04:10.680 --> 00:04:15.480
And then I made a career change in 2003 where I became a college professor.
00:04:15.480 --> 00:04:16.420
Oh, wow.
00:04:16.420 --> 00:04:21.360
I left a successful startup company and came back to teach at my alma mater.
00:04:21.900 --> 00:04:27.200
And I taught Java in the introductory CS class for a year.
00:04:27.200 --> 00:04:32.840
And I realized that it was just the worst possible language for teaching people that had never
00:04:32.840 --> 00:04:34.320
programmed before how to program.
00:04:34.320 --> 00:04:39.900
And so we looked around and there was this language called Python, which was still, you
00:04:39.900 --> 00:04:44.640
know, I know it's not new, but it was really very, very new in the educational field back
00:04:44.640 --> 00:04:45.480
in 2003.
00:04:45.480 --> 00:04:48.100
In fact, there was only one textbook available.
00:04:48.800 --> 00:04:53.980
But we decided that we were going to go ahead and adopt Python as our introductory language for
00:04:53.980 --> 00:05:00.240
teaching in computer science, which immediately led to myself and my colleague, David Random,
00:05:00.240 --> 00:05:06.040
writing a data structures textbook because we wanted to be able to teach Python in both CS1 and CS2.
00:05:06.040 --> 00:05:06.540
Yeah.
00:05:06.540 --> 00:05:11.040
Of course, if the book isn't there, maybe you have to go back to Java and you don't want to do that.
00:05:11.040 --> 00:05:11.540
No.
00:05:11.540 --> 00:05:12.120
Yeah.
00:05:12.120 --> 00:05:15.600
So that was definitely, you know, okay, we can use this one textbook that's there, but we're
00:05:15.600 --> 00:05:16.520
going to write the other one.
00:05:17.120 --> 00:05:19.000
And so that worked out really well.
00:05:19.000 --> 00:05:20.200
Yeah, that is really cool.
00:05:20.200 --> 00:05:26.800
You know, one of the things I think is really a success story for Python is it's become the
00:05:26.800 --> 00:05:31.280
most popular sort of introductory computer science language, at least at U.S. universities.
00:05:31.280 --> 00:05:32.760
But I think that's pretty global.
00:05:32.760 --> 00:05:33.980
Yeah.
00:05:33.980 --> 00:05:34.380
Yeah.
00:05:34.380 --> 00:05:39.260
Can you compare what it's like to teach Java, what it's like to teach Python, the way the
00:05:39.260 --> 00:05:44.340
students received it, whether like better grades, more excitement, less dropout, those kinds
00:05:44.340 --> 00:05:44.640
of things?
00:05:45.120 --> 00:05:48.180
I mean, certainly less dropout with Python.
00:05:48.180 --> 00:05:56.220
And I think it's much, much quicker for them to kind of get up and running and be able to
00:05:56.220 --> 00:05:57.400
do interesting stuff.
00:05:57.400 --> 00:06:02.340
You know, when you teach Java, I like to say there's like 12 things that you have to lie
00:06:02.340 --> 00:06:03.520
to them about on day one.
00:06:04.180 --> 00:06:11.400
Starting with, you know, public static void main, string, args, you know, there's like
00:06:11.400 --> 00:06:12.080
none of that.
00:06:12.080 --> 00:06:17.700
Do you want to try to talk about to introductory students on the first day of Java class?
00:06:18.200 --> 00:06:23.220
So whereas with Python, you can, I guess, say print hello world, and at least you get something.
00:06:23.220 --> 00:06:29.160
But it's also just as easy to say import turtle, make a turtle and make the turtle go forward
00:06:29.160 --> 00:06:30.440
by a hundred.
00:06:30.440 --> 00:06:35.340
And that gives them that kind of, there's that immediate gratification of being able to see
00:06:35.340 --> 00:06:41.680
something visual on the screen and, you know, be able to control this stuff just by typing.
00:06:42.300 --> 00:06:47.740
So, so that, that was a huge, huge change, just sort of in student mentality to be able
00:06:47.740 --> 00:06:51.180
to kind of get into something where they could get that immediate gratification.
00:06:51.180 --> 00:06:52.980
Yeah, that's really cool.
00:06:52.980 --> 00:06:57.540
The show I just released this week with Lynn Root, she talks about how she was studying
00:06:57.540 --> 00:07:04.240
C++ to make a switch, basically to get some foundation to move on to like a PhD program
00:07:04.240 --> 00:07:04.980
in finance.
00:07:04.980 --> 00:07:06.260
And they had to do programming.
00:07:06.260 --> 00:07:11.000
So she took a C++ class and it just about crushed her will to do anything with programming.
00:07:11.000 --> 00:07:15.100
And she came in and learned Python and it just like, she lit up and that's, that's still
00:07:15.100 --> 00:07:15.760
what she's doing today.
00:07:15.760 --> 00:07:16.160
It's great.
00:07:16.160 --> 00:07:17.000
Oh yeah.
00:07:17.000 --> 00:07:22.100
I mean, and there's so many great, you know, packages out there for Python that you can really
00:07:22.100 --> 00:07:25.260
get students, you know, working with interesting stuff right away.
00:07:25.260 --> 00:07:26.600
Yeah, that's for sure.
00:07:26.600 --> 00:07:33.640
I just found today a project, a GitHub project repository, I guess you would call it, called
00:07:33.640 --> 00:07:34.500
Awesome Python.
00:07:34.740 --> 00:07:41.160
So I think it's, if you just search for Awesome-Python GitHub, and it's a, like a curated list of all
00:07:41.160 --> 00:07:43.480
the amazing packages that people like really love.
00:07:43.480 --> 00:07:43.740
So.
00:07:43.740 --> 00:07:44.960
Oh, that's really cool.
00:07:44.960 --> 00:07:46.800
I'll have to go look at, look at that.
00:07:46.800 --> 00:07:47.280
Absolutely.
00:07:47.280 --> 00:07:49.240
So, so that's really cool.
00:07:49.240 --> 00:07:51.440
So you're doing, are you still teaching at the university?
00:07:51.440 --> 00:07:52.020
I am.
00:07:52.020 --> 00:07:52.480
Yes.
00:07:52.480 --> 00:07:53.060
Uh huh.
00:07:53.060 --> 00:07:55.160
And you're doing this thing with RuneStone Interactive.
00:07:55.160 --> 00:07:56.360
Why don't you tell everyone what that is?
00:07:56.360 --> 00:07:57.440
Yeah.
00:07:57.900 --> 00:08:03.560
So RuneStone Interactive is, is kind of three, three components, I'll say.
00:08:03.560 --> 00:08:09.360
First of all, it's a set of tools for authors that want to create interactive course materials.
00:08:09.360 --> 00:08:14.960
So anything from lecture notes to a lab to a full-blown book, like what we've doing.
00:08:14.960 --> 00:08:23.080
Um, so that, that includes, I like to, I like to say that kind of the big, hairy, audacious
00:08:23.080 --> 00:08:27.380
goal is that we would like to be the LaTeX of interactive writing.
00:08:28.120 --> 00:08:33.440
Um, so we've got all these tools that we're trying to build to make it easy for, for instructors
00:08:33.440 --> 00:08:37.180
and other people to write interactive, interactive materials.
00:08:37.180 --> 00:08:43.260
So things like interactive code, visualizing code, including video, including little
00:08:43.260 --> 00:08:46.560
assessments like fill in the blanks or multiple choice or short answer.
00:08:46.560 --> 00:08:50.420
Um, you know, things so you can hide things and show things.
00:08:50.420 --> 00:08:54.840
And, so those kind of, all those kinds of things that you'd want to have in an interactive
00:08:54.840 --> 00:08:57.360
textbook, whether it's, whether it's for computer science.
00:08:57.360 --> 00:08:59.260
Or, or some other topic.
00:08:59.260 --> 00:08:59.780
In fact.
00:08:59.780 --> 00:09:00.440
Yeah, absolutely.
00:09:00.440 --> 00:09:07.760
So it's kind of like taking the traditional textbook, but making it something that is more
00:09:07.760 --> 00:09:09.360
native to the real world.
00:09:09.360 --> 00:09:09.580
Right.
00:09:09.580 --> 00:09:12.300
If I'm learning about computer science, I should be able to run the code.
00:09:12.300 --> 00:09:13.700
I should be able to see visualizations.
00:09:13.700 --> 00:09:17.580
I should be able to listen and all that kind of stuff is part of what you guys have there.
00:09:17.580 --> 00:09:17.740
Right.
00:09:18.080 --> 00:09:18.760
Yeah, exactly.
00:09:18.760 --> 00:09:24.780
I mean, so this sort of started out on my sabbatical in 2011, where I was supposed to
00:09:24.780 --> 00:09:29.480
be working on, new additions for the two textbooks that I've, that I've written that
00:09:29.480 --> 00:09:30.620
are paper-based textbooks.
00:09:30.620 --> 00:09:36.060
But as I was trying to write these updates to the paper textbooks, I kept thinking, God,
00:09:36.060 --> 00:09:41.640
this would be so much cooler if, if it was actually doing something interactive on the screen.
00:09:41.860 --> 00:09:47.640
And so I stopped working on the, on the, on the stuff for the paper books.
00:09:47.640 --> 00:09:51.840
And I started, and I started experimenting with how we could make all this stuff interactive.
00:09:51.840 --> 00:09:57.100
Um, and then I realized nobody in their right mind would ever write a textbook where you had
00:09:57.100 --> 00:10:01.160
to go in and, and use JavaScript to hard code every code example you wanted.
00:10:01.720 --> 00:10:06.120
So then I, then I started to think, okay, how could I, how could I write some macros that
00:10:06.120 --> 00:10:07.980
would make this, make this easy?
00:10:07.980 --> 00:10:11.980
And so that kind of led to that first part of the, of the authoring tools.
00:10:11.980 --> 00:10:15.760
So that's sort of part one.
00:10:15.760 --> 00:10:21.320
Part two is that then there's this sort of set of backend services that you have to run.
00:10:21.320 --> 00:10:26.920
Things like when students run code, or write code, you want to be able to save what
00:10:26.920 --> 00:10:29.840
they've written so that the next time they come to the website, they don't have to start
00:10:29.840 --> 00:10:32.140
over and, and reenter all their code again.
00:10:32.140 --> 00:10:37.300
Um, and if you're going to use it for a class, you'd like to have it, let's say, save the answers
00:10:37.300 --> 00:10:41.840
to the multiple choice questions or give the instructor a grading interface so that they
00:10:41.840 --> 00:10:44.380
can go in and grade and keep track of how the students did.
00:10:44.380 --> 00:10:50.860
Um, so that's sort of the set of interactive, interactive services that support the book on
00:10:50.860 --> 00:10:51.440
the front end.
00:10:51.440 --> 00:10:52.600
That's really cool.
00:10:52.600 --> 00:10:57.940
Do you guys, sorry, do you actually use the interactivity bit for like assessments and tests
00:10:57.940 --> 00:10:59.260
and things in your classes?
00:10:59.800 --> 00:11:00.080
Yeah.
00:11:00.080 --> 00:11:00.600
Yep.
00:11:00.600 --> 00:11:01.680
Yep.
00:11:01.680 --> 00:11:01.700
Yep.
00:11:01.700 --> 00:11:06.360
Not like for, it's great for daily assignments, for example, what I can do is say, all right,
00:11:06.360 --> 00:11:07.560
I want you to read this section.
00:11:07.560 --> 00:11:11.500
And at the end of the section, there might be a little coding thing, or there might be three
00:11:11.500 --> 00:11:14.260
or four multiple choice or fill in the blank kind of questions.
00:11:14.560 --> 00:11:18.800
And then every day before class, I can go in and go to the instructor's dashboard.
00:11:18.800 --> 00:11:24.020
I can look at the responses to all those questions and get a sense for, all right, what were the
00:11:24.020 --> 00:11:25.800
things that they understood about this section?
00:11:25.800 --> 00:11:27.580
What were the things that they'd struggled with?
00:11:28.080 --> 00:11:30.160
Uh, what were some of the common mistakes that they made?
00:11:30.160 --> 00:11:35.200
And then, you know, that pretty much informs what I'm going to talk about at least, you know,
00:11:35.200 --> 00:11:38.380
at the start of every class is to, to think about.
00:11:39.140 --> 00:11:40.180
That's really powerful.
00:11:40.180 --> 00:11:43.500
You don't really typically get that experience with a textbook.
00:11:43.500 --> 00:11:44.440
No.
00:11:44.440 --> 00:11:46.400
Because you never know, right?
00:11:46.400 --> 00:11:51.580
I mean, all of us suspect that our students don't really read the assignments that we give
00:11:51.580 --> 00:11:51.840
them.
00:11:51.840 --> 00:11:53.900
But now we, now we actually know.
00:11:53.900 --> 00:11:54.700
Yeah.
00:11:54.700 --> 00:11:56.540
Because we can, because we can track them online.
00:11:56.540 --> 00:11:57.360
So.
00:11:57.360 --> 00:11:58.740
That's really excellent.
00:11:58.740 --> 00:11:59.380
All right.
00:11:59.380 --> 00:12:00.020
So what's part three?
00:12:00.020 --> 00:12:02.980
Part three then became this hosting service.
00:12:02.980 --> 00:12:05.820
So in the beginning, what, what I thought was all great.
00:12:05.820 --> 00:12:07.200
We'll make all this open source.
00:12:07.200 --> 00:12:11.600
And if somebody else wants to use this, for their class, they can just go to GitHub.
00:12:11.600 --> 00:12:12.660
They can clone this.
00:12:12.660 --> 00:12:14.200
They can set up a server.
00:12:14.200 --> 00:12:15.500
They can build the books.
00:12:15.500 --> 00:12:16.860
They can run it on their own server.
00:12:16.860 --> 00:12:20.180
And then what I learned is that most people really don't want to do that.
00:12:20.180 --> 00:12:20.980
Um.
00:12:20.980 --> 00:12:26.700
So most people just have enough problems, you know, teaching their own class.
00:12:26.700 --> 00:12:32.440
Uh, so, so we created this hosting service where you can go in and you can say, all right,
00:12:32.440 --> 00:12:35.480
yeah, I want to use textbook a textbook, B textbook, C.
00:12:35.480 --> 00:12:40.800
And what it does is it just makes a kind of a custom copy of that textbook and sets up an
00:12:40.800 --> 00:12:45.680
instructor dashboard for that custom copy so that an instructor can have their students
00:12:45.680 --> 00:12:46.960
registered for their course.
00:12:46.960 --> 00:12:50.620
And all of their stuff is separate from all the other people in the world.
00:12:50.720 --> 00:12:54.240
And the instructor can then just look at the dashboard for their own course.
00:12:54.240 --> 00:12:58.620
Um, and they don't have to do anything except go in and click a few buttons to build, to build
00:12:58.620 --> 00:12:59.100
their book.
00:12:59.100 --> 00:13:00.120
That's really cool.
00:13:00.120 --> 00:13:02.480
Do you mind talking about the business model just a little bit?
00:13:02.480 --> 00:13:03.620
Like, is this totally free?
00:13:03.620 --> 00:13:04.720
Is there like a fee?
00:13:04.720 --> 00:13:07.540
Do you sell the books to the students or what's the story around that?
00:13:07.540 --> 00:13:08.140
Yeah.
00:13:08.380 --> 00:13:15.600
I, so we, we really right now are just based on donations, which doesn't work all that
00:13:15.600 --> 00:13:15.880
well.
00:13:15.880 --> 00:13:21.840
Is there a chance of like NSF, National Science Foundation support or like STEM research support
00:13:21.840 --> 00:13:22.540
or any of those?
00:13:22.540 --> 00:13:23.700
I think so.
00:13:23.700 --> 00:13:27.660
I mean, right now I do have, I do have an NSF grant for the next three summers.
00:13:27.760 --> 00:13:32.400
So I've got two, I've got two undergrad students that I'm, that I'm working with this summer
00:13:32.400 --> 00:13:37.700
on making a bunch of enhancements to, to, to the way that we're, the way that we're
00:13:37.700 --> 00:13:41.900
doing these extensions or these kind of macros that I talked about before.
00:13:41.900 --> 00:13:42.340
Right.
00:13:42.340 --> 00:13:42.880
That's really cool.
00:13:42.960 --> 00:13:43.580
So, yeah.
00:13:43.580 --> 00:13:48.300
So, but yeah, I don't get any support from them for, you know, paying for hosting fees
00:13:48.300 --> 00:13:49.240
or anything like that.
00:13:49.240 --> 00:13:49.480
Sure.
00:13:49.480 --> 00:13:52.760
So people who want to use it out there, keep that in mind, maybe a donation.
00:13:52.760 --> 00:13:59.220
You know, one of the universities that uses it is Duke University and they, they're really
00:13:59.220 --> 00:13:59.500
good.
00:13:59.500 --> 00:14:02.820
Every, you know, they've got 400 students in their introductory course.
00:14:02.820 --> 00:14:06.860
And so I know the instructors there, you know, we've, we've known each other for a while
00:14:06.860 --> 00:14:08.220
through conferences and whatnot.
00:14:08.220 --> 00:14:12.460
And I know they always go the first couple of days and say, look, we're using this textbook.
00:14:12.700 --> 00:14:16.460
It's free instead of the $145 you'd probably pay at the bookstore.
00:14:16.460 --> 00:14:19.420
The least you can do is go make a $5 donation.
00:14:19.420 --> 00:14:25.500
And, you know, we get about 20 out of 400 that feel moved to make a, there's a, there's
00:14:25.500 --> 00:14:29.120
a five, 5% appreciation ratio.
00:14:29.120 --> 00:14:32.660
Very cool.
00:14:32.660 --> 00:14:34.860
So, but anyway, yeah, yeah, no, that's good.
00:14:34.860 --> 00:14:37.300
So, yeah, keep going with that.
00:14:37.300 --> 00:14:41.700
So you want to talk a little bit about some of the underlying tools that you're using, the
00:14:41.700 --> 00:14:43.720
underlying packages and technology.
00:14:43.720 --> 00:14:45.520
It's mostly Fortran on the backend.
00:14:45.520 --> 00:14:46.020
Is that correct?
00:14:46.020 --> 00:14:47.980
Uh, no, it's mostly Python.
00:14:47.980 --> 00:14:48.520
Oh, just teasing.
00:14:48.520 --> 00:14:49.160
Yeah.
00:14:49.160 --> 00:14:50.180
Cool.
00:14:50.180 --> 00:14:51.700
So tell us what you're doing there.
00:14:51.700 --> 00:14:52.960
Maybe before we do this, actually.
00:14:52.960 --> 00:14:57.700
So I went and I watched your video on interactive Python dot, is it org or com?
00:14:57.700 --> 00:14:58.680
Dot org.
00:14:58.680 --> 00:14:59.260
Dot org.
00:14:59.260 --> 00:15:00.720
Interactive Python dot org.
00:15:00.800 --> 00:15:01.120
Thank you.
00:15:01.120 --> 00:15:06.360
And you've got a nice video that shows you a lot of, a lot of the really cool stuff you
00:15:06.360 --> 00:15:06.600
can do.
00:15:06.600 --> 00:15:09.540
Maybe you could just hit some of the high points so people know what we're talking about.
00:15:09.540 --> 00:15:10.940
Yeah.
00:15:10.940 --> 00:15:18.220
So I think the, the, the real aha moment for me was, was when I found this project called
00:15:18.220 --> 00:15:18.640
sculpt.
00:15:20.700 --> 00:15:35.780
This episode is brought to you by hired hired is a two sided curated marketplace that connects
00:15:35.780 --> 00:15:38.760
the world's knowledge workers to the best opportunities.
00:15:38.940 --> 00:15:44.140
Each offer you receive has salary and equity presented right up front and you can view the
00:15:44.140 --> 00:15:47.860
offers to accept or reject them before you even talk to the company.
00:15:47.860 --> 00:15:52.240
Typically candidates receive five or more offers in just the first week.
00:15:52.240 --> 00:15:54.220
And there are no obligations ever.
00:15:54.220 --> 00:15:55.860
Sounds pretty awesome.
00:15:55.860 --> 00:15:56.380
Doesn't it?
00:15:56.380 --> 00:15:58.400
Well, did I mention there's a signing bonus?
00:15:58.400 --> 00:16:02.480
Everyone who accepts a job from hired gets a $2,000 signing bonus.
00:16:02.480 --> 00:16:06.800
And as talk Python listeners, it gets way sweeter.
00:16:07.380 --> 00:16:13.440
Use the link hired.com slash talk Python to me and hired will double the signing bonus
00:16:13.440 --> 00:16:19.740
to $4,000 opportunities, knocking visit hired.com slash talk Python to me and answer the call.
00:16:19.740 --> 00:16:35.100
And so sculpt was started by Scott Graham, who now works for Google.
00:16:35.560 --> 00:16:39.340
And it was an implementation of CPython in JavaScript.
00:16:39.340 --> 00:16:44.140
So this was back in 2010, 2011 that he had worked on that.
00:16:44.140 --> 00:16:46.560
And I thought, oh my gosh, this is so cool.
00:16:46.560 --> 00:16:49.680
You know, we can run Python right in the browser.
00:16:49.680 --> 00:16:50.500
There's none of this.
00:16:50.500 --> 00:16:55.220
Let's submit it, run it back somewhere on a server and then have the result come back to
00:16:55.220 --> 00:16:55.720
the browser.
00:16:55.720 --> 00:16:57.400
With all the security issues.
00:16:57.400 --> 00:16:58.140
Yeah, exactly.
00:16:58.140 --> 00:16:59.140
That come with that.
00:16:59.140 --> 00:16:59.340
Yeah.
00:16:59.340 --> 00:16:59.840
Right.
00:16:59.980 --> 00:17:02.000
So this is running right in the browser.
00:17:02.000 --> 00:17:05.520
And not only that, but because it was written to run right in the browser.
00:17:06.560 --> 00:17:08.980
When I saw that, I got really excited about it.
00:17:08.980 --> 00:17:13.540
The first thing that I did was I figured out how to add the turtle graphics module to it.
00:17:13.540 --> 00:17:17.660
So now you can, you know, you can write your Python program and you can, you can do turtle
00:17:17.660 --> 00:17:18.940
graphics right in the browser.
00:17:19.060 --> 00:17:22.860
So you get that kind of instantaneous gratification of seeing something.