-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathheather_pwlconf_captions.srt
More file actions
3540 lines (2764 loc) · 69.2 KB
/
heather_pwlconf_captions.srt
File metadata and controls
3540 lines (2764 loc) · 69.2 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
1
00:00:05,540 --> 00:00:09,060
So my name is Heather Miller, I'm a professor
at northeastern University, I'm the director
2
00:00:09,060 --> 00:00:14,349
at the Scala center at EPFL so I have one foot in
academia and one foot in industry land.
3
00:00:14,349 --> 00:00:20,759
And, actually, this talk comes out of a course
that I gave last fall at northeastern University.
4
00:00:20,759 --> 00:00:25,650
It was a grad course called programming models
for distributed computing.
5
00:00:25,650 --> 00:00:29,700
And actually, there's even a book that kind
of came out of it that's not totally finished
6
00:00:29,700 --> 00:00:30,950
yet.
7
00:00:30,950 --> 00:00:36,000
But all the students in the course wrote this
book with me, and I have to edit it.
8
00:00:36,000 --> 00:00:37,480
It needs some work.
9
00:00:37,480 --> 00:00:41,650
But it's got a lot of really cool information,
and this is actually -- like this talk is
10
00:00:41,650 --> 00:00:44,020
just about one week of course material.
11
00:00:44,020 --> 00:00:48,780
So one and a half, maybe two weeks of course
material, so there's a lot of interesting
12
00:00:48,780 --> 00:00:52,190
information and a lot of stuff to be found
at this book.
13
00:00:52,190 --> 00:00:54,240
There's a link on the slide.
14
00:00:54,240 --> 00:00:59,239
I'll put links up on the Internet if you look
around afterwards.
15
00:00:59,239 --> 00:01:02,530
But anyway, so that's an aside.
16
00:01:02,530 --> 00:01:09,100
But sort of one of the things that kind of
I really like about not just, you know, research
17
00:01:09,100 --> 00:01:13,150
in general, but about kind of looking back
at sort of the history of things and how things
18
00:01:13,150 --> 00:01:18,350
came to be how they are now is that research,
it's really animated.
19
00:01:18,350 --> 00:01:21,600
It doesn't really look like that, necessarily.
20
00:01:21,600 --> 00:01:23,810
Perhaps from the outside, it looks more like
this.
21
00:01:23,810 --> 00:01:27,290
[Laughter]
You have -- you know, I think people sometimes
22
00:01:27,290 --> 00:01:33,280
look at academic research kind of pessimistically
where research papers are crusty-looking PDFs
23
00:01:33,280 --> 00:01:36,630
with big files that are a pain in the neck
to download and read.
24
00:01:36,630 --> 00:01:41,700
They have way too much pages, too much convoluted
motivational statements that lack any sort
25
00:01:41,700 --> 00:01:45,369
of actual real-world context, and they solve
problems that nobody cares about.
26
00:01:45,369 --> 00:01:48,570
And, you know, this is some guy that's in
a room that has never seen daylight before,
27
00:01:48,570 --> 00:01:51,090
and I think that's what a lot of people think
research is about.
28
00:01:51,090 --> 00:01:54,270
But I think it's a little bit more dynamic.
29
00:01:54,270 --> 00:02:00,860
They have these multiyear evolving and animated
debates where researchers arn the world are
30
00:02:00,860 --> 00:02:03,590
solving similar problems.
31
00:02:03,590 --> 00:02:06,979
And these different ideas and solutions and
things, they're super animated.
32
00:02:06,979 --> 00:02:09,250
If you look at these things over a long period
of time.
33
00:02:09,250 --> 00:02:13,549
And, you really, they're evolving via PDFs,
which people think are ultimately unsexy.
34
00:02:13,549 --> 00:02:19,480
So by the end of this talk, I hope that I
will have communicated to you that something
35
00:02:19,480 --> 00:02:25,139
is going on in research land are not, like,
crusty piles of PDFs sitting around somewhere
36
00:02:25,139 --> 00:02:29,000
describing esoteric things that never went
anywhere.
37
00:02:29,000 --> 00:02:33,049
And instead, we go to, like, a dynamic view
of arguments and designs and languages and,
38
00:02:33,049 --> 00:02:37,159
you know, things just evolving over decades
with many design decisions from some of these
39
00:02:37,159 --> 00:02:41,450
so-called esoteric languages actually becoming
somehow mainstream and then finding their
40
00:02:41,450 --> 00:02:44,230
way into sexier things that you guys use more
often.
41
00:02:44,230 --> 00:02:45,230
So.
42
00:02:45,230 --> 00:02:46,230
Okay.
43
00:02:46,230 --> 00:02:50,669
This is about distributed programming languages,
so can anybody name some distributed programming
44
00:02:50,669 --> 00:02:52,219
languages?
45
00:02:52,219 --> 00:02:53,769
Okay.
46
00:02:53,769 --> 00:02:55,340
You guys know Chris then.
47
00:02:55,340 --> 00:02:58,889
[Laughter]
So Chris is going to be so happy that you
48
00:02:58,889 --> 00:03:02,659
guys said last was a distributed programming
lank.
49
00:03:02,659 --> 00:03:05,219
Clearly, that means it's more widely used.
50
00:03:05,219 --> 00:03:06,219
So we have Erlang.
51
00:03:06,219 --> 00:03:07,219
What else?
52
00:03:07,219 --> 00:03:08,219
There has to be a couple more.
53
00:03:08,219 --> 00:03:09,840
I've never heard of that one.
54
00:03:09,840 --> 00:03:11,049
What is it?
55
00:03:11,049 --> 00:03:12,049
Shapeel.
56
00:03:12,049 --> 00:03:13,049
Cool.
57
00:03:13,049 --> 00:03:18,430
I'm going to look that one up.
58
00:03:18,430 --> 00:03:20,090
Give me one more.
59
00:03:20,090 --> 00:03:21,090
Linda.
60
00:03:21,090 --> 00:03:22,090
Yeah.
61
00:03:22,090 --> 00:03:23,090
Cool.
62
00:03:23,090 --> 00:03:26,730
There's, like, a zillion.
63
00:03:26,730 --> 00:03:27,730
Some you've heard of.
64
00:03:27,730 --> 00:03:31,680
Mirage, Orca, I'm sure you haven't heard of
that one.
65
00:03:31,680 --> 00:03:33,620
But there's a lot.
66
00:03:33,620 --> 00:03:35,989
I can't talk about about every single one
of them.
67
00:03:35,989 --> 00:03:39,589
But I'm going to go way too fast through at
least seven of them, and you're going to hate
68
00:03:39,589 --> 00:03:41,269
me for it.
69
00:03:41,269 --> 00:03:44,980
[Laughter]
So I can't get into a ton of detail, but,
70
00:03:44,980 --> 00:03:47,309
you know, we can just kind of touch on the
big ideas.
71
00:03:47,309 --> 00:03:50,359
So the first paper I'm going to delve into
is one by Barbara in 1988.
72
00:03:50,359 --> 00:03:52,450
It's about a programming language called Argus.
73
00:03:52,450 --> 00:03:57,699
And if you're not familiar with Barbara, you
really should be because she won the touring
74
00:03:57,699 --> 00:03:59,799
award in 2008.
75
00:03:59,799 --> 00:04:03,769
She laid the ground work for a lot of things
in object-oriented programming.
76
00:04:03,769 --> 00:04:09,499
She was known for this language called Clu,
I guess is what some people call it that they
77
00:04:09,499 --> 00:04:15,309
worked on in the mid-'70s, and it introduced
the use of classes with constructors and methods.
78
00:04:15,309 --> 00:04:19,049
It also introduced a little thing called abstract
data types.
79
00:04:19,049 --> 00:04:24,150
I don't know if you ever heard of these things.It
rarities, type safe parameterized types, and
80
00:04:24,150 --> 00:04:30,030
an important definition of subtyping and object-oriented
programming that people commonly use called
81
00:04:30,030 --> 00:04:32,030
the substitution principle.
82
00:04:32,030 --> 00:04:37,540
So she's done a lot of things, and you should
know who she is.
83
00:04:37,540 --> 00:04:42,569
So while she's kind of like a McJagger or
something in the land of object-oriented programming,
84
00:04:42,569 --> 00:04:47,240
maybe you don't know that she made this weird,
wonky language in the '80s called Argus for
85
00:04:47,240 --> 00:04:48,830
distributed programming.
86
00:04:48,830 --> 00:04:52,800
And actually, it was super influential, and
you're going to be, like, what?
87
00:04:52,800 --> 00:04:53,800
Really?
88
00:04:53,800 --> 00:04:59,390
So back in the day, she had this observation,
and I'm just going to read it to you.
89
00:04:59,390 --> 00:05:03,480
Distribution gives rise to some problems that
do not exist in a centralized system or that,
90
00:05:03,480 --> 00:05:06,520
you know, exist in a less complex form in
a centralized system.
91
00:05:06,520 --> 00:05:09,680
For example, a centralized system is either
running, or it's crashed.
92
00:05:09,680 --> 00:05:13,530
But a distributed system may be partly running
and partly crashed.
93
00:05:13,530 --> 00:05:14,530
Okay.
94
00:05:14,530 --> 00:05:15,530
Cool.
95
00:05:15,530 --> 00:05:17,820
So boast the nodes and network may fail.
96
00:05:17,820 --> 00:05:22,690
The network may lose or delay the delivery
of messages or messages may just come out
97
00:05:22,690 --> 00:05:24,030
of order.
98
00:05:24,030 --> 00:05:31,390
Yet, somehow, programs should remain running,
and she had this idea in the '80s.
99
00:05:31,390 --> 00:05:37,420
And one thing that she thought was super important
was that there -- is that data should remain
100
00:05:37,420 --> 00:05:39,640
consistent when these situations happen.
101
00:05:39,640 --> 00:05:41,410
So this is a really big deal.
102
00:05:41,410 --> 00:05:46,030
She was, like, look, if everything crashes
or a bunch of things crash, we shouldn't,
103
00:05:46,030 --> 00:05:48,420
you know, have screwed up bank accounts because
of it.
104
00:05:48,420 --> 00:05:54,780
So we need strong consistency, and she introduced
this idea in the -- you know, in the context
105
00:05:54,780 --> 00:05:59,120
of a programming language, which it hadn't
really been thought of in this context before.
106
00:05:59,120 --> 00:06:07,800
So this paper actually runs through an example
in banking, and she notes a couple of things.
107
00:06:07,800 --> 00:06:09,780
She notes two things.
108
00:06:09,780 --> 00:06:13,191
So on the one hand, concurrent activities
made to interfere with one another, that's
109
00:06:13,191 --> 00:06:14,390
a problem.
110
00:06:14,390 --> 00:06:18,830
And on the other hand, there might be some
kind of failure that occurs.
111
00:06:18,830 --> 00:06:23,450
And these things, we don't really do anything
about programming languages that we use now;
112
00:06:23,450 --> 00:06:24,450
right?
113
00:06:24,450 --> 00:06:26,990
So this object-oriented thing called clu,
other things.
114
00:06:26,990 --> 00:06:32,370
So in the face of these two things, Argus
must provide some kind of strong consistency,
115
00:06:32,370 --> 00:06:34,150
is what she says.
116
00:06:34,150 --> 00:06:39,270
And I'm, you know, I think it's great to kind
of show these people's words rather than to
117
00:06:39,270 --> 00:06:41,590
make up my own myself.
118
00:06:41,590 --> 00:06:43,360
So I would like to just quote her here.
119
00:06:43,360 --> 00:06:49,200
So she introduces Argus to support programs
like a banking system to capture, you know,
120
00:06:49,200 --> 00:06:53,430
always used to be in this object-oriented
context, so she introduces two concepts to
121
00:06:53,430 --> 00:06:54,430
have these things.
122
00:06:54,430 --> 00:07:00,120
One hand, you have a guardian, which is a
special problem that runs procedures and response
123
00:07:00,120 --> 00:07:01,460
to promote requests.
124
00:07:01,460 --> 00:07:08,650
And then introduces another thing in the context
of this language that should make consistency
125
00:07:08,650 --> 00:07:11,110
happen, which are atomic transactions.
126
00:07:11,110 --> 00:07:14,280
So computations should always be organized
as atomic transactions.
127
00:07:14,280 --> 00:07:16,650
And these are sort of the two biggish ideas.
128
00:07:16,650 --> 00:07:23,480
And these guardian things fall into this world
of object-oriented programming; right?
129
00:07:23,480 --> 00:07:26,740
So guardians, like I said, it's like an object.
130
00:07:26,740 --> 00:07:33,070
A special kind of abe extract object whose
purpose is to encapsulate a resource or resources.
131
00:07:33,070 --> 00:07:39,660
Importantly, the state of the resources maintained
in the objects stored in the guardian, so
132
00:07:39,660 --> 00:07:41,639
these things are isolated.
133
00:07:41,639 --> 00:07:46,450
The stuff inside a guardian is not accessible
outside of a guardian.
134
00:07:46,450 --> 00:07:50,540
And the only way that people could actually
manipulate anything inside of one of these
135
00:07:50,540 --> 00:07:55,830
special objects is via a handlers, another
guardian has to call some kind of handle that
136
00:07:55,830 --> 00:07:57,669
affects something inside of a guardian.
137
00:07:57,669 --> 00:07:58,669
Okay?
138
00:07:58,669 --> 00:08:04,890
So the key thing to hold onto here is that
even though what's inside of a guardian is
139
00:08:04,890 --> 00:08:10,330
a dynamic collection of data objects, they're
not accessible directly by anybody.
140
00:08:10,330 --> 00:08:12,850
So that's a guardian.
141
00:08:12,850 --> 00:08:17,050
And this is the very, very beautiful picture
that was in the paper trying to draw a picture
142
00:08:17,050 --> 00:08:19,610
of all of the things that could happen inside
of a guardian.
143
00:08:19,610 --> 00:08:22,720
It's not exactly the best picture.
144
00:08:22,720 --> 00:08:26,380
But the idea here is that you have all kinds
of things.
145
00:08:26,380 --> 00:08:30,590
You've got objects, and you have processes,
and all kinds of stuff going on inside of
146
00:08:30,590 --> 00:08:31,590
this guardian.
147
00:08:31,590 --> 00:08:32,590
And then you have these handlers.
148
00:08:32,590 --> 00:08:35,190
In this case, one is called in cue and one
is called check.
149
00:08:35,190 --> 00:08:36,409
It doesn't really matter.
150
00:08:36,409 --> 00:08:40,279
But this is how you affect the stuff going
on inside of it.
151
00:08:40,279 --> 00:08:45,959
So, yeah, just to summarize guardian and encapsulate
state, it contains a dynamic collection of
152
00:08:45,959 --> 00:08:46,959
objects.
153
00:08:46,959 --> 00:08:51,209
They're like an abstraction over a node or
they're like a microservice or something.
154
00:08:51,209 --> 00:08:56,800
Interestingly, they can be moved and the guardian
can create other guardians dynamically.
155
00:08:56,800 --> 00:09:00,149
So these are kind of what a guardian looks
like, what's inside of one, and kind of what
156
00:09:00,149 --> 00:09:02,380
they can do.
157
00:09:02,380 --> 00:09:06,889
And I mentioned there are these handlers that
-- oh, yep.
158
00:09:06,889 --> 00:09:11,610
A guardian permits its resources to be accessed
by means of these special procedures called
159
00:09:11,610 --> 00:09:12,610
handlers; right?
160
00:09:12,610 --> 00:09:16,610
As I mentioned the way to affect stuff going
on inside of it.
161
00:09:16,610 --> 00:09:17,610
Yep.
162
00:09:17,610 --> 00:09:21,180
And also, handler calls can be location independent,
so you can be on some other node somewhere
163
00:09:21,180 --> 00:09:24,579
and call a handler that affects a guardian
somewhere else; right?
164
00:09:24,579 --> 00:09:26,190
Mamakes some kind of sense.
165
00:09:26,190 --> 00:09:27,190
Cool.
166
00:09:27,190 --> 00:09:30,230
So that's kind of like the high-level picture.
167
00:09:30,230 --> 00:09:34,029
You don't have to actually try to read this
because you definitely can't.
168
00:09:34,029 --> 00:09:37,910
This is just a screenshot from the paper of
what the code kind of looks like.
169
00:09:37,910 --> 00:09:43,139
So this is -- this right here is supposed
to be an entire banking application for one
170
00:09:43,139 --> 00:09:44,139
bank.
171
00:09:44,139 --> 00:09:46,970
So this is, like, one branch of a bank.
172
00:09:46,970 --> 00:09:49,829
And all that really matters here are the colors.
173
00:09:49,829 --> 00:09:55,769
So here you have kind of where this guardian
for a branch starts and where it ends.
174
00:09:55,769 --> 00:09:56,820
So it's like an object again.
175
00:09:56,820 --> 00:09:59,449
It has a bunch of stuff inside of it.
176
00:09:59,449 --> 00:10:03,649
The stuff that's inside of it, so there are
handlers that other guardians can call to
177
00:10:03,649 --> 00:10:05,839
affect all kinds of state that's inside of
it.
178
00:10:05,839 --> 00:10:10,819
And the other things are, like, types and
sort of local data structures inside of it.
179
00:10:10,819 --> 00:10:15,050
So bank account numbers and other things like
a table of banks and bank account numbers.
180
00:10:15,050 --> 00:10:16,050
Okay.
181
00:10:16,050 --> 00:10:17,050
But fine.
182
00:10:17,050 --> 00:10:21,160
The whole is motivation behind this programming
language was, well, partial failure should
183
00:10:21,160 --> 00:10:28,139
somehow be addressed in Argus, so how can
it be addressed by guardians?
184
00:10:28,139 --> 00:10:36,649
So basically, this goes back to this atomic
actions point, so the idea is that, you know,
185
00:10:36,649 --> 00:10:37,829
I'll just go here.
186
00:10:37,829 --> 00:10:44,930
So there are these atomic actions that Argus
makes possible, so all of these calls to handlers
187
00:10:44,930 --> 00:10:47,990
and things, they should be atomic.
188
00:10:47,990 --> 00:10:56,610
And by that, they, you know, they're not separate,
they're one, big action, and if you run a
189
00:10:56,610 --> 00:11:02,360
group of them, they always have to be executed
as if they were run sequentially, and then
190
00:11:02,360 --> 00:11:04,370
they have to be total.
191
00:11:04,370 --> 00:11:08,999
Completes entirely, or it fails entirely,
and it has no visible effect.
192
00:11:08,999 --> 00:11:11,350
So that's the idea.
193
00:11:11,350 --> 00:11:16,480
So serialize ability solves concurrency problem
and totality solves the failure problem and
194
00:11:16,480 --> 00:11:19,119
these things are invisible, they're atomic.
195
00:11:19,119 --> 00:11:24,089
And this is all achieved by your favorite
thing on the planet, which is definitely locking
196
00:11:24,089 --> 00:11:25,449
in synchronization.
197
00:11:25,449 --> 00:11:28,660
I know everybody in this room really likes
this.
198
00:11:28,660 --> 00:11:31,189
Everything is all read, write locks.
199
00:11:31,189 --> 00:11:35,279
And there's this cool way of making a hierarchy
of these things, so things can be organized
200
00:11:35,279 --> 00:11:37,019
in terms of, like, two-phase commits.
201
00:11:37,019 --> 00:11:39,430
It doesn't really matter.
202
00:11:39,430 --> 00:11:46,910
And then if you're part way trying to do something,
and then part of your thing fails or something,
203
00:11:46,910 --> 00:11:53,360
there's a way to recover to roll back to,
you know, to stop this commit from starting
204
00:11:53,360 --> 00:11:57,050
or this -- whatever to stop everything from
being committed.
205
00:11:57,050 --> 00:11:58,559
And this is done via versioning.
206
00:11:58,559 --> 00:12:04,529
And then, of course, communication between
remote guardians is done by RPC.
207
00:12:04,529 --> 00:12:10,220
So it's all synchronized and locked and everything,
and it's, you know, definitely not super performent
208
00:12:10,220 --> 00:12:13,509
but strong consistency, that's cool.
209
00:12:13,509 --> 00:12:18,040
And another thing you might not know about
Argus is promises came from Argus.
210
00:12:18,040 --> 00:12:19,509
I'm not going to go into that.
211
00:12:19,509 --> 00:12:22,660
That's another week and a half of material.
212
00:12:22,660 --> 00:12:28,569
But the idea of promise pipe lining because
you realize RPC can be really slow if it's
213
00:12:28,569 --> 00:12:33,540
all synchronous, hey, we can make it asynchronous
with promises, and they're strongly typed,
214
00:12:33,540 --> 00:12:34,720
and that's really great.
215
00:12:34,720 --> 00:12:40,749
So there's another paper written by Barbara
called promises linguistic support for asynchronous
216
00:12:40,749 --> 00:12:42,959
procedure calls in distributed systems.
217
00:12:42,959 --> 00:12:44,560
I encourage you to have a look at that.
218
00:12:44,560 --> 00:12:47,879
But just note, hey, this is where promises
came from.