···11WEBVTT
22331
44-00:00:00.000 --> 00:00:02.000
55-Thank you.
44+00:00:00.000 --> 00:00:06.960
55+All right.
66772
88-00:00:30.000 --> 00:00:32.000
99-Thank you.
88+00:00:06.960 --> 00:00:09.280
99+So that's how Streamplace VOD works.
101011113
1212-00:01:00.000 --> 00:01:02.000
1313-Hello.
1212+00:00:09.280 --> 00:00:11.200
1313+I hope you all enjoyed the presentation.
141415154
1616-00:01:02.000 --> 00:01:04.000
1717-We're good?
1616+00:00:11.200 --> 00:00:13.120
1717+My name is Eli Malin.
181819195
2020-00:01:04.000 --> 00:01:06.000
2121-Nice.
2020+00:00:13.120 --> 00:00:15.800
2121+I'm the CEO and founder of Streamplace.
222223236
2424-00:01:06.000 --> 00:01:10.000
2525-Everybody, my name is Eli Malin.
2424+00:00:15.800 --> 00:00:21.600
2525+I don't care about my Caribbeaner update version.
262627277
2828-00:01:10.000 --> 00:01:14.000
2929-Someday, I will figure out how to change slides.
2828+00:00:21.600 --> 00:00:29.320
2929+So the crux of this talk was if you are going to make a system that has both VOD and live,
303031318
3232-00:01:14.000 --> 00:01:16.000
3333-Hmm.
3232+00:00:29.320 --> 00:00:32.280
3333+that'd be good at all.
343435359
3636-00:01:16.000 --> 00:01:19.000
3737-My buttons on my keyboard no longer do anything.
3636+00:00:32.280 --> 00:00:33.640
3737+You should probably start with live.
3838393910
4040-00:01:19.000 --> 00:01:22.000
4141-Well, stream place VOD is cancelled.
4040+00:00:33.640 --> 00:00:35.640
4141+Live video is more difficult than VOD.
4242434311
4444-00:01:22.000 --> 00:01:26.000
4545-I told Boris last year if he wanted the videos up, my whole laptop
4444+00:00:35.640 --> 00:00:42.040
4545+It is much easier to generalize live video to VOD than it is to go the opposite direction.
4646474712
4848-00:01:26.000 --> 00:01:28.000
4949-is frozen now.
4848+00:00:42.040 --> 00:00:43.600
4949+So we started out with live.
5050515113
5252-00:01:28.000 --> 00:01:30.000
5353-This is awesome.
5252+00:00:43.600 --> 00:00:45.520
5353+We're pretty happy with that.
5454555514
5656-00:01:30.000 --> 00:01:33.000
5757-I told Boris last year if he wanted the videos up, I could
5656+00:00:45.520 --> 00:00:47.360
5757+And knock on wood.
5858595915
6060-00:01:33.000 --> 00:01:37.000
6161-make for each video a stream place stream that loops every
6060+00:00:47.360 --> 00:00:49.920
6161+Of course, as soon as I walked out of the other room, people started reporting playback
6262636316
6464-00:01:37.000 --> 00:01:40.000
6565-video 24-7 and then you have VOD.
6464+00:00:49.920 --> 00:00:50.920
6565+issues over there.
6666676717
6868-00:01:40.000 --> 00:01:42.000
6969-And that's a joke.
6868+00:00:50.920 --> 00:00:55.560
6969+But overall, everything's been going really well at all of this.
7070717118
7272-00:01:42.000 --> 00:01:45.000
7373-But the design of VOD is going to look more similar to that
7272+00:00:55.560 --> 00:01:00.800
7373+So I'll start by sort of explaining how Streamplace, a quick explanation of how Streamplace live
7474757519
7676-00:01:45.000 --> 00:01:47.000
7777-than you might think.
7676+00:01:00.800 --> 00:01:03.080
7777+works because I've talked about this a lot before.
7878797920
8080-00:01:47.000 --> 00:01:50.000
8181-This is strange.
8080+00:01:03.080 --> 00:01:09.240
8181+And then we'll talk about how we're adapting that for a decentralized VOD primitive.
8282838321
8484-00:01:50.000 --> 00:01:52.000
8585-Give me a moment.
8484+00:01:09.240 --> 00:01:15.280
8585+What does it mean to have something like, you know, what would a decentralized YouTube
8686878722
8888-00:01:52.000 --> 00:01:58.000
8989-Really, just a black screen on my laptop right now.
8888+00:01:15.280 --> 00:01:16.280
8989+look like?
9090919123
9292-00:01:58.000 --> 00:02:02.000
9393-Let's get one ready.
9292+00:01:16.280 --> 00:01:20.480
9393+What things do you need in order to make that happen?
9494959524
9696-00:02:02.000 --> 00:02:04.000
9797-Okay.
9696+00:01:20.480 --> 00:01:22.560
9797+So yeah, this is just about Streamplace.
9898999925
100100-00:02:04.000 --> 00:02:06.000
101101-Just a second.
100100+00:01:22.560 --> 00:01:29.320
101101+There's been three Streamplace third-party clients created since the beginning of this
10210210310326
104104-00:02:06.000 --> 00:02:09.000
105105-Just like Google thing.
104104+00:01:29.320 --> 00:01:30.840
105105+conference.
10610610710727
108108-00:02:09.000 --> 00:02:22.000
109109-Okay.
108108+00:01:30.840 --> 00:01:35.960
109109+So I don't know if that reflects poorly on our front end or if it just refers to the
11011011111128
112112-00:02:49.000 --> 00:02:52.000
113113-Okay.
112112+00:01:35.960 --> 00:01:38.280
113113+entrepreneurial spirit of the app proto community.
11411411511529
116116-00:03:19.000 --> 00:03:22.000
117117-Okay.
116116+00:01:38.280 --> 00:01:41.760
117117+But this one's from Jack.xyz.
11811811911930
120120-00:03:49.000 --> 00:03:52.000
121121-Okay.
120120+00:01:41.760 --> 00:01:46.240
121121+And it shows all of the streams at once, really given the Streamplace servers the maximum
12212212312331
124124-00:04:19.000 --> 00:04:22.000
125125-Okay.
124124+00:01:46.240 --> 00:01:50.720
125125+workout to give everybody what they're looking for there.
12612612712732
128128-00:04:50.000 --> 00:04:52.000
129129-Okay.
128128+00:01:50.720 --> 00:01:55.160
129129+Before we do anything else, I found this MP4 file on the ground.
13013013113133
132132-00:05:07.000 --> 00:05:10.000
133133-All right.
132132+00:01:55.160 --> 00:02:01.160
133133+Let's see what it is.
13413413513534
136136-00:05:10.000 --> 00:05:12.000
137137-Yeah.
136136+00:02:01.160 --> 00:02:06.520
137137+You can all imagine the great noises Trabio is making here.
13813813913935
140140-00:05:12.000 --> 00:05:14.000
141141-All right.
140140+00:02:06.520 --> 00:02:12.560
141141+What's going to happen?
14214214314336
144144-00:05:14.000 --> 00:05:16.000
145145-So that's how stream place VOD works.
144144+00:02:12.560 --> 00:02:15.560
145145+And wait for it.
14614614714737
148148-00:05:16.000 --> 00:05:18.000
149149-I hope you all enjoyed the presentation.
148148+00:02:15.560 --> 00:02:18.240
149149+Yeah, we got them.
15015015115138
152152-00:05:18.000 --> 00:05:20.000
153153-I'm a developer and founder of stream place.
152152+00:02:18.240 --> 00:02:19.240
153153+Yeah.
15415415515539
156156-00:05:20.000 --> 00:05:24.000
157157-I don't care about my Caribbean update version.
156156+00:02:19.280 --> 00:02:26.000
157157+So that MP4 file I found on the ground turned out to be my glorious victory over Trabio.
15815815915940
160160-00:05:24.000 --> 00:05:30.000
161161-So the crux of this talk was if you are going to make a system
160160+00:02:26.000 --> 00:02:27.000
161161+So how do I know that?
16216216316341
164164-00:05:30.000 --> 00:05:35.000
165165-that has both VOD and live, can that be muted at all?
164164+00:02:27.000 --> 00:02:30.480
165165+How do I know it's Eli's livestream that happened there?
16616616716742
168168-00:05:35.000 --> 00:05:37.000
169169-You should probably start with live.
168168+00:02:30.480 --> 00:02:35.720
169169+And that has to do with Streamplace's signing format.
17017017117143
172172-00:05:37.000 --> 00:05:39.000
173173-Live video is more difficult than VOD.
172172+00:02:35.720 --> 00:02:39.040
173173+So we needed to...
17417417517544
176176-00:05:39.000 --> 00:05:43.000
177177-It is much easier to generalize live video to VOD than it is to
176176+00:02:39.040 --> 00:02:41.840
177177+So decentralized VOD is something that's kind of existed before, right?
17817817917945
180180-00:05:43.000 --> 00:05:45.000
181181-go the opposite direction.
180180+00:02:41.840 --> 00:02:42.840
181181+You could argue...
18218218318346
184184-00:05:45.000 --> 00:05:47.000
185185-So we started out with live.
184184+00:02:42.840 --> 00:02:43.920
185185+This will be a popular opinion.
18618618718747
188188-00:05:47.000 --> 00:05:49.000
189189-We are pretty happy with that.
188188+00:02:43.920 --> 00:02:47.680
189189+You could argue video NFTs are kind of like a decentralized VOD, right?
19019019119148
192192-00:05:49.000 --> 00:05:51.000
193193-And, you know, knock on wood.
192192+00:02:47.680 --> 00:02:51.680
193193+You've got an IPFS reference to something that's out there and not controlled by any
19419419519549
196196-00:05:51.000 --> 00:05:53.000
197197-Of course, as soon as I walked out of the other room, people
196196+00:02:51.680 --> 00:02:52.680
197197+one party.
19819819919950
200200-00:05:53.000 --> 00:05:55.000
201201-started reporting playback issues over there.
200200+00:02:52.680 --> 00:02:54.880
201201+Lots of other IPFS based.
20220220320351
204204-00:05:55.000 --> 00:05:58.000
205205-But overall, everything has been going really well at all of
204204+00:02:54.880 --> 00:02:59.640
205205+There's like DAT based livestreaming that maybe falls into that.
20620620720752
208208-00:05:58.000 --> 00:05:59.000
209209-this.
208208+00:02:59.640 --> 00:03:03.160
209209+But for the most part, we needed to invent what a decentralized livestream is.
21021021121153
212212-00:05:59.000 --> 00:06:03.000
213213-So I'll start by sort of explaining how stream place, a
212212+00:03:03.160 --> 00:03:06.200
213213+So what we did was we took...
21421421521554
216216-00:06:03.000 --> 00:06:05.000
217217-quick explanation of how stream place live works because I've
216216+00:03:06.200 --> 00:03:10.080
217217+The first thing that happens is you generate a signing key, same as the one that's used
21821821921955
220220-00:06:05.000 --> 00:06:07.000
221221-talked about this a lot before.
220220+00:03:10.080 --> 00:03:13.800
221221+to secure your app proto repository.
22222222322356
224224-00:06:07.000 --> 00:06:10.000
225225-And then we'll talk about how we are adapting that for a
224224+00:03:13.800 --> 00:03:16.080
225225+We then take that signing key.
22622622722757
228228-00:06:10.000 --> 00:06:13.000
229229-decentralized VOD primitive.
228228+00:03:16.080 --> 00:03:23.360
229229+You then configure your OBS instance, just like we're doing here, to stream in to Streamplace.
23023023123158
232232-00:06:13.000 --> 00:06:18.000
233233-What does it mean to have something like, you know, what
232232+00:03:23.360 --> 00:03:25.160
233233+You actually provide it with that signing key.
23423423523559
236236-00:06:18.000 --> 00:06:20.000
237237-would a decentralized YouTube look like?
236236+00:03:25.160 --> 00:03:27.120
237237+So it has the capability of signing on your behalf.
23823823923960
240240-00:06:20.000 --> 00:06:24.000
241241-What things do you need in order to make that happen?
240240+00:03:27.120 --> 00:03:31.000
241241+If you really care about your key custody, you should run Streamplace locally and then
24224224324361
244244-00:06:24.000 --> 00:06:26.000
245245-So, yeah, this is just about stream place.
244244+00:03:31.000 --> 00:03:34.760
245245+syndicate it out to a server.
24624624724762
248248-00:06:26.000 --> 00:06:31.000
249249-There's been three stream place third party clients created
248248+00:03:34.760 --> 00:03:37.280
249249+Then this is basically every livestream you've ever watched.
25025025125163
252252-00:06:31.000 --> 00:06:34.000
253253-since the beginning of this conference.
252252+00:03:37.280 --> 00:03:42.740
253253+If you haven't messed with video infrastructure before, it's just a bunch of short video files
25425425525564
256256-00:06:34.000 --> 00:06:38.000
257257-So I don't know if that reflects poorly on our front end or if
256256+00:03:42.740 --> 00:03:44.600
257257+that are thrown into your face in sequence.
25825825925965
260260-00:06:38.000 --> 00:06:41.000
261261-it just refers to the entrepreneurial spirit of the
260260+00:03:44.600 --> 00:03:46.940
261261+And it provides the illusion of a livestream.
26226226326366
264264-00:06:41.000 --> 00:06:42.000
265265-community.
264264+00:03:46.940 --> 00:03:48.220
265265+So that's how we do it.
26626626726767
268268-00:06:42.000 --> 00:06:47.000
269269-But this one is from Jack.XYZ and it shows all of the streams
268268+00:03:48.220 --> 00:03:50.660
269269+Each MP4 file comes in.
27027027127168
272272-00:06:47.000 --> 00:06:51.000
273273-at once, given the stream place servers, the maximum workout to
272272+00:03:50.660 --> 00:03:56.220
273273+We give each one of them an embedded signature using technology from the C2PA, the Coalition
27427427527569
276276-00:06:51.000 --> 00:06:54.000
277277-give everybody what they're looking for there.
276276+00:03:56.220 --> 00:03:59.480
277277+for Content Provenance and Authenticity.
27827827927970
280280-00:06:54.000 --> 00:06:58.000
281281-Before we do anything else, I found this MP4 file on the
280280+00:03:59.480 --> 00:04:00.780
281281+Cool format.
28228228328371
284284-00:06:58.000 --> 00:06:59.000
285285-ground.
284284+00:04:00.780 --> 00:04:06.200
285285+It provides a mechanism for giving you an MP4 file that contains an embedded signature
28628628728772
288288-00:06:59.000 --> 00:07:05.000
289289-Let's see what it is.
288288+00:04:06.200 --> 00:04:11.380
289289+over a hash of all of that MP4 file, except for that part of the signature.
29029029129173
292292-00:07:05.000 --> 00:07:09.000
293293-You can all imagine the great noises Trabio is making here.
292292+00:04:11.380 --> 00:04:12.640
293293+That's really tricky to get right.
29429429529574
296296-00:07:10.000 --> 00:07:13.000
297297-What's going to happen?
296296+00:04:12.660 --> 00:04:16.780
297297+And that's one of the things I really like about the C2PA's tooling is you've got this
29829829929975
300300-00:07:13.000 --> 00:07:20.000
301301-And wait for it.
300300+00:04:16.780 --> 00:04:23.540
301301+a lot of decentralized media projects have external signatures.
30230230330376
304304-00:07:20.000 --> 00:07:21.000
305305-Yeah, we got them.
304304+00:04:23.540 --> 00:04:26.780
305305+So you might have this actually including like Blue Sky videos, right?
30630630730777
308308-00:07:21.000 --> 00:07:22.000
309309-Yeah.
308308+00:04:26.780 --> 00:04:28.660
309309+How do you know it's my Blue Sky video?
31031031131178
312312-00:07:22.000 --> 00:07:26.000
313313-So that MP4 file I found on the ground turned out to be my
312312+00:04:28.660 --> 00:04:34.780
313313+It's because there's a blob out there that is referenced by a record in my repository
31431431531579
316316-00:07:26.000 --> 00:07:28.000
317317-glorious victory over Trabio.
316316+00:04:34.780 --> 00:04:37.220
317317+and my repository has a signature on the root commit.
31831831931980
320320-00:07:28.000 --> 00:07:30.000
321321-So how do I know that?
320320+00:04:37.220 --> 00:04:39.300
321321+So that's how you know it's mine, right?
32232232332381
324324-00:07:30.000 --> 00:07:34.000
325325-How do I know it's Eli's live stream that happened there?
324324+00:04:39.320 --> 00:04:44.080
325325+What I like about this format is I can have this is the MP4 file on the ground example
32632632732782
328328-00:07:34.000 --> 00:07:39.000
329329-And that has to do with stream places signing format.
328328+00:04:44.080 --> 00:04:45.080
329329+I just gave, right?
33033033133183
332332-00:07:39.000 --> 00:07:44.000
333333-So we needed to, so decentralized VOD is something that's
332332+00:04:45.080 --> 00:04:49.000
333333+You can have arbitrary MP4 file on your computer and all of that signing and provenance data
33433433533584
336336-00:07:44.000 --> 00:07:45.000
337337-kind of existed before, right?
336336+00:04:49.000 --> 00:04:51.920
337337+is intact and embedded in the MP4 file.
33833833933985
340340-00:07:45.000 --> 00:07:48.000
341341-You could argue, this will be a popular opinion, you could argue
340340+00:04:51.920 --> 00:04:52.920
341341+So I like that a lot.
34234234334386
344344-00:07:48.000 --> 00:07:51.000
345345-video NFTs are kind of like a decentralized VOD, right, where
344344+00:04:52.920 --> 00:04:58.160
345345+It's something we really wanted to preserve as we move from live to VOD.
34634634734787
348348-00:07:51.000 --> 00:07:54.000
349349-you've got an IPFS reference to something that's like out there
348348+00:04:58.160 --> 00:05:00.600
349349+And lots of very cool metadata in here.
35035035135188
352352-00:07:54.000 --> 00:07:58.000
353353-and not controlled by any one party, lots of other like IPFS
352352+00:05:00.600 --> 00:05:02.720
353353+We're not doing too much with this mechanism yet.
35435435535589
356356-00:07:58.000 --> 00:08:02.000
357357-based, like there's like DAT based live streaming that maybe
356356+00:05:02.720 --> 00:05:08.460
357357+I spent a long time talking to Trezi yesterday about embedding this part of the embedded
35835835935990
360360-00:08:02.000 --> 00:08:03.000
361361-falls into that.
360360+00:05:08.480 --> 00:05:10.680
361361+metadata here should be that I'm playing Silksong, right?
36236236336391
364364-00:08:03.000 --> 00:08:06.000
365365-But for the most part, we needed to invent what a decentralized
364364+00:05:10.680 --> 00:05:15.880
365365+And then if you care about Silksong, you can watch that live stream and get that data from
36636636736792
368368-00:08:06.000 --> 00:08:07.000
369369-live stream is.
368368+00:05:15.880 --> 00:05:17.680
369369+like pretty much any direction, right?
37037037137193
372372-00:08:07.000 --> 00:08:11.000
373373-So what we did was we took the first thing that happens is you
372372+00:05:17.680 --> 00:05:22.400
373373+Like you can download it from sketchiest website in the world.ru and still be confident that
37437437537594
376376-00:08:11.000 --> 00:08:14.000
377377-generate a signing key, same as the one with kinds that's used
376376+00:05:22.400 --> 00:05:25.360
377377+you're looking at the right thing, right?
37837837937995
380380-00:08:14.000 --> 00:08:17.000
381381-to secure your app proto repository.
380380+00:05:25.360 --> 00:05:27.360
381381+And then I'm playing Silksong.
38238238338396
384384-00:08:17.000 --> 00:08:21.000
385385-We then take that signing key, you then configure your OBS
384384+00:05:27.360 --> 00:05:31.160
385385+Those, yeah, that's this example.
38638638738797
388388-00:08:21.000 --> 00:08:25.000
389389-instance, just like we're doing here to stream in to stream
388388+00:05:31.160 --> 00:05:34.140
389389+I have, yeah, we've made streamplace as easy to run as possible.
39039039139198
392392-00:08:25.000 --> 00:08:26.000
393393-place.
392392+00:05:34.140 --> 00:05:38.320
393393+So you can run your own streamplace nodes, syndicate my streams.
39439439539599
396396-00:08:26.000 --> 00:08:28.000
397397-You actually provide it with that signing key.
396396+00:05:38.340 --> 00:05:41.700
397397+You get copied over in this sort of trustless, unauthenticated way.
398398399399100
400400-00:08:28.000 --> 00:08:30.000
401401-So it has the capability of signing on your behalf.
400400+00:05:41.700 --> 00:05:43.220
401401+And then you see it over there.
402402403403101
404404-00:08:31.000 --> 00:08:33.000
405405-If you really care about your key custody, you should run
404404+00:05:43.220 --> 00:05:48.980
405405+So the thinking here is we probably won't beat Twitch by making a bigger data center
406406407407102
408408-00:08:33.000 --> 00:08:36.000
409409-stream place locally and then syndicate it out to a server.
408408+00:05:48.980 --> 00:05:51.540
409409+or buying more bandwidth than Amazon.
410410411411103
412412-00:08:38.000 --> 00:08:41.000
413413-Then this is basically every live stream you've ever watched.
412412+00:05:51.540 --> 00:05:55.340
413413+But we might be able to beat them by following the example of BitTorrent, right?
414414415415104
416416-00:08:41.000 --> 00:08:44.000
417417-If you haven't messed with video infrastructure before is just a
416416+00:05:55.340 --> 00:05:59.220
417417+You can have lots of decentralized infrastructure that's replicating all of this, but through
418418419419105
420420-00:08:44.000 --> 00:08:48.000
421421-bunch of short video files that are thrown into your face in
420420+00:05:59.220 --> 00:06:02.500
421421+the magic of digital signatures, you know that the video is authentic.
422422423423106
424424-00:08:48.000 --> 00:08:50.000
425425-sequence and it provides the illusion of a live stream.
424424+00:06:02.500 --> 00:06:07.100
425425+So what's the problem?
426426427427107
428428-00:08:50.000 --> 00:08:51.000
429429-So that's how we do it.
428428+00:06:07.100 --> 00:06:09.240
429429+This isn't very convenient.
430430431431108
432432-00:08:51.000 --> 00:08:54.000
433433-Each MP4 file comes in.
432432+00:06:09.240 --> 00:06:13.360
433433+So when I say slice the video up into one second MP4 files, I'm being very literal about
434434435435109
436436-00:08:54.000 --> 00:08:57.000
437437-We give each one of them an embedded signature using
436436+00:06:13.360 --> 00:06:14.360
437437+that.
438438439439110
440440-00:08:57.000 --> 00:09:00.000
441441-technology from the C2PA, the Coalition for Content
440440+00:06:14.360 --> 00:06:17.440
441441+If you run streamplace on your computer, you can navigate to this and see lots and lots
442442443443111
444444-00:09:00.000 --> 00:09:02.000
445445-Provenance and Authenticity.
444444+00:06:17.440 --> 00:06:20.080
445445+and lots of one second MP4 files.
446446447447112
448448-00:09:02.000 --> 00:09:03.000
449449-Cool format.
448448+00:06:20.080 --> 00:06:22.600
449449+And when the computer is processing them all and feeding to you as a live stream, that's
450450451451113
452452-00:09:03.000 --> 00:09:07.000
453453-It provides a mechanism for giving you an MP4 file that
452452+00:06:22.600 --> 00:06:23.600
453453+okay.
454454455455114
456456-00:09:07.000 --> 00:09:12.000
457457-contains an embedded signature over a hash of all of that MP4
456456+00:06:23.600 --> 00:06:27.440
457457+Afterward, when you want to work with this as a VOD, it's a pain in the ass.
458458459459115
460460-00:09:12.000 --> 00:09:14.000
461461-file except for that part of the signature.
460460+00:06:27.440 --> 00:06:34.480
461461+So we wanted, this was one of the design goals of VOD for us is how do we handle that?
462462463463116
464464-00:09:14.000 --> 00:09:16.000
465465-That's really tricky to get right.
464464+00:06:34.480 --> 00:06:39.920
465465+And unfortunately, because we used regular MP4 files, they're non-concatenatable.
466466467467117
468468-00:09:16.000 --> 00:09:19.000
469469-One of the things I really like about the C2PA's tooling is
468468+00:06:39.920 --> 00:06:45.560
469469+You can't take two MP4 files, squish all the bytes together and get valid output, right?
470470471471118
472472-00:09:19.000 --> 00:09:25.000
473473-you've got this, a lot of decentralized media projects have
472472+00:06:45.560 --> 00:06:47.900
473473+That's just not MP4 works.
474474475475119
476476-00:09:26.000 --> 00:09:27.000
477477-external signatures.
476476+00:06:47.900 --> 00:06:49.980
477477+It's not valid data there.
478478479479120
480480-00:09:27.000 --> 00:09:30.000
481481-So you might have this actually including Bluesky videos.
480480+00:06:49.980 --> 00:06:55.260
481481+So you'd have to mux it and the signature that you get there wouldn't match the input.
482482483483121
484484-00:09:30.000 --> 00:09:32.000
485485-How do you know it's my Bluesky video?
484484+00:06:55.260 --> 00:06:58.900
485485+And all of a sudden you've broken this entire cool BitTorrent deprovenance mechanism that
486486487487122
488488-00:09:32.000 --> 00:09:37.000
489489-It's because there's a blob out there that is referenced by a
488488+00:06:58.900 --> 00:07:01.940
489489+I was just describing.
490490491491123
492492-00:09:37.000 --> 00:09:40.000
493493-record in my repository and my repository has a signature on
492492+00:07:01.940 --> 00:07:09.560
493493+So this is the other reason we were already looking at forking C2PA.
494494495495124
496496-00:09:40.000 --> 00:09:41.000
497497-the root commit.
496496+00:07:09.560 --> 00:07:13.960
497497+So here we have a list of signing algorithms.
498498499499125
500500-00:09:41.000 --> 00:09:42.000
501501-So that's how you know it's mine.
500500+00:07:13.960 --> 00:07:25.680
501501+As you can see here, we have the good and virtuous ECDSA signature over a SHA256 hash
502502503503126
504504-00:09:42.000 --> 00:09:46.000
505505-What I like about this format is I can have this is the MP4
504504+00:07:25.680 --> 00:07:37.820
505505+over the P256 curve, but not over the SCCP256K1 curve, the evil shady curve that's used inside
506506507507127
508508-00:09:46.000 --> 00:09:48.000
509509-file on the ground example I just gave.
508508+00:07:37.820 --> 00:07:41.080
509509+BitTorrent and Ethereum and AppProto.
510510511511128
512512-00:09:48.000 --> 00:09:51.000
513513-You can have arbitrary MP4 file on your computer and all of
512512+00:07:41.080 --> 00:07:48.340
513513+So I think my theory here is that somebody in Adobe had to sell some exec that they weren't
514514515515129
516516-00:09:51.000 --> 00:09:54.000
517517-that signing and provenance data is intact and embedded in the
516516+00:07:48.340 --> 00:07:49.940
517517+making blockchain software here.
518518519519130
520520-00:09:54.000 --> 00:09:55.000
521521-MP4 file.
520520+00:07:49.940 --> 00:07:51.800
521521+So we didn't do that kind of signing.
522522523523131
524524-00:09:55.000 --> 00:09:56.000
525525-So I like that a lot.
524524+00:07:51.800 --> 00:07:53.020
525525+We only did this kind of signing.
526526527527132
528528-00:09:56.000 --> 00:09:58.000
529529-It's something we really wanted to preserve as we moved from
528528+00:07:53.020 --> 00:07:58.120
529529+So technically for as long as streamplace has existed, it hasn't been C2PA compatible.
530530531531133
532532-00:09:58.000 --> 00:09:59.000
533533-live to VOD.
532532+00:07:58.120 --> 00:08:00.940
533533+And I had been looking for a while to formalize that.
534534535535134
536536-00:09:59.000 --> 00:10:02.000
537537-And lots of very cool metadata in here.
536536+00:08:00.940 --> 00:08:04.920
537537+So oh, yeah, this is the other.
538538539539135
540540-00:10:02.000 --> 00:10:04.000
541541-We're not doing too much with this mechanism yet.
540540+00:08:04.920 --> 00:08:07.960
541541+So this is the other.
542542543543136
544544-00:10:04.000 --> 00:10:09.000
545545-I spent a long time talking to Trezi yesterday about embedding
544544+00:08:07.960 --> 00:08:13.760
545545+So Adobe is out there right now lobbying, especially European governments and the state
546546547547137
548548-00:10:09.000 --> 00:10:13.000
549549-this part of the embedded metadata here should be that I'm
548548+00:08:13.760 --> 00:08:20.680
549549+of California to require provenance data on everything that you post on social media.
550550551551138
552552-00:10:13.000 --> 00:10:14.000
553553-playing Silk Song, right?
552552+00:08:20.680 --> 00:08:24.200
553553+This is the reason for the C2PA's existence, getting us ready for a world filled with deep
554554555555139
556556-00:10:14.000 --> 00:10:16.000
557557-And then if you care about Silk Song, you can watch that
556556+00:08:24.200 --> 00:08:25.200
557557+takes.
558558559559140
560560-00:10:16.000 --> 00:10:19.000
561561-livestream and get that data from like pretty much any
560560+00:08:25.200 --> 00:08:29.140
561561+This is not inherently a bad idea.
562562563563141
564564-00:10:19.000 --> 00:10:20.000
565565-direction, right?
564564+00:08:29.140 --> 00:08:32.880
565565+Once anybody can deep fake anything, how do you ever trust what you're looking at?
566566567567142
568568-00:10:20.000 --> 00:10:23.000
569569-Like you can download it from sketchiest website in the world
568568+00:08:32.880 --> 00:08:35.460
569569+No one technical mechanism can solve that problem.
570570571571143
572572-00:10:23.000 --> 00:10:26.000
573573-.ru and still be confident that you're looking at the right
572572+00:08:35.460 --> 00:08:40.020
573573+But one way you could be more confident is if there was provenance data embedded in the
574574575575144
576576-00:10:26.000 --> 00:10:27.000
577577-thing.
576576+00:08:40.020 --> 00:08:43.620
577577+live stream, where it says, oh, this video is taken from Eli's camera and then edited
578578579579145
580580-00:10:27.000 --> 00:10:29.000
581581-And then I'm playing Silk Song.
580580+00:08:43.620 --> 00:08:48.160
581581+using this software and makes its way everywhere.
582582583583146
584584-00:10:29.000 --> 00:10:32.000
585585-Those, yeah, that's this example.
584584+00:08:48.280 --> 00:08:51.320
585585+The reason Adobe is doing this lobbying is because they want to try and do some regulatory
586586587587147
588588-00:10:32.000 --> 00:10:35.000
589589-I have, yeah, we've made streamplace as easy to run as
588588+00:08:51.320 --> 00:08:52.320
589589+capture.
590590591591148
592592-00:10:35.000 --> 00:10:36.000
593593-possible.
592592+00:08:52.320 --> 00:08:57.360
593593+So they want to sell governments, these expensive Creative Cloud subscriptions, and be the only
594594595595149
596596-00:10:36.000 --> 00:10:39.000
597597-So you can run your own streamplace nodes, syndicate my
596596+00:08:57.360 --> 00:09:01.920
597597+software that you could possibly use in order to do all of that stuff.
598598599599150
600600-00:10:39.000 --> 00:10:40.000
601601-streams.
600600+00:09:01.920 --> 00:09:07.760
601601+Also the part I think is really funny is they want you to go pay a CA, like $107 a month
602602603603151
604604-00:10:40.000 --> 00:10:43.000
605605-They get copied over in this sort of trustless, unauthenticated
604604+00:09:07.760 --> 00:09:10.440
605605+for a signing certificate.
606606607607152
608608-00:10:43.000 --> 00:10:44.000
609609-way.
608608+00:09:10.440 --> 00:09:12.240
609609+Let's encrypt and everything never happened.
610610611611153
612612-00:10:44.000 --> 00:10:45.000
613613-And then you see it over there.
612612+00:09:12.920 --> 00:09:18.320
613613+Of course, in the app proto and decentralized web communities, we have DIDs and totally other
614614615615154
616616-00:10:45.000 --> 00:10:50.000
617617-So the thinking here is we probably won't beat Twitch by
616616+00:09:18.320 --> 00:09:23.480
617617+stacks of how we would handle some of this stuff.
618618619619155
620620-00:10:50.000 --> 00:10:53.000
621621-making a bigger data center or buying more bandwidth than
620620+00:09:23.480 --> 00:09:27.360
621621+How we would handle key custody, how we would handle authenticity, that kind of thing.
622622623623156
624624-00:10:53.000 --> 00:10:54.000
625625-Amazon.
624624+00:09:27.360 --> 00:09:33.040
625625+PLC directories got its own take on everything.
626626627627157
628628-00:10:54.000 --> 00:10:56.000
629629-But we might be able to beat them by following the example of
628628+00:09:33.040 --> 00:09:39.120
629629+Some good ideas need to be modernized and not try and pay these vendors a bunch of money
630630631631158
632632-00:10:56.000 --> 00:10:57.000
633633-BitTorrent, right?
632632+00:09:39.120 --> 00:09:41.640
633633+for certificates.
634634635635159
636636-00:10:57.000 --> 00:11:00.000
637637-That you can have lots of decentralized infrastructure
636636+00:09:41.720 --> 00:09:48.160
637637+I said all of these things out loud a lot and the good folks at the IPFS Foundation
638638639639160
640640-00:11:00.000 --> 00:11:02.000
641641-that's replicating all of this, but through the magic of
640640+00:09:48.160 --> 00:09:50.960
641641+and the DASL project were very, very receptive to it.
642642643643161
644644-00:11:02.000 --> 00:11:07.000
645645-digital signatures, you know that the video is authentic.
644644+00:09:50.960 --> 00:09:53.240
645645+So they've given us a grant.
646646647647162
648648-00:11:07.000 --> 00:11:08.000
649649-So what's the problem?
648648+00:09:53.240 --> 00:09:59.040
649649+Everything you see past this point in the presentation is a result of the grant that
650650651651163
652652-00:11:08.000 --> 00:11:11.000
653653-This isn't very convenient.
652652+00:09:59.040 --> 00:10:01.800
653653+we got from the IPFS Foundation.
654654655655164
656656-00:11:11.000 --> 00:11:14.000
657657-So when I say slice the video up into one second MP4 files, I'm
656656+00:10:01.800 --> 00:10:07.880
657657+So we're working on two specs with them, Stupa and Muxal.
658658659659165
660660-00:11:14.000 --> 00:11:15.000
661661-being very literal about that.
660660+00:10:07.880 --> 00:10:10.960
661661+Stupa is the simple standard for provenance and authenticity.
662662663663166
664664-00:11:15.000 --> 00:11:17.000
665665-If you run streamplace on your computer, you can navigate to
664664+00:10:10.960 --> 00:10:13.160
665665+This is the simpler of the two standards.
666666667667167
668668-00:11:17.000 --> 00:11:18.000
669669-this.
668668+00:10:13.160 --> 00:10:14.480
669669+It's very much, thank you, Ted.
670670671671168
672672-00:11:18.000 --> 00:11:21.000
673673-And see lots and lots and lots of one second MP4 files.
672672+00:10:14.480 --> 00:10:15.480
673673+Look at that.
674674675675169
676676-00:11:21.000 --> 00:11:24.000
677677-And when the computer is processing them all and feeding
676676+00:10:15.480 --> 00:10:16.760
677677+Ted got me a glass of water.
678678679679170
680680-00:11:24.000 --> 00:11:26.000
681681-them to you as a live stream, that's okay.
680680+00:10:16.760 --> 00:10:17.760
681681+Everybody thank Ted.
682682683683171
684684-00:11:26.000 --> 00:11:28.000
685685-Afterward when you want to work with this as a VOD, it's a pain
684684+00:10:17.760 --> 00:10:19.760
685685+That was awesome.
686686687687172
688688-00:11:28.000 --> 00:11:29.000
689689-in the ass.
688688+00:10:23.280 --> 00:10:29.280
689689+Stupa is our, I don't know what makes a fork a hostile fork, but it's definitely a fork
690690691691173
692692-00:11:29.000 --> 00:11:33.000
693693-So we wanted, this is one of the design goals of VOD for us, is
692692+00:10:29.280 --> 00:10:32.760
693693+of the C2PA that takes out all the things.
694694695695174
696696-00:11:33.000 --> 00:11:35.000
697697-how do we handle that?
696696+00:10:32.760 --> 00:10:34.400
697697+It doesn't really, it actually doesn't take out anything.
698698699699175
700700-00:11:35.000 --> 00:11:39.000
701701-And unfortunately, because we used regular MP4 files, they're
700700+00:10:34.400 --> 00:10:38.080
701701+Like if you want to pay DID just start at 200 bucks a month, you totally can.
702702703703176
704704-00:11:39.000 --> 00:11:40.000
705705-non-concatenatable.
704704+00:10:38.080 --> 00:10:39.920
705705+But we have some different opinions about that.
706706707707177
708708-00:11:40.000 --> 00:11:44.000
709709-You can't take two MP4 files, squish all the bytes together, and
708708+00:10:39.920 --> 00:10:40.920
709709+We have DIDS, right?
710710711711178
712712-00:11:44.000 --> 00:11:47.000
713713-get very, very, very close to the end of the stream.
712712+00:10:40.920 --> 00:10:47.120
713713+So instead of signing it with some cert that you're given by a CA, you sign it with a signing
714714715715179
716716-00:11:47.000 --> 00:11:49.000
717717-And get valid output.
716716+00:10:47.120 --> 00:10:53.200
717717+key that has a provenance chain back to your at-proto identity, right?
718718719719180
720720-00:11:49.000 --> 00:11:50.000
721721-Right?
720720+00:10:53.200 --> 00:11:00.240
721721+And then we also make it consistent with DASL, the C2PA signatures, C2PA manifests rather
722722723723181
724724-00:11:50.000 --> 00:11:51.000
725725-That's just not MP4 works.
724724+00:11:00.240 --> 00:11:01.800
725725+already use Seaboard.
726726727727182
728728-00:11:51.000 --> 00:11:53.000
729729-It's not valid data there.
728728+00:11:01.800 --> 00:11:06.640
729729+So we're just upgrading it to use Drizzle, Drizzle DASLs.
730730731731183
732732-00:11:53.000 --> 00:11:56.000
733733-So you'd have to mux it and the signature that you get there
732732+00:11:06.640 --> 00:11:10.240
733733+Very strict subset of Seaboard used in at-proto, right?
734734735735184
736736-00:11:56.000 --> 00:11:59.000
737737-wouldn't match the input.
736736+00:11:10.240 --> 00:11:11.240
737737+That's Stupa.
738738739739185
740740-00:11:59.000 --> 00:12:02.000
741741-And all of a sudden you've broken this entire cool bit torrenty
740740+00:11:11.240 --> 00:11:12.240
741741+That's all of Stupa.
742742743743186
744744-00:12:02.000 --> 00:12:05.000
745745-provenance mechanism that I was just describing.
744744+00:11:12.240 --> 00:11:14.140
745745+The rest of the presentation is about Muxill because it's way more complicated.
746746747747187
748748-00:12:05.000 --> 00:12:12.000
749749-So this is the other reason we were already looking at forking
748748+00:11:14.140 --> 00:11:16.920
749749+This is just a little change that we're making here.
750750751751188
752752-00:12:12.000 --> 00:12:13.000
753753-C2PA.
752752+00:11:16.920 --> 00:11:18.080
753753+Would love if they upstreamed it.
754754755755189
756756-00:12:13.000 --> 00:12:17.000
757757-So here we have a list of signing algorithms.
756756+00:11:18.080 --> 00:11:25.920
757757+Would love if there were DIDS and K256 signing in C2PA.
758758759759190
760760-00:12:17.000 --> 00:12:24.000
761761-As you can see here, we have the good and virtuous ECDSA
760760+00:11:25.920 --> 00:11:29.920
761761+So let's talk about the design goals for Muxill.
762762763763191
764764-00:12:24.000 --> 00:12:35.000
765765-signature over a SHA256 hash over the P256 curve, but not over
764764+00:11:29.920 --> 00:11:33.960
765765+This is basically what changes do we need to make to those MP4 files that I described
766766767767192
768768-00:12:35.000 --> 00:12:41.000
769769-the SCCP256K1 curve, the evil shady curve that's used inside
768768+00:11:33.960 --> 00:11:37.840
769769+before in order to make them appropriate for VOD.
770770771771193
772772-00:12:41.000 --> 00:12:43.000
773773-BitTorrent and Ethereum and AppProto.
772772+00:11:37.840 --> 00:11:41.800
773773+So you don't have thousands and thousands of MP4 files on your computer after a long
774774775775194
776776-00:12:43.000 --> 00:12:44.000
777777-Right?
776776+00:11:41.800 --> 00:11:43.400
777777+livestream.
778778779779195
780780-00:12:44.000 --> 00:12:49.000
781781-So I think my theory here is that somebody in Adobe had to
780780+00:11:43.400 --> 00:11:46.840
781781+So we want to keep the property that they're self-certifying.
782782783783196
784784-00:12:49.000 --> 00:12:53.000
785785-sell some exec that they weren't making blockchain software here
784784+00:11:46.840 --> 00:11:50.920
785785+It's awesome that you can just find one of these files and then go verify its provenance
786786787787197
788788-00:12:53.000 --> 00:12:55.000
789789-so we didn't do that kind of signing.
788788+00:11:50.920 --> 00:11:51.920
789789+chain.
790790791791198
792792-00:12:55.000 --> 00:12:57.000
793793-We only did this kind of signing.
792792+00:11:51.920 --> 00:11:55.780
793793+It shouldn't be, you shouldn't require external data, right?
794794795795199
796796-00:12:57.000 --> 00:12:59.000
797797-So technically for as long as streamplace has existed, it
796796+00:11:55.780 --> 00:12:01.240
797797+As a design goal, we want to support livestream to VOD so that what video engineers call DVR,
798798799799200
800800-00:12:59.000 --> 00:13:01.000
801801-hasn't been C2PA compatible.
800800+00:12:01.240 --> 00:12:05.040
801801+if you're watching a livestream, that you can seek back and see what happened one minute
802802803803201
804804-00:13:01.000 --> 00:13:04.000
805805-And I had been looking for a while to formalize that.
804804+00:12:05.040 --> 00:12:08.400
805805+ago, two minutes ago, three minutes ago, that kind of thing.
806806807807202
808808-00:13:04.000 --> 00:13:08.000
809809-So, oh, yeah, this is the other.
808808+00:12:08.400 --> 00:12:10.160
809809+It would be nice if it's a useful format.
810810811811203
812812-00:13:08.000 --> 00:13:11.000
813813-So this is the other.
812812+00:12:10.160 --> 00:12:13.240
813813+I don't want to give you some opaque seaboard blob or something.
814814815815204
816816-00:13:11.000 --> 00:13:15.000
817817-So Adobe is out there right now lobbying especially European
816816+00:12:13.240 --> 00:12:18.080
817817+A design goal of this is that at the end of it, you have, at the end of a 24-hour livestream,
818818819819205
820820-00:13:15.000 --> 00:13:21.000
821821-governments and the state of California to require provenance
820820+00:12:18.080 --> 00:12:21.840
821821+you should have a 24-hour MP4 file on your computer.
822822823823206
824824-00:13:21.000 --> 00:13:24.000
825825-data on everything that you post on social media.
824824+00:12:21.840 --> 00:12:25.840
825825+Easiest to work with, maximally compatible, preserves all of the provenance information
826826827827207
828828-00:13:24.000 --> 00:13:27.000
829829-This is the reason for the C2PA's existence, getting us ready for
828828+00:12:25.840 --> 00:12:28.040
829829+I was describing.
830830831831208
832832-00:13:27.000 --> 00:13:28.000
833833-a world filled with deep cakes.
832832+00:12:28.040 --> 00:12:31.040
833833+And it should be streamable with minimal overhead.
834834835835209
836836-00:13:28.000 --> 00:13:31.000
837837-This is not inherently a bad idea.
836836+00:12:31.040 --> 00:12:34.720
837837+I'm not going to get too deep into media over quick in this presentation, though I
838838839839210
840840-00:13:31.000 --> 00:13:35.000
841841-You know, once anybody can deep fake anything, how do you ever
840840+00:12:34.720 --> 00:12:36.400
841841+would love to.
842842843843211
844844-00:13:35.000 --> 00:13:36.000
845845-trust what you're looking at?
844844+00:12:36.400 --> 00:12:45.720
845845+But basically, we don't want to do a bunch of extra effort to go from the canonical format
846846847847212
848848-00:13:36.000 --> 00:13:39.000
849849-No one technical mechanism can solve that problem.
848848+00:12:45.720 --> 00:12:49.680
849849+that we're going to use for all of this to actually streaming it to users.
850850851851213
852852-00:13:39.000 --> 00:13:42.000
853853-But one way you could be more confident is if there was
852852+00:12:49.680 --> 00:12:52.800
853853+We shouldn't need to re-encode or anything like that.
854854855855214
856856-00:13:42.000 --> 00:13:45.000
857857-provenance data embedded in the live stream where it says, oh,
856856+00:12:52.800 --> 00:12:57.920
857857+Unfortunately, that is an impossible series of constraints.
858858859859215
860860-00:13:45.000 --> 00:13:48.000
861861-this video is taken from Eli's camera and then edited using
860860+00:12:57.920 --> 00:13:02.560
861861+Fundamentally, the reason being that if the output is going to be just an MP4 file on
862862863863216
864864-00:13:48.000 --> 00:13:51.000
865865-this software and makes its way everywhere.
864864+00:13:02.560 --> 00:13:06.640
865865+your computer, that is completely different than the format the media over quick uses
866866867867217
868868-00:13:51.000 --> 00:13:54.000
869869-But the reason Adobe is doing this lobbying is because they
868868+00:13:06.640 --> 00:13:11.240
869869+that's going to be useful for sending things to users, in particular with things like multiple
870870871871218
872872-00:13:54.000 --> 00:13:56.000
873873-want to try and do some regulatory capture.
872872+00:13:11.240 --> 00:13:12.240
873873+tracks.
874874875875219
876876-00:13:56.000 --> 00:13:58.000
877877-So they want to sell governments, these expensive
876876+00:13:12.240 --> 00:13:20.000
877877+We really want to do multi-track video, multi-track audio, 720p, a bunch of other 1080p, different
878878879879220
880880-00:13:58.000 --> 00:14:01.000
881881-Creative Cloud subscriptions and be like the only software that
880880+00:13:20.000 --> 00:13:22.800
881881+audio formats, AAC and Opus for different things.
882882883883221
884884-00:14:01.000 --> 00:14:05.000
885885-you could possibly use in order to do all of that stuff.
884884+00:13:22.800 --> 00:13:27.320
885885+All of that complexity we would like to be able to package in this one file, and that
886886887887222
888888-00:14:05.000 --> 00:14:08.000
889889-Also, the part I think is really funny is they want you to go
888888+00:13:27.320 --> 00:13:31.000
889889+skyrockets the bandwidth that you would use to send it out to people.
890890891891223
892892-00:14:08.000 --> 00:14:13.000
893893-pay like a CA, like $107 a month for a signing certificate.
892892+00:13:31.000 --> 00:13:34.440
893893+You don't want to send them every rendition, you want to send them just one.
894894895895224
896896-00:14:13.000 --> 00:14:16.000
897897-Like, let's encrypt and everything never happened.
896896+00:13:34.440 --> 00:13:37.800
897897+So, how do we get around that?
898898899899225
900900-00:14:16.000 --> 00:14:19.000
901901-And of course, like the app proto and decentralized web
900900+00:13:37.800 --> 00:13:39.280
901901+And the answer is we mux.
902902903903226
904904-00:14:19.000 --> 00:14:23.000
905905-communities, we have, you know, DIDS and totally other stacks of
904904+00:13:39.280 --> 00:13:42.640
905905+This is why it's called muxle.
906906907907227
908908-00:14:23.000 --> 00:14:26.000
909909-how we would handle some of this stuff, right?
908908+00:13:42.640 --> 00:13:51.240
909909+So, the key insight here is that the archival format, so this is to say the MP4 file on
910910911911228
912912-00:14:26.000 --> 00:14:29.000
913913-How we would handle key custody, how we would handle
912912+00:13:51.240 --> 00:13:57.080
913913+your computer, the streaming format, which is the format the video is in when it goes
914914915915229
916916-00:14:29.000 --> 00:14:31.000
917917-authenticity, that kind of thing.
916916+00:13:57.080 --> 00:14:03.840
917917+over media over quick, and streams to a user, and the self-certifying format that has this
918918919919230
920920-00:14:31.000 --> 00:14:34.000
921921-PLC directories got its own sort of take on everything.
920920+00:14:03.840 --> 00:14:08.280
921921+intact signature that you use to validate that the media is who it says it is and get
922922923923231
924924-00:14:34.000 --> 00:14:40.000
925925-So, yeah, some good ideas needs to be modernized and not try
924924+00:14:08.280 --> 00:14:15.880
925925+all the nice metadata, they don't all have to be the same format.
926926927927232
928928-00:14:40.000 --> 00:14:44.000
929929-and pay these vendors a bunch of money for certificates.
928928+00:14:15.880 --> 00:14:20.840
929929+As long as we can deterministically mux between them.
930930931931233
932932-00:14:44.000 --> 00:14:50.000
933933-So I said all of these things out loud a lot and the folks,
932932+00:14:20.840 --> 00:14:24.360
933933+As long as if you have one of these formats, there is a deterministic algorithm you can
934934935935234
936936-00:14:50.000 --> 00:14:53.000
937937-the good folks at the IPFS Foundation and the DASL project
936936+00:14:24.360 --> 00:14:28.120
937937+use to turn it into any one of these other formats.
938938939939235
940940-00:14:53.000 --> 00:14:54.000
941941-were very, very receptive to it.
940940+00:14:28.120 --> 00:14:31.320
941941+So we've accomplished this with Wasm, primarily.
942942943943236
944944-00:14:54.000 --> 00:14:56.000
945945-So they've given us a grant.
944944+00:14:31.320 --> 00:14:35.440
945945+Wasm, especially the latest version of Wasm, has a fully deterministic profile.
946946947947237
948948-00:14:56.000 --> 00:14:59.000
949949-Everything you see so far, everything you see past this
948948+00:14:35.440 --> 00:14:40.960
949949+Even short of that, you know, Rust compiled to Wasm and then you pipe some bytes through
950950951951238
952952-00:14:59.000 --> 00:15:03.000
953953-point in the presentation is a result of the grant that we got
952952+00:14:40.960 --> 00:14:44.960
953953+it, you're very, very likely to get the same bytes out through the output, right?
954954955955239
956956-00:15:03.000 --> 00:15:05.000
957957-from the IPFS Foundation.
956956+00:14:44.960 --> 00:14:51.280
957957+So this is, yeah, so let's get into the different formats that we're using inside of here.
958958959959240
960960-00:15:05.000 --> 00:15:11.000
961961-So we're working on two specs with them, Stupa and Muxal.
960960+00:14:51.280 --> 00:14:55.600
961961+I'm going to get deep into MP4 file specifics.
962962963963241
964964-00:15:11.000 --> 00:15:14.000
965965-Stupa is the simple standard for provenance and authenticity.
964964+00:14:55.600 --> 00:15:00.520
965965+I wouldn't wish this upon anyone having to dive this deep into the MP4 specs.
966966967967242
968968-00:15:14.000 --> 00:15:16.000
969969-This is the simpler of the two standards.
968968+00:15:00.520 --> 00:15:06.160
969969+I had to pay $300 for a PDF file.
970970971971243
972972-00:15:16.000 --> 00:15:17.000
973973-It's very much.
972972+00:15:06.160 --> 00:15:09.400
973973+So yes, this is the whole point of StreamPlaces.
974974975975244
976976-00:15:17.000 --> 00:15:18.000
977977-Thank you, Ted.
976976+00:15:09.400 --> 00:15:14.920
977977+These are the hard work we do, the hard problems we solve, so none of you have to, right?
978978979979245
980980-00:15:18.000 --> 00:15:19.000
981981-Look at that.
980980+00:15:15.840 --> 00:15:22.280
981981+So we, the base primitives here that are part of Muxle.
982982983983246
984984-00:15:19.000 --> 00:15:20.000
985985-Ted got me a glass of water.
984984+00:15:22.280 --> 00:15:25.880
985985+First we have video metadata.
986986987987247
988988-00:15:20.000 --> 00:15:21.000
989989-Everybody thank Ted.
988988+00:15:25.880 --> 00:15:31.820
989989+I borrow a lot of this terminology from a spec called Hang that's from Luke Curley who
990990991991248
992992-00:15:21.000 --> 00:15:22.000
993993-That was awesome.
992992+00:15:31.820 --> 00:15:35.840
993993+created the media over QuickSpec.
994994995995249
996996-00:15:22.000 --> 00:15:31.000
997997-Stupa is our, I don't know what makes a fork a hostile fork,
996996+00:15:35.840 --> 00:15:40.920
997997+This is, catalog is his term for this, but this is all of the metadata that you need
998998999999250
10001000-00:15:31.000 --> 00:15:35.000
10011001-but it's definitely a fork of the C2PA that takes out all the
10001000+00:15:40.920 --> 00:15:41.920
10011001+to understand the video.
1002100210031003251
10041004-00:15:35.000 --> 00:15:36.000
10051005-things.
10041004+00:15:41.920 --> 00:15:46.160
10051005+I can't just, video decoders won't just accept some random video bytes.
1006100610071007252
10081008-00:15:36.000 --> 00:15:38.000
10091009-It doesn't really, it actually doesn't take out anything.
10081008+00:15:46.160 --> 00:15:52.360
10091009+You have to say, no, these video bytes are, for example, 1920 by 1080 at 60 FPS.
1010101010111011253
10121012-00:15:38.000 --> 00:15:40.000
10131013-Like if you want to pay to just start at 200 bucks a month,
10121012+00:15:52.360 --> 00:15:57.320
10131013+You've got the time scale and then a canonical track ID for everything that goes into this,
1014101410151015254
10161016-00:15:40.000 --> 00:15:41.000
10171017-you totally can.
10161016+00:15:57.320 --> 00:15:58.320
10171017+right?
1018101810191019255
10201020-00:15:41.000 --> 00:15:43.000
10211021-But we have some different opinions about that.
10201020+00:15:58.320 --> 00:15:59.320
10211021+How many channels is the audio?
1022102210231023256
10241024-00:15:43.000 --> 00:15:44.000
10251025-We have dids, right?
10241024+00:15:59.320 --> 00:16:02.080
10251025+I don't know if it's listed in here, but this would have stuff like what language is the
1026102610271027257
10281028-00:15:44.000 --> 00:15:48.000
10291029-So instead of signing it with some cert that you're given by
10281028+00:16:02.080 --> 00:16:03.080
10291029+audio.
1030103010311031258
10321032-00:15:48.000 --> 00:15:53.000
10331033-a CA, you sign it with a signing key that has a provenance
10321032+00:16:03.080 --> 00:16:06.200
10331033+If we've got the audio translated into several different languages, that would be included
1034103410351035259
10361036-00:15:53.000 --> 00:15:56.000
10371037-chain back to your at-proto identity, right?
10361036+00:16:06.200 --> 00:16:07.520
10371037+in this metadata.
1038103810391039260
10401040-00:15:56.000 --> 00:16:00.000
10411041-And then we also make it consistent with DASL.
10401040+00:16:07.520 --> 00:16:14.320
10411041+This is nice to separate out because from a low latency transmission perspective, you
1042104210431043261
10441044-00:16:00.000 --> 00:16:05.000
10451045-The C2PA signatures, C2PA manifests rather already use Seabour.
10441044+00:16:14.320 --> 00:16:15.880
10451045+don't want to repeat this stuff, right?
1046104610471047262
10481048-00:16:05.000 --> 00:16:10.000
10491049-So we're just upgrading it to use Drizzle, Drizzle DASLs.
10481048+00:16:15.880 --> 00:16:19.640
10491049+You don't want to say, hey, 1080p video, 1080p video, you know it's 1080p video because the
1050105010511051263
10521052-00:16:10.000 --> 00:16:13.000
10531053-A very strict subset of Seabour used in at-proto, right?
10521052+00:16:19.640 --> 00:16:22.500
10531053+last 500 segments were 1080p video, right?
1054105410551055264
10561056-00:16:13.000 --> 00:16:14.000
10571057-That's Stupa.
10561056+00:16:22.500 --> 00:16:28.040
10571057+So we send, we can send this once at the start and not have to repeat it.
1058105810591059265
10601060-00:16:14.000 --> 00:16:15.000
10611061-That's all of Stupa.
10601060+00:16:28.040 --> 00:16:32.520
10611061+I'm not quite getting into the at-proto stuff here, but just at the bottom there, a little
1062106210631063266
10641064-00:16:15.000 --> 00:16:17.000
10651065-The rest of the presentation is about Muxill because it's way more
10641064+00:16:32.520 --> 00:16:36.520
10651065+teaser of what this might look like if you wanted to put it in that proto repository,
1066106610671067267
10681068-00:16:17.000 --> 00:16:18.000
10691069-complicated.
10681068+00:16:36.520 --> 00:16:40.120
10691069+this could be a place.stream.muxle.catalog record.
1070107010711071268
10721072-00:16:18.000 --> 00:16:20.000
10731073-This is just a little change that we're making here.
10721072+00:16:40.120 --> 00:16:43.680
10731073+We'll get to how it actually works in a minute.
1074107410751075269
10761076-00:16:20.000 --> 00:16:22.000
10771077-Would love if they upstreamed it.
10761076+00:16:43.680 --> 00:16:45.720
10771077+This lets us make init segments.
1078107810791079270
10801080-00:16:22.000 --> 00:16:29.000
10811081-Would love if there were dids and K256 signing in C2PA.
10801080+00:16:45.720 --> 00:16:47.240
10811081+Now we're talking about MP4 atoms.
1082108210831083271
10841084-00:16:29.000 --> 00:16:33.000
10851085-So let's talk about the design goals for Muxill.
10841084+00:16:47.240 --> 00:16:50.480
10851085+This is fun.
1086108610871087272
10881088-00:16:33.000 --> 00:16:37.000
10891089-This is basically what changes do we need to make to those MP4 files
10881088+00:16:50.480 --> 00:16:59.400
10891089+So this data represented as like JSON or CBOR or whatever and stored in your at-proto repository
1090109010911091273
10921092-00:16:37.000 --> 00:16:41.000
10931093-that I described before in order to make them appropriate for VOD.
10921092+00:16:59.400 --> 00:17:05.280
10931093+is enough to create, actually deterministically create the start of the MP4 file, which is
1094109410951095274
10961096-00:16:41.000 --> 00:16:44.000
10971097-So you don't have thousands and thousands of MP4 files on your
10961096+00:17:05.280 --> 00:17:06.280
10971097+called the init segment.
1098109810991099275
11001100-00:16:44.000 --> 00:16:46.000
11011101-computer after a long livestream.
11001100+00:17:06.280 --> 00:17:09.760
11011101+It's the very beginning of the MP4 file that contains the file type atom telling you this
1102110211031103276
11041104-00:16:46.000 --> 00:16:50.000
11051105-So we want to keep the property that they're self-certifying.
11041104+00:17:09.760 --> 00:17:16.600
11051105+is an MP4 file and the move atom that describes, for example, the duration of the video, what
1106110611071107277
11081108-00:16:50.000 --> 00:16:53.000
11091109-It's awesome that you can just find one of these files and then go
11081108+00:17:16.600 --> 00:17:17.600
11091109+all the tracks are.
1110111011111111278
11121112-00:16:53.000 --> 00:16:55.000
11131113-verify its provenance chain.
11121112+00:17:17.600 --> 00:17:22.040
11131113+There's a bunch of, this is like the MP4 encoding of all that metadata that I just described.
1114111411151115279
11161116-00:16:55.000 --> 00:16:59.000
11171117-You shouldn't require external data, right?
11161116+00:17:22.040 --> 00:17:26.840
11171117+This is the beginning of the muxle file init segment.
1118111811191119280
11201120-00:16:59.000 --> 00:17:02.000
11211121-As a design goal, we want to support livestream to VOD.
11201120+00:17:26.840 --> 00:17:33.640
11211121+We then split up the video into muxle segments.
1122112211231123281
11241124-00:17:02.000 --> 00:17:04.000
11251125-So that what video engineers call DVR.
11241124+00:17:33.640 --> 00:17:37.680
11251125+This again is borrowed, this is pretty much a verbatim hang CMAF, which is part of the
1126112611271127282
11281128-00:17:04.000 --> 00:17:07.000
11291129-Basically, if you're watching a livestream that you can seek back
11281128+00:17:37.680 --> 00:17:41.440
11291129+video over QuickSpec, which is awesome because that means it's going to stream very efficiently
1130113011311131283
11321132-00:17:07.000 --> 00:17:10.000
11331133-and see what happened one minute ago, two minutes ago, three minutes
11321132+00:17:41.440 --> 00:17:45.000
11331133+to users eventually.
1134113411351135284
11361136-00:17:10.000 --> 00:17:12.000
11371137-ago, that kind of thing.
11361136+00:17:45.000 --> 00:17:46.920
11371137+This is just repeated.
1138113811391139285
11401140-00:17:12.000 --> 00:17:14.000
11411141-It would be nice if it's a useful format.
11401140+00:17:46.920 --> 00:17:52.040
11411141+Every frame gets its own, what's called a muf and an MDAT, so little segments, little
1142114211431143286
11441144-00:17:14.000 --> 00:17:17.000
11451145-I don't want to give you some opaque Seabour blob or something.
11441144+00:17:52.040 --> 00:18:00.880
11451145+slivers of the MP4 file that represent each frame, each video or audio frame, essentially.
1146114611471147287
11481148-00:17:17.000 --> 00:17:20.000
11491149-A design goal of this is that at the end of it, you have at the end
11481148+00:18:00.880 --> 00:18:05.120
11491149+Easy enough, but we're going to do a lot with these in a minute.
1150115011511151288
11521152-00:17:20.000 --> 00:17:24.000
11531153-of a 24-hour livestream, you should have a 24-hour MP4 file on your
11521152+00:18:05.120 --> 00:18:12.120
11531153+And then we go back to that stupa specification I was talking about a second ago, the CTPA
1154115411551155289
11561156-00:17:24.000 --> 00:17:25.000
11571157-computer.
11561156+00:18:12.120 --> 00:18:13.120
11571157+stuff.
1158115811591159290
11601160-00:17:25.000 --> 00:17:28.000
11611161-Easiest to work with, maximally compatible, preserves all of the
11601160+00:18:13.120 --> 00:18:18.160
11611161+So this is, we can take, this is the canonical signed format.
1162116211631163291
11641164-00:17:28.000 --> 00:17:31.000
11651165-provenance information I was describing.
11641164+00:18:18.160 --> 00:18:22.640
11651165+This is the thing that you, when you get this format, you can validate the signature, validate
1166116611671167292
11681168-00:17:31.000 --> 00:17:34.000
11691169-And it should be streamable with minimal overhead.
11681168+00:18:22.640 --> 00:18:23.640
11691169+the provenance claim.
1170117011711171293
11721172-00:17:34.000 --> 00:17:37.000
11731173-I'm not going to get too deep into media over quick in this
11721172+00:18:23.640 --> 00:18:30.480
11731173+No, this is actually definitely Eli's CTPA signed video file.
1174117411751175294
11761176-00:17:37.000 --> 00:17:40.000
11771177-presentation, though I would love to.
11761176+00:18:30.480 --> 00:18:34.160
11771177+This is actually me beating Trabio or whatever.
1178117811791179295
11801180-00:17:40.000 --> 00:17:46.000
11811181-But basically, we don't want to do a bunch of extra effort to go
11801180+00:18:34.160 --> 00:18:38.480
11811181+And this is, this is great.
1182118211831183296
11841184-00:17:46.000 --> 00:17:51.000
11851185-from the canonical format that we're going to use for all of this
11841184+00:18:38.480 --> 00:18:43.960
11851185+This is not necessarily the best format for archival and playback.
1186118611871187297
11881188-00:17:51.000 --> 00:17:53.000
11891189-to actually streaming it to users, right?
11881188+00:18:43.960 --> 00:18:49.520
11891189+So one key insight and the Eureka moment I had when making this is like, okay, so this
1190119011911191298
11921192-00:17:53.000 --> 00:17:56.000
11931193-We shouldn't need to re-encode or anything like that.
11921192+00:18:49.520 --> 00:18:54.640
11931193+is like the canonical thing, but you wouldn't ever write this to your hard drive.
1194119411951195299
11961196-00:17:56.000 --> 00:18:01.000
11971197-Unfortunately, that is an impossible series of constraints.
11961196+00:18:54.640 --> 00:18:59.960
11971197+Or if you did because you're repeating the beginning of the file, the file type stuff,
1198119811991199300
12001200-00:18:01.000 --> 00:18:05.000
12011201-Fundamentally, the reason being that if the output is going to be
12001200+00:18:59.960 --> 00:19:03.560
12011201+this is how, this would get you right back to one second MP4 files on your computer
1202120212031203301
12041204-00:18:05.000 --> 00:18:08.000
12051205-just an MP4 file on your computer, that is completely different
12041204+00:19:03.560 --> 00:19:05.320
12051205+over and over and over.
1206120612071207302
12081208-00:18:08.000 --> 00:18:11.000
12091209-than the format the media over quick uses that's going to be
12081208+00:19:05.320 --> 00:19:10.360
12091209+So while this is like, you consider this like the base unit of stream play streaming or
1210121012111211303
12121212-00:18:11.000 --> 00:18:14.000
12131213-useful for sending things to users, in particular with things
12121212+00:19:10.360 --> 00:19:15.040
12131213+a VOD or what have you, this, yeah, you'd never actually write one of these to the hard
1214121412151215304
12161216-00:18:14.000 --> 00:18:15.000
12171217-like multiple tracks, right?
12161216+00:19:15.040 --> 00:19:17.720
12171217+drive unless you were like debugging or something like that.
1218121812191219305
12201220-00:18:15.000 --> 00:18:18.000
12211221-We really want to do multi-track video, multi-track audio,
12201220+00:19:17.720 --> 00:19:19.360
12211221+What would you write to the hard drive?
1222122212231223306
12241224-00:18:18.000 --> 00:18:25.000
12251225-720p, a bunch of other 1080p, different audio formats, AAC and
12241224+00:19:19.360 --> 00:19:20.360
12251225+You ask.
1226122612271227307
12281228-00:18:25.000 --> 00:18:26.000
12291229-Opus for different things.
12281228+00:19:20.360 --> 00:19:23.640
12291229+You would write a muxal archive.
1230123012311231308
12321232-00:18:26.000 --> 00:18:29.000
12331233-All of that complexity we would like to be able to package in
12321232+00:19:23.640 --> 00:19:24.640
12331233+Blake three.
1234123412351235309
12361236-00:18:29.000 --> 00:18:32.000
12371237-this one file, and that, like, skyrockets the bandwidth that you
12361236+00:19:24.640 --> 00:19:26.880
12371237+I know, hang out with that proto people.
1238123812391239310
12401240-00:18:32.000 --> 00:18:34.000
12411241-would use to send it out to people, right?
12401240+00:19:26.880 --> 00:19:28.840
12411241+I know a lot of protocol engineers.
1242124212431243311
12441244-00:18:34.000 --> 00:18:36.000
12451245-You don't want to send them every rendition.
12441244+00:19:28.840 --> 00:19:32.480
12451245+Every one of them has had a moment where they take me aside and they're like, you should
1246124612471247312
12481248-00:18:36.000 --> 00:18:38.000
12491249-You want to send them just one.
12481248+00:19:32.480 --> 00:19:35.520
12491249+really be using Blake three for this stuff.
1250125012511251313
12521252-00:18:38.000 --> 00:18:41.000
12531253-So how do we get around that?
12521252+00:19:35.520 --> 00:19:39.040
12531253+And I agree with them eventually.
1254125412551255314
12561256-00:18:41.000 --> 00:18:43.000
12571257-And the answer is we mux.
12561256+00:19:39.040 --> 00:19:41.440
12571257+So this is what you would write to your hard drive, right?
1258125812591259315
12601260-00:18:43.000 --> 00:18:47.000
12611261-This is why it's called muxal.
12601260+00:19:41.440 --> 00:19:44.040
12611261+So this is the in it segment.
1262126212631263316
12641264-00:18:47.000 --> 00:18:53.000
12651265-So the key insight here is that the archival format, so this is
12641264+00:19:44.040 --> 00:19:46.760
12651265+This is the part where you say it's 1080p video.
1266126612671267317
12681268-00:18:53.000 --> 00:18:57.000
12691269-to say the MP4 file on your computer, the streaming format,
12681268+00:19:46.760 --> 00:19:49.240
12691269+Then you have all of these.
1270127012711271318
12721272-00:18:57.000 --> 00:19:01.000
12731273-which is the format the video is in when it goes over media over
12721272+00:19:49.240 --> 00:19:51.100
12731273+Each of these is what's called a gop segment.
1274127412751275319
12761276-00:19:01.000 --> 00:19:07.000
12771277-quick, and streams to a user, and the self-certifying format that
12761276+00:19:51.100 --> 00:19:55.080
12771277+So a key frame, a video followed by a bunch of other frames and then a key frame and then
1278127812791279320
12801280-00:19:07.000 --> 00:19:10.000
12811281-has this intact signature that you use to validate that the
12801280+00:19:55.080 --> 00:19:57.160
12811281+a bunch of other frames.
1282128212831283321
12841284-00:19:10.000 --> 00:19:14.000
12851285-media is who it says it is and get all the nice metadata, they
12841284+00:19:57.160 --> 00:20:03.640
12851285+And the cool thing about this is we've totally messed up the signature now, right?
1286128612871287322
12881288-00:19:14.000 --> 00:19:18.000
12891289-don't all have to be the same format.
12881288+00:20:03.640 --> 00:20:09.680
12891289+Because we, the signature is over this file with a in it segment and a video gop and an
1290129012911291323
12921292-00:19:18.000 --> 00:19:24.000
12931293-As long as we can deterministically mux between them.
12921292+00:20:09.680 --> 00:20:11.560
12931293+audio gop and then a manifest, right?
1294129412951295324
12961296-00:19:24.000 --> 00:19:27.000
12971297-As long as if you have one of these formats, there is a
12961296+00:20:11.560 --> 00:20:14.000
12971297+This is, this is the thing that we signed.
1298129812991299325
13001300-00:19:27.000 --> 00:19:30.000
13011301-deterministic algorithm you can use to turn it into any one of
13001300+00:20:14.000 --> 00:20:15.360
13011301+This doesn't look like that at all.
1302130213031303326
13041304-00:19:30.000 --> 00:19:31.000
13051305-these other formats.
13041304+00:20:15.360 --> 00:20:18.120
13051305+I've even just kind of put the manifest at the, at the end there.
1306130613071307327
13081308-00:19:31.000 --> 00:19:35.000
13091309-So we've accomplished this with Wasm, primarily.
13081308+00:20:18.120 --> 00:20:22.120
13091309+But because we have deterministic muxing tools, we can recover this.
1310131013111311328
13121312-00:19:35.000 --> 00:19:37.000
13131313-Wasm, especially the latest version of Wasm, has a fully
13121312+00:20:22.120 --> 00:20:27.640
13131313+We can, or we can recover the signed canonical thing, right?
1314131413151315329
13161316-00:19:37.000 --> 00:19:38.000
13171317-deterministic profile.
13161316+00:20:27.640 --> 00:20:34.920
13171317+This format, however, is really, really useful for VOD because if you are, I'll show you
1318131813191319330
13201320-00:19:38.000 --> 00:19:43.000
13211321-Even short of that, you know, Rust compiled to Wasm, and then
13201320+00:20:34.920 --> 00:20:36.800
13211321+why.
1322132213231323331
13241324-00:19:43.000 --> 00:19:46.000
13251325-you pipe some bytes through it, you're very, very likely to get
13241324+00:20:36.800 --> 00:20:39.740
13251325+See it's like this.
1326132613271327332
13281328-00:19:46.000 --> 00:19:48.000
13291329-the same bytes out through the output, right?
13281328+00:20:39.740 --> 00:20:42.880
13291329+So this is a HLS playlist.
1330133013311331333
13321332-00:19:48.000 --> 00:19:52.000
13331333-So this is, yeah, so let's get into the different formats that
13321332+00:20:42.880 --> 00:20:48.280
13331333+This is how you, you don't know it, but most of the time you've played video on the internet.
1334133413351335334
13361336-00:19:52.000 --> 00:19:54.000
13371337-we're using inside of here.
13361336+00:20:48.280 --> 00:20:51.440
13371337+You've had one of these happening in the background.
1338133813391339335
13401340-00:19:54.000 --> 00:19:58.000
13411341-I'm going to get deep into MP4 file specifics.
13401340+00:20:51.440 --> 00:20:55.160
13411341+And what this does is takes all of those, this is just the video playlist.
1342134213431343336
13441344-00:19:58.000 --> 00:20:01.000
13451345-I don't, I wouldn't wish this upon anyone having to dive this
13441344+00:20:55.160 --> 00:20:56.640
13451345+This just tells you how to do the video.
1346134613471347337
13481348-00:20:01.000 --> 00:20:03.000
13491349-deep into the MP4 specs.
13481348+00:20:56.640 --> 00:21:01.560
13491349+The audio is referenced in a, in a different, in a different manifest.
1350135013511351338
13521352-00:20:03.000 --> 00:20:07.000
13531353-I had to pay $300 for a PDF file.
13521352+00:21:01.560 --> 00:21:08.640
13531353+And basically what this gives you is a byte range in an index into that file.
1354135413551355339
13561356-00:20:07.000 --> 00:20:13.000
13571357-So, yes, this is the whole point of Stream Places.
13561356+00:21:08.640 --> 00:21:11.120
13571357+So you can say this, this year says, this is one second of video.
1358135813591359340
13601360-00:20:13.000 --> 00:20:16.000
13611361-These are the hard work we do, the hard problems we solve, so
13601360+00:21:11.120 --> 00:21:12.760
13611361+You can find it at this index of this file.
1362136213631363341
13641364-00:20:16.000 --> 00:20:19.000
13651365-none of you have to, right?
13641364+00:21:12.760 --> 00:21:13.760
13651365+This is one second of video.
1366136613671367342
13681368-00:20:19.000 --> 00:20:25.000
13691369-So we, the base primitives here that are part of Muxle.
13681368+00:21:13.760 --> 00:21:16.480
13691369+You can find it at this index of this file.
1370137013711371343
13721372-00:20:25.000 --> 00:20:29.000
13731373-First, we have video metadata.
13721372+00:21:16.480 --> 00:21:19.200
13731373+And this is all, this is all you need for efficient VOD playback.
1374137413751375344
13761376-00:20:29.000 --> 00:20:33.000
13771377-I borrow a lot of this terminology from a spec called Hang
13761376+00:21:19.200 --> 00:21:22.640
13771377+If you're doing it live, there's disadvantages to doing it this way.
1378137813791379345
13801380-00:20:33.000 --> 00:20:39.000
13811381-that's from Luke Curley who created the media over quick spec.
13801380+00:21:22.640 --> 00:21:25.120
13811381+You probably want to use media over quick and some of the other formats that we talked
1382138213831383346
13841384-00:20:39.000 --> 00:20:43.000
13851385-So this is, catalog is his term for this, but this is all of the
13841384+00:21:25.120 --> 00:21:26.120
13851385+about.
1386138613871387347
13881388-00:20:43.000 --> 00:20:45.000
13891389-metadata that you need to understand the video.
13881388+00:21:26.120 --> 00:21:28.520
13891389+But for VOD, this is really, really good.
1390139013911391348
13921392-00:20:45.000 --> 00:20:48.000
13931393-I can't just, video decoders won't just accept some random video
13921392+00:21:28.520 --> 00:21:33.160
13931393+And we've achieved one of our design goals because all of these, it's just referencing
1394139413951395349
13961396-00:20:48.000 --> 00:20:49.000
13971397-bytes.
13961396+00:21:33.160 --> 00:21:37.080
13971397+different byte ranges in archive.muxle.mp4, right?
1398139813991399350
14001400-00:20:49.000 --> 00:20:53.000
14011401-You have to say, no, these video bytes are, for example, 1920 by
14001400+00:21:37.080 --> 00:21:41.720
14011401+So we've, the thing that is, I've been saying on your computer, but the thing for video,
1402140214031403351
14041404-00:20:53.000 --> 00:20:55.000
14051405-1080 at 60 FPS.
14041404+00:21:41.720 --> 00:21:48.120
14051405+the thing that's in your app repository is, is just one big MP4 file.
1406140614071407352
14081408-00:20:55.000 --> 00:20:59.000
14091409-You've got the time scale and then a canonical track ID for
14081408+00:21:48.120 --> 00:21:52.560
14091409+It's really easy to understand.
1410141014111411353
14121412-00:20:59.000 --> 00:21:01.000
14131413-everything that goes into this, right?
14121412+00:21:52.560 --> 00:22:00.920
14131413+The other, the other thing we get from this is, is the Blake three, Sid, the magic of
1414141414151415354
14161416-00:21:01.000 --> 00:21:03.000
14171417-How many channels is the audio?
14161416+00:22:00.920 --> 00:22:01.920
14171417+Blake three.
1418141814191419355
14201420-00:21:03.000 --> 00:21:05.000
14211421-I don't know if it's listed in here, but this would have stuff like
14201420+00:22:01.920 --> 00:22:04.920
14211421+Why, why was it that all those video engineers were telling me that I needed to use Blake
1422142214231423356
14241424-00:21:05.000 --> 00:21:06.000
14251425-what language is the audio.
14241424+00:22:04.920 --> 00:22:05.920
14251425+three?
1426142614271427357
14281428-00:21:06.000 --> 00:21:08.000
14291429-If we've got the audio translated into several different languages,
14281428+00:22:05.920 --> 00:22:14.240
14291429+It's because this Blake three hash is a Merkle tree over this file that you see here, which
1430143014311431358
14321432-00:21:08.000 --> 00:21:11.000
14331433-that would be included in this metadata.
14321432+00:22:14.240 --> 00:22:19.960
14331433+means you can request to just that part that says track one, gop one there.
1434143414351435359
14361436-00:21:11.000 --> 00:21:15.000
14371437-This is nice to separate out because from a low latency
14361436+00:22:19.960 --> 00:22:25.960
14371437+And through cryptographic verification, you can be 100% confident that that is the correct
1438143814391439360
14401440-00:21:15.000 --> 00:21:19.000
14411441-transmission perspective, you don't want to repeat this stuff,
14401440+00:22:25.960 --> 00:22:27.960
14411441+data that you've pulled out of there, right?
1442144214431443361
14441444-00:21:19.000 --> 00:21:20.000
14451445-right?
14441444+00:22:27.960 --> 00:22:32.080
14451445+You can verify, yes, this is in fact part of this Blake three, Sid, which is really,
1446144614471447362
14481448-00:21:20.000 --> 00:21:22.000
14491449-You don't want to say, hey, 1080p video, 1080p video, you know it's
14481448+00:22:32.080 --> 00:22:37.440
14491449+really useful when you're doing something like a CDN because then you can make all these,
1450145014511451363
14521452-00:21:22.000 --> 00:21:26.000
14531453-1080p video because the last 500 segments were 1080p video, right?
14521452+00:22:37.440 --> 00:22:40.560
14531453+you can have be backing it with just one big file.
1454145414551455364
14561456-00:21:26.000 --> 00:21:30.000
14571457-So we can send this once at the start and not have to repeat it.
14561456+00:22:40.560 --> 00:22:42.400
14571457+You can make these byte range requests.
1458145814591459365
14601460-00:21:30.000 --> 00:21:33.000
14611461-I'm not quite getting into the app proto stuff here, but just at
14601460+00:22:42.400 --> 00:22:47.120
14611461+You still get the cryptographic integrity that like, oh yes, that, that, that hash matches
1462146214631463366
14641464-00:21:33.000 --> 00:21:36.000
14651465-the bottom there, a little teaser of what this might look like if
14641464+00:22:47.120 --> 00:22:50.600
14651465+what I saw in Eli's app repository.
1466146614671467367
14681468-00:21:36.000 --> 00:21:39.000
14691469-you wanted to put it in that repository.
14681468+00:22:50.600 --> 00:22:53.120
14691469+So this is a really, really good format for this.
1470147014711471368
14721472-00:21:39.000 --> 00:21:42.000
14731473-This could be a place.stream.muxle.catalog record.
14721472+00:22:53.120 --> 00:22:54.960
14731473+Um, cool.
1474147414751475369
14761476-00:21:42.000 --> 00:21:45.000
14771477-We'll get to how it actually works in a minute.
14761476+00:22:54.960 --> 00:23:02.680
14771477+So yes, three different formats that we, uh, uh, that we have here.
1478147814791479370
14801480-00:21:45.000 --> 00:21:48.000
14811481-This lets us make in-it segments.
14801480+00:23:02.680 --> 00:23:07.320
14811481+So, um, the archival format, which is the big MP4 file that goes in your app, proto
1482148214831483371
14841484-00:21:48.000 --> 00:21:50.000
14851485-Now we're talking about MP4 atoms.
14841484+00:23:07.320 --> 00:23:12.880
14851485+repository, the self certifying format, which is the part that has the, uh, C2P a signature
1486148614871487372
14881488-00:21:50.000 --> 00:21:51.000
14891489-This is fun.
14881488+00:23:12.880 --> 00:23:16.760
14891489+attached and the streaming format, which is just when you're actually sending it out,
1490149014911491373
14921492-00:21:51.000 --> 00:21:57.000
14931493-So this data represented as like JSON.
14921492+00:23:16.760 --> 00:23:19.360
14931493+you just send, uh, you just send this part, right?
1494149414951495374
14961496-00:21:58.000 --> 00:22:02.000
14971497-This data represented as like JSON or CBOR or whatever and stored in
14961496+00:23:19.360 --> 00:23:25.280
14971497+You stream this stuff, uh, each, each frame of video and audio directly to users.
1498149814991499375
15001500-00:22:02.000 --> 00:22:06.000
15011501-your at proto repository is enough to create, actually deterministically
15001500+00:23:25.280 --> 00:23:29.840
15011501+So for all the at proto people that didn't care about all the different structures of
1502150215031503376
15041504-00:22:06.000 --> 00:22:10.000
15051505-create the start of the MP4 file, which is called the in-it segment.
15041504+00:23:29.840 --> 00:23:33.600
15051505+the MP4 file, how do you use all of this?
1506150615071507377
15081508-00:22:10.000 --> 00:22:13.000
15091509-The very beginning of the MP4 file that contains the file type atom
15081508+00:23:33.600 --> 00:23:36.280
15091509+We're not quite ready for it, but the very first vods available on stream play.
1510151015111511378
15121512-00:22:13.000 --> 00:22:16.000
15131513-telling you this is an MP4 file.
15121512+00:23:36.280 --> 00:23:40.160
15131513+Most are going to follow this format and it's going to be all of the talks from this
1514151415151515379
15161516-00:22:16.000 --> 00:22:20.000
15171517-And the move atom that describes, for example, the duration of the
15161516+00:23:40.160 --> 00:23:41.160
15171517+conference.
1518151815191519380
15201520-00:22:20.000 --> 00:22:22.000
15211521-video, what all the tracks are.
15201520+00:23:41.160 --> 00:23:44.080
15211521+Uh, they will be published to at proto repository.
1522152215231523381
15241524-00:22:22.000 --> 00:22:25.000
15251525-There's a bunch of, this is like the MP4 encoding of all that metadata
15241524+00:23:44.080 --> 00:23:45.840
15251525+Um, and you'll be able to work with them.
1526152615271527382
15281528-00:22:25.000 --> 00:22:26.000
15291529-that I just described.
15281528+00:23:45.840 --> 00:23:48.560
15291529+This is a little preview of what this looks like.
1530153015311531383
15321532-00:22:26.000 --> 00:22:30.000
15331533-This is the beginning of the muxle file in its segment.
15321532+00:23:48.560 --> 00:23:54.760
15331533+Uh, so we have a, uh, yeah.
1534153415351535384
15361536-00:22:30.000 --> 00:22:37.000
15371537-We then split up the video into muxle segments.
15361536+00:23:54.760 --> 00:23:59.600
15371537+So the man that as you might expect the, the lexicon type for this is a place.stream.video.
1538153815391539385
15401540-00:22:37.000 --> 00:22:39.000
15411541-This again is borrowed.
15401540+00:23:59.600 --> 00:24:04.460
15411541+It's got, uh, things like creator, um, some of the, some of this metadata in here.
1542154215431543386
15441544-00:22:39.000 --> 00:22:42.000
15451545-This is pretty much a verbatim hang CMAF, which is part of the
15441544+00:24:04.460 --> 00:24:06.740
15451545+This is like, I'm pretending this is the one for this talk.
1546154615471547387
15481548-00:22:42.000 --> 00:22:45.000
15491549-video over quick spec, which is awesome because that means it's
15481548+00:24:06.740 --> 00:24:09.380
15491549+I don't have a vod for this talk cause I'm still doing this talk.
1550155015511551388
15521552-00:22:45.000 --> 00:22:48.000
15531553-going to stream very efficiently to users eventually.
15521552+00:24:09.380 --> 00:24:11.220
15531553+So you don't know what the hash is yet.
1554155415551555389
15561556-00:22:48.000 --> 00:22:51.000
15571557-And so this is just repeated.
15561556+00:24:11.220 --> 00:24:14.820
15571557+Um, it's got, it's just as I said, it's just a blob.
1558155815591559390
15601560-00:22:51.000 --> 00:22:54.000
15611561-Every frame gets its own, what's called a move and an MDAT.
15601560+00:24:14.820 --> 00:24:16.140
15611561+It's a video MP4 file.
1562156215631563391
15641564-00:22:54.000 --> 00:22:58.000
15651565-So little segments, little slivers of the MP4 file that represent
15641564+00:24:16.140 --> 00:24:19.500
15651565+Um, but it is very, very easily cacheable.
1566156615671567392
15681568-00:22:58.000 --> 00:23:04.000
15691569-each frame, each video or audio frame, essentially.
15681568+00:24:19.500 --> 00:24:22.700
15691569+Um, you've got a nanosecond duration in there.
1570157015711571393
15721572-00:23:04.000 --> 00:23:08.000
15731573-Easy enough, but we're going to do a lot with these in a minute.
15721572+00:24:22.700 --> 00:24:27.280
15731573+Uh, we, the design constraints for this I've been targeting that the maximum length of
1574157415751575394
15761576-00:23:08.000 --> 00:23:14.000
15771577-And then we go back to that stupid specification I was talking about
15761576+00:24:27.280 --> 00:24:29.860
15771577+one of these is going to be 24 hours.
1578157815791579395
15801580-00:23:14.000 --> 00:23:16.000
15811581-a second ago, the CTPA stuff.
15801580+00:24:29.860 --> 00:24:33.660
15811581+Um, because, uh, at a certain point it gets ridiculous.
1582158215831583396
15841584-00:23:16.000 --> 00:23:22.000
15851585-So this is, we can take, this is the canonical signed format.
15841584+00:24:33.860 --> 00:24:36.860
15851585+Yeah.
1586158615871587397
15881588-00:23:22.000 --> 00:23:25.000
15891589-This is the thing that you, when you get this format, you can validate
15881588+00:24:36.860 --> 00:24:38.540
15891589+Uh, and I don't want to like overflow the nanosecond duration, but if you've got a 24
1590159015911591398
15921592-00:23:25.000 --> 00:23:28.000
15931593-the signature, validate the provenance claim.
15921592+00:24:38.540 --> 00:24:42.220
15931593+seven live stream, that seems like a reasonable primitive that like each day of streaming
1594159415951595399
15961596-00:23:28.000 --> 00:23:34.000
15971597-No, this is actually definitely Eli's CTPA signed video file.
15961596+00:24:42.220 --> 00:24:46.300
15971597+that you would stream into would become its own vod, uh, with a 24 hour duration.
1598159815991599400
16001600-00:23:34.000 --> 00:23:37.000
16011601-This is actually me beating Trabia or whatever.
16001600+00:24:46.300 --> 00:24:47.300
16011601+Right.
1602160216031603401
16041604-00:23:37.000 --> 00:23:42.000
16051605-And this is, this is great.
16041604+00:24:47.300 --> 00:24:49.180
16051605+Um, and then it's got a live stream reference.
1606160616071607402
16081608-00:23:42.000 --> 00:23:47.000
16091609-This is not necessarily the best format for archival and playback.
16081608+00:24:49.180 --> 00:24:51.700
16091609+So, uh, yeah.
1610161016111611403
16121612-00:23:47.000 --> 00:23:48.000
16131613-Right?
16121612+00:24:51.700 --> 00:24:53.300
16131613+So, uh, all of this will be available.
1614161416151615404
16161616-00:23:48.000 --> 00:23:51.000
16171617-So one key insight and like the Eureka moment I had when making the
16161616+00:24:53.300 --> 00:24:54.300
16171617+Yeah.
1618161816191619405
16201620-00:23:51.000 --> 00:23:54.000
16211621-Eureka moment I had when making this is like, okay, so this is like the
16201620+00:24:54.300 --> 00:24:56.140
16211621+I was hoping to have all of this available and I was like, Oh, I got an ounce in this
1622162216231623406
16241624-00:23:54.000 --> 00:23:58.000
16251625-canonical thing, but you wouldn't ever write this to your hard drive.
16241624+00:24:56.140 --> 00:24:57.140
16251625+talk and it's going to be big.
1626162616271627407
16281628-00:23:58.000 --> 00:24:02.000
16291629-Or if you did because you're repeating the beginning of the file, the file
16281628+00:24:57.140 --> 00:24:58.340
16291629+And we're like really, really close.
1630163016311631408
16321632-00:24:02.000 --> 00:24:06.000
16331633-type stuff, this is how, this would get you right back to one second MP4 files
16321632+00:24:58.340 --> 00:25:01.820
16331633+But I wasn't, I didn't want to push a bunch of changes to stream place right before we
1634163416351635409
16361636-00:24:06.000 --> 00:24:08.000
16371637-on your computer over and over and over.
16361636+00:25:01.820 --> 00:25:04.020
16371637+did all the live streaming and screw everything else up.
1638163816391639410
16401640-00:24:08.000 --> 00:24:09.000
16411641-Right?
16401640+00:25:04.020 --> 00:25:05.020
16411641+Right.
1642164216431643411
16441644-00:24:09.000 --> 00:24:12.000
16451645-So while this is like, you consider this like the base unit of streamplay
16441644+00:25:05.020 --> 00:25:08.700
16451645+So I, I, I did try to do that.
1646164616471647412
16481648-00:24:12.000 --> 00:24:17.000
16491649-streaming or of, or a VOD or what have you, this, yeah, you'd never actually
16481648+00:25:08.700 --> 00:25:10.860
16491649+Uh, we did that.
1650165016511651413
16521652-00:24:17.000 --> 00:24:20.000
16531653-write one of these to the hard drive unless you were like debugging or
16521652+00:25:10.860 --> 00:25:13.740
16531653+Uh, I did at about seven 10 this morning.
1654165416551655414
16561656-00:24:20.000 --> 00:24:21.000
16571657-something like that.
16561656+00:25:13.740 --> 00:25:15.900
16571657+I'm like, all right, let's push the muxal changes.
1658165816591659415
16601660-00:24:21.000 --> 00:24:22.000
16611661-Right?
16601660+00:25:15.900 --> 00:25:16.900
16611661+Let's see.
1662166216631663416
16641664-00:24:22.000 --> 00:24:23.000
16651665-What would you write to the hard drive?
16641664+00:25:16.900 --> 00:25:20.660
16651665+And then immediately that laptop couldn't stream into stream place anymore for whatever
1666166616671667417
16681668-00:24:23.000 --> 00:24:24.000
16691669-You ask.
16681668+00:25:20.660 --> 00:25:21.660
16691669+reason.
1670167016711671418
16721672-00:24:24.000 --> 00:24:26.000
16731673-You would write a muxal archive.
16721672+00:25:21.660 --> 00:25:23.220
16731673+So I was like, Nope, Nope, back revert.
1674167416751675419
16761676-00:24:26.000 --> 00:24:28.000
16771677-Blake three.
16761676+00:25:23.220 --> 00:25:24.780
16771677+We're gonna, we'll do it.
1678167816791679420
16801680-00:24:28.000 --> 00:24:30.000
16811681-I know, hang out with that proto people.
16801680+00:25:24.780 --> 00:25:25.780
16811681+We'll do it after.
1682168216831683421
16841684-00:24:30.000 --> 00:24:32.000
16851685-I know a lot of protocol engineers.
16841684+00:25:25.780 --> 00:25:29.740
16851685+Um, so that's all by way of saying this is all very, very close.
1686168616871687422
16881688-00:24:32.000 --> 00:24:35.000
16891689-Every one of them has had a moment where they take me aside and they're like,
16881688+00:25:30.100 --> 00:25:33.700
16891689+Um, and we're hoping to give it to the community very, very soon.
1690169016911691423
16921692-00:24:35.000 --> 00:24:39.000
16931693-Eli, you should really be using Blake three for this stuff.
16921692+00:25:34.260 --> 00:25:37.180
16931693+Um, and, uh, yeah, and then build it with everybody, right?
1694169416951695424
16961696-00:24:39.000 --> 00:24:42.000
16971697-And I agree with them eventually.
16961696+00:25:37.180 --> 00:25:38.300
16971697+So we don't have a front end for it.
1698169816991699425
17001700-00:24:42.000 --> 00:24:45.000
17011701-So this is what you would write to your hard drive.
17001700+00:25:38.340 --> 00:25:41.780
17011701+Um, I'm going to challenge the, we're going to do a little VOD jam and say, Hey, at
1702170217031703426
17041704-00:24:45.000 --> 00:24:46.000
17051705-Right?
17041704+00:25:41.780 --> 00:25:44.380
17051705+proto community, here's the videos, build me a front end for it.
1706170617071707427
17081708-00:24:46.000 --> 00:24:47.000
17091709-So this is the in it segment.
17081708+00:25:44.580 --> 00:25:49.100
17091709+Given that without me asking, we got three front ends for stream place in the last
1710171017111711428
17121712-00:24:47.000 --> 00:24:50.000
17131713-This is the part where you say it's 10 ADP video.
17121712+00:25:49.100 --> 00:25:52.740
17131713+three days, I feel like in the vibe coding era, we're gonna, we're gonna get some
1714171417151715429
17161716-00:24:50.000 --> 00:24:52.000
17171717-Then you have all of these.
17161716+00:25:52.740 --> 00:25:53.380
17171717+submissions.
1718171817191719430
17201720-00:24:52.000 --> 00:24:55.000
17211721-Each of these is what's called a gop segment.
17201720+00:25:53.380 --> 00:25:57.420
17211721+If you submit one of these, uh, you're going to earn a badge next to your chat
1722172217231723431
17241724-00:24:55.000 --> 00:24:59.000
17251725-So a key frame, a video followed by a bunch of other frames and then a key
17241724+00:25:57.420 --> 00:25:58.860
17251725+name in stream place.
1726172617271727432
17281728-00:24:59.000 --> 00:25:01.000
17291729-frame and then a bunch of other frames.
17281728+00:25:59.340 --> 00:26:02.220
17291729+Um, from now until the end of time.
1730173017311731433
17321732-00:25:01.000 --> 00:25:07.000
17331733-And the cool thing about this is we've totally messed up the signature now.
17321732+00:26:03.100 --> 00:26:06.100
17331733+So, uh, yeah, that's it.
1734173417351735434
17361736-00:25:07.000 --> 00:25:08.000
17371737-Right?
17361736+00:26:06.140 --> 00:26:07.620
17371737+That's how stream place works VOD.
1738173817391739435
17401740-00:25:08.000 --> 00:25:13.000
17411741-Because we, the signature is over this file with in it segment and a video
17401740+00:26:19.220 --> 00:26:19.500
17411741+Great.
1742174217431743436
17441744-00:25:13.000 --> 00:25:15.000
17451745-gop and an audio gop and then a manifest.
17441744+00:26:21.460 --> 00:26:21.900
17451745+Awesome.
1746174617471747437
17481748-00:25:15.000 --> 00:25:16.000
17491749-Right?
17481748+00:26:27.020 --> 00:26:27.300
17491749+Yeah.
1750175017511751438
17521752-00:25:16.000 --> 00:25:18.000
17531753-So this is the thing that we signed.
17521752+00:26:29.380 --> 00:26:30.340
17531753+Yeah.
1754175417551755439
17561756-00:25:18.000 --> 00:25:20.000
17571757-This doesn't look like that at all.
17561756+00:26:30.340 --> 00:26:34.780
17571757+So the, the big alternative, um, why MP4, uh, there's a couple of reasons.
1758175817591759440
17601760-00:25:20.000 --> 00:25:22.000
17611761-I've even just kind of put the manifest at the, at the end there.
17601760+00:26:35.020 --> 00:26:39.940
17611761+Um, one because, uh, it's the most ubiquitous media format and the, that's
1762176217631763441
17641764-00:25:22.000 --> 00:25:26.000
17651765-But because we have deterministic muxing tools, we can recover this.
17641764+00:26:39.940 --> 00:26:41.420
17651765+the most highly compatible across everything.
1766176617671767442
17681768-00:25:26.000 --> 00:25:29.000
17691769-We can, or we can recover the signed canonical thing.
17681768+00:26:41.940 --> 00:26:47.860
17691769+Um, the second is, um, it gives us the, uh, the, the, the media over quick
1770177017711771443
17721772-00:25:29.000 --> 00:25:30.000
17731773-Right?
17721772+00:26:47.860 --> 00:26:50.140
17731773+stuff, um, tends to support it a lot already.
1774177417751775444
17761776-00:25:30.000 --> 00:25:35.000
17771777-This format, however, is really, really useful for VOD.
17761776+00:26:50.660 --> 00:26:54.700
17771777+Um, the, also the FM, uh, so this is like CMAF.
1778177817791779445
17801780-00:25:35.000 --> 00:25:40.000
17811781-Because if you are, I'll show you why.
17801780+00:26:54.700 --> 00:26:58.140
17811781+Back to the, this thing, this is like CMAF MP4 playback.
1782178217831783446
17841784-00:25:40.000 --> 00:25:41.000
17851785-See?
17841784+00:26:58.180 --> 00:27:02.500
17851785+Um, and the advantage here is it lets you, um, separate out the, it gives you that
1786178617871787447
17881788-00:25:41.000 --> 00:25:43.000
17891789-It's like this.
17881788+00:27:02.500 --> 00:27:05.780
17891789+lack of redundancy that I was describing where the in it segment isn't, there are
1790179017911791448
17921792-00:25:43.000 --> 00:25:46.000
17931793-So this is a, a HLS playlist.
17921792+00:27:05.780 --> 00:27:08.980
17931793+other formats that embed all of that in a data in every segment, but we don't
1794179417951795449
17961796-00:25:46.000 --> 00:25:51.000
17971797-This is how you, you don't know it, but most of the time you've played video
17961796+00:27:08.980 --> 00:27:11.820
17971797+actually want that because it's redundant for, for a long video.
1798179817991799450
18001800-00:25:51.000 --> 00:25:52.000
18011801-on the internet.
18001800+00:27:11.820 --> 00:27:13.900
18011801+So, um, yeah, those reasons.
1802180218031803451
18041804-00:25:52.000 --> 00:25:54.000
18051805-You've had one of these happening in the background.
18041804+00:27:14.900 --> 00:27:16.420
18051805+Sure.
1806180618071807452
18081808-00:25:54.000 --> 00:25:58.000
18091809-And what this does is takes all of those.
18081808+00:27:16.420 --> 00:27:21.380
18091809+Uh, the question was, uh, the, the question was, uh, the, the, the, the, the,
1810181018111811453
18121812-00:25:58.000 --> 00:25:59.000
18131813-This is just the video playlist.
18121812+00:27:22.060 --> 00:27:23.100
18131813+sure, sure, sure.
1814181418151815454
18161816-00:25:59.000 --> 00:26:00.000
18171817-This just tells you how to do the video.
18161816+00:27:23.140 --> 00:27:28.220
18171817+Uh, the question was why VP nine instead of, or why H two six four instead
1818181818191819455
18201820-00:26:00.000 --> 00:26:04.000
18211821-The audio is referenced in a, in a different, in a different manifest.
18201820+00:27:28.220 --> 00:27:31.740
18211821+of like VP nine or AV one, no reason other than maximally, maximum
1822182218231823456
18241824-00:26:04.000 --> 00:26:11.000
18251825-And basically what this gives you is a, a, a byte range in an index into that
18241824+00:27:31.740 --> 00:27:36.080
18251825+compatibility right now, we really, really want, uh, AV one in, in stream
1826182618271827457
18281828-00:26:11.000 --> 00:26:12.000
18291829-file.
18281828+00:27:36.080 --> 00:27:40.900
18291829+place, um, we fully intend to support AV one as much as we do H two six four,
1830183018311831458
18321832-00:26:12.000 --> 00:26:15.000
18331833-So you can say this, this year says this is one second of video.
18321832+00:27:40.900 --> 00:27:44.540
18331833+especially when we do stuff like, like, uh, uh, I want to replace to do a lot
1834183418351835459
18361836-00:26:15.000 --> 00:26:16.000
18371837-You can find it at this index of this file.
18361836+00:27:44.540 --> 00:27:48.020
18371837+of things that no other streaming platforms do, like for example, uh, like
1838183818391839460
18401840-00:26:16.000 --> 00:26:17.000
18411841-This is one second of video.
18401840+00:27:48.020 --> 00:27:54.100
18411841+four K 120 FPS AV one video would be SISIC, uh, uh, can't even do it.
1842184218431843461
18441844-00:26:17.000 --> 00:26:19.000
18451845-You can find it at this index of this file.
18441844+00:27:54.100 --> 00:27:55.380
18451845+I've tried to do it with H two six four.
1846184618471847462
18481848-00:26:19.000 --> 00:26:22.000
18491849-And this is all, this is all you need for efficient VOD playback.
18481848+00:27:55.380 --> 00:27:59.380
18491849+It just like doesn't know encoder can even come close to handling that.
1850185018511851463
18521852-00:26:22.000 --> 00:26:26.000
18531853-If you're doing it live, there's disadvantages to doing it this way.
18521852+00:27:59.380 --> 00:28:00.820
18531853+So, um, yeah, yeah.
1854185418551855464
18561856-00:26:26.000 --> 00:26:28.000
18571857-You probably want to use media over quick and some of the other formats that we
18561856+00:28:00.860 --> 00:28:02.980
18571857+Uh, in terms of codec support, we want to support like every
1858185818591859465
18601860-00:26:28.000 --> 00:26:29.000
18611861-talked about.
18601860+00:28:02.980 --> 00:28:04.060
18611861+codec that it makes sense to.
1862186218631863466
18641864-00:26:29.000 --> 00:26:31.000
18651865-But for VOD, this is really, really good.
18641864+00:28:04.420 --> 00:28:07.040
18651865+We just started with this because we're not quite in a world where I could
1866186618671867467
18681868-00:26:31.000 --> 00:26:36.000
18691869-And we've achieved one of our design goals because all of these, it's just
18681868+00:28:07.040 --> 00:28:08.980
18691869+probably get away with AV one only.
1870187018711871468
18721872-00:26:36.000 --> 00:26:40.000
18731873-referencing different byte ranges in archive.muxal.mp4.
18721872+00:28:09.020 --> 00:28:13.260
18731873+And we would have needed an H two six four backup anyway, in that context.
1874187418751875469
18761876-00:26:40.000 --> 00:26:41.000
18771877-Right.
18761876+00:28:13.260 --> 00:28:15.800
18771877+That's why we started with H two six four, but yeah, definitely
1878187818791879470
18801880-00:26:41.000 --> 00:26:44.000
18811881-So we've, the thing that is, I've been saying on your computer, but the thing
18801880+00:28:15.800 --> 00:28:16.700
18811881+want to support lots of codex.
1882188218831883471
18841884-00:26:44.000 --> 00:26:50.000
18851885-for video, the thing that's in your at proto repository is, is just one big
18841884+00:28:18.020 --> 00:28:18.520
18851885+Yeah.
1886188618871887472
18881888-00:26:50.000 --> 00:26:51.000
18891889-MP4 file.
18901890-18911891-473
18921892-00:26:51.000 --> 00:26:56.000
18931893-That's really easy to understand.
18941894-18951895-474
18961896-00:26:56.000 --> 00:27:04.000
18971897-The other, the other thing we get from this is, is the Blake three Sid, the
18981898-18991899-475
19001900-00:27:04.000 --> 00:27:05.000
19011901-magic of Blake three.
19021902-19031903-476
19041904-00:27:05.000 --> 00:27:08.000
19051905-Why, why was it that all those video engineers were telling me that I needed
19061906-19071907-477
19081908-00:27:08.000 --> 00:27:09.000
19091909-to use Blake three?
19101910-19111911-478
19121912-00:27:09.000 --> 00:27:18.000
19131913-It's because this Blake three hash is a Merkle tree over this file that you see
19141914-19151915-479
19161916-00:27:18.000 --> 00:27:21.000
19171917-here, which means you can request to just that part that says track one, gop
19181918-19191919-480
19201920-00:27:21.000 --> 00:27:27.000
19211921-one there and and through cryptographic verification, you can be 100% confident
19221922-19231923-481
19241924-00:27:27.000 --> 00:27:31.000
19251925-that that is the correct data that you've pulled out of there.
19261926-19271927-482
19281928-00:27:31.000 --> 00:27:32.000
19291929-Right.
19301930-19311931-483
19321932-00:27:32.000 --> 00:27:35.000
19331933-You can verify, yes, this is in fact part of this Blake three Sid, which is
19341934-19351935-484
19361936-00:27:35.000 --> 00:27:40.000
19371937-really, really useful when you're doing something like a CDN because then you
19381938-19391939-485
19401940-00:27:40.000 --> 00:27:44.000
19411941-can make all these, you can have be backing it with just one big file.
19421942-19431943-486
19441944-00:27:44.000 --> 00:27:46.000
19451945-You can make these bite range requests.
19461946-19471947-487
19481948-00:27:46.000 --> 00:27:50.000
19491949-You still get the cryptographic integrity that like, oh yes, that, that, that hash
19501950-19511951-488
19521952-00:27:50.000 --> 00:27:54.000
19531953-matches what I saw in Eli's at proto repository.
19541954-19551955-489
19561956-00:27:54.000 --> 00:27:57.000
19571957-So this is a really, really good format for this.
19581958-19591959-490
19601960-00:27:57.000 --> 00:27:58.000
19611961-Cool.
19621962-19631963-491
19641964-00:27:58.000 --> 00:28:06.000
19651965-So yes, three different formats that we, that we have here.
19661966-19671967-492
19681968-00:28:06.000 --> 00:28:11.000
19691969-So the archival format, which is the big MP4 file that goes in your app proto
19701970-19711971-493
19721972-00:28:11.000 --> 00:28:16.000
19731973-repository, the self certifying format, which is the part that has the CTP a
19741974-19751975-494
19761976-00:28:16.000 --> 00:28:19.000
19771977-signature attached and the streaming format, which is just when you're actually
19781978-19791979-495
19801980-00:28:19.000 --> 00:28:22.000
19811981-sending it out, you just send, you just send this part, right?
19821982-19831983-496
19841984-00:28:22.000 --> 00:28:27.000
19851985-You stream this stuff, each, each frame of video and audio directly to use.
19861986-19871987-497
19881988-00:28:27.000 --> 00:28:32.000
19891989-So for all the at proto people that didn't care about all the different
19901990-19911991-498
19921992-00:28:32.000 --> 00:28:36.000
19931993-structures of the MP4 file, how do you use all of this?
19941994-19951995-499
19961996-00:28:36.000 --> 00:28:39.000
19971997-We're not quite ready for it, but the very first vods available on stream
19981998-19991999-500
20002000-00:28:39.000 --> 00:28:41.000
20012001-place are going to follow this format.
20022002-20032003-501
20042004-00:28:41.000 --> 00:28:44.000
20052005-And it's going to be all of the talks from this conference.
20062006-20072007-502
20082008-00:28:44.000 --> 00:28:48.000
20092009-They will be published to at proto repository and you'll be able to work
20102010-20112011-503
20122012-00:28:48.000 --> 00:28:49.000
20132013-with them.
20142014-20152015-504
20162016-00:28:49.000 --> 00:28:53.000
20172017-This is a little preview of what this looks like.
20182018-20192019-505
20202020-00:28:54.000 --> 00:28:58.000
20212021-So we have a, uh, yeah.
20222022-20232023-506
20242024-00:28:58.000 --> 00:29:03.000
20252025-So the man, as you might expect the, the lexicon type for this is a place.stream.video.
20262026-20272027-507
20282028-00:29:03.000 --> 00:29:05.000
20292029-It's got, uh, things like creator.
20302030-20312031-508
20322032-00:29:05.000 --> 00:29:09.000
20332033-Um, some of the, some of this metadata in here, this is like, I'm pretending this
20342034-20352035-509
20362036-00:29:09.000 --> 00:29:10.000
20372037-is the one for this talk.
20382038-20392039-510
20402040-00:29:10.000 --> 00:29:13.000
20412041-I don't have a vod for this talk because I'm still doing this talk.
20422042-20432043-511
20442044-00:29:13.000 --> 00:29:14.000
20452045-So you don't know what the hash is yet.
20462046-20472047-512
20482048-00:29:14.000 --> 00:29:18.000
20492049-Um, it's got, it's just, as I said, it's just a blob.
20502050-20512051-513
20522052-00:29:18.000 --> 00:29:20.000
20532053-It's a video MP4 file.
20542054-20552055-514
20562056-00:29:20.000 --> 00:29:23.000
20572057-Um, but it is very, very easily cashable.
20582058-20592059-515
20602060-00:29:23.000 --> 00:29:26.000
20612061-Um, you've got a nanosecond duration in there.
20622062-20632063-516
20642064-00:29:26.000 --> 00:29:30.000
20652065-Uh, we, the design constraints for this, I've been targeting that the maximum
20662066-20672067-517
20682068-00:29:30.000 --> 00:29:33.000
20692069-length of one of these is going to be 24 hours.
20702070-20712071-518
20722072-00:29:33.000 --> 00:29:37.000
20732073-Um, because, uh, at a certain point it gets ridiculous.
20742074-20752075-519
20762076-00:29:37.000 --> 00:29:39.000
20772077-Yeah.
20782078-20792079-520
20802080-00:29:39.000 --> 00:29:42.000
20812081-Uh, and I don't want to like overflow the nanosecond duration, but if you've got
20822082-20832083-521
20842084-00:29:42.000 --> 00:29:45.000
20852085-a 24 seven live stream, that seems like a reasonable primitive that like each day
20862086-20872087-522
20882088-00:29:45.000 --> 00:29:49.000
20892089-of streaming that you would stream into would become its own vod, uh, with a
20902090-20912091-523
20922092-00:29:49.000 --> 00:29:50.000
20932093-24 hour duration.
20942094-20952095-524
20962096-00:29:50.000 --> 00:29:51.000
20972097-Right.
20982098-20992099-525
21002100-00:29:51.000 --> 00:29:53.000
21012101-Um, and then it's got a live stream reference.
21022102-21032103-526
21042104-00:29:53.000 --> 00:29:55.000
21052105-So, uh, yeah.
21062106-21072107-527
21082108-00:29:55.000 --> 00:29:57.000
21092109-So, uh, all of this will be available.
21102110-21112111-528
21122112-00:29:57.000 --> 00:29:58.000
21132113-Yeah.
21142114-21152115-529
21162116-00:29:58.000 --> 00:30:00.000
21172117-I was hoping to have all of this available and I was like, Oh, I got an
21182118-21192119-530
21202120-00:30:00.000 --> 00:30:01.000
21212121-ounce in this talk and it's going to be big.
21222122-21232123-531
21242124-00:30:01.000 --> 00:30:02.000
21252125-And we're like really, really close.
21262126-21272127-532
21282128-00:30:02.000 --> 00:30:05.000
21292129-But I wasn't, I didn't want to push a bunch of changes to stream place right
21302130-21312131-533
21322132-00:30:05.000 --> 00:30:08.000
21332133-before we did all the live streaming and screw everything else up.
21342134-21352135-534
21362136-00:30:08.000 --> 00:30:09.000
21372137-Right.
21382138-21392139-535
21402140-00:30:09.000 --> 00:30:12.000
21412141-So I, I, I did try to do that.
21422142-21432143-536
21442144-00:30:12.000 --> 00:30:14.000
21452145-Uh, uh, we did that.
21462146-21472147-537
21482148-00:30:14.000 --> 00:30:17.000
21492149-Uh, uh, I did at about seven 10 this morning.
21502150-21512151-538
21522152-00:30:17.000 --> 00:30:19.000
21532153-I'm like, all right, let's push the muscle changes.
21542154-21552155-539
21562156-00:30:19.000 --> 00:30:20.000
21572157-Let's see.
21582158-21592159-540
21602160-00:30:20.000 --> 00:30:24.000
21612161-And then immediately that laptop couldn't stream into stream place anymore for
21622162-21632163-541
21642164-00:30:24.000 --> 00:30:25.000
21652165-whatever reason.
21662166-21672167-542
21682168-00:30:25.000 --> 00:30:26.000
21692169-So I was like, Nope, Nope, back revert.
21702170-21712171-543
21722172-00:30:26.000 --> 00:30:28.000
21732173-We're going to, we'll do it.
21742174-21752175-544
21762176-00:30:28.000 --> 00:30:29.000
21772177-We'll do it after.
21782178-21792179-545
21802180-00:30:29.000 --> 00:30:33.000
21812181-Um, so that's all by way of saying this is all very, very close.
21822182-21832183-546
21842184-00:30:33.000 --> 00:30:37.000
21852185-Um, and we're hoping to give it to the community very, very soon.
21862186-21872187-547
21882188-00:30:37.000 --> 00:30:41.000
21892189-Um, and, uh, yeah, and then build it with everybody, right?
21902190-21912191-548
21922192-00:30:41.000 --> 00:30:42.000
21932193-So we don't have a front end for it.
21942194-21952195-549
21962196-00:30:42.000 --> 00:30:45.000
21972197-Um, I'm going to challenge the, we're going to do a little VOD jam and say, Hey,
21982198-21992199-550
22002200-00:30:45.000 --> 00:30:48.000
22012201-at proto community, here's the videos, build me a front end for it.
22022202-22032203-551
22042204-00:30:48.000 --> 00:30:52.000
22052205-Given that without me asking, we got three front ends for stream place in the
22062206-22072207-552
22082208-00:30:52.000 --> 00:30:53.000
22092209-last three days.
22102210-22112211-553
22122212-00:30:53.000 --> 00:30:56.000
22132213-I feel like in the vibe coding era, we're gonna, we're gonna get some
22142214-22152215-554
22162216-00:30:56.000 --> 00:30:57.000
22172217-submissions.
22182218-22192219-555
22202220-00:30:57.000 --> 00:31:01.000
22212221-If you submit one of these, uh, you're going to earn a badge next to your chat
22222222-22232223-556
22242224-00:31:01.000 --> 00:31:06.000
22252225-name in stream place, um, from now until the end of time.
22262226-22272227-557
22282228-00:31:06.000 --> 00:31:09.000
22292229-So, uh, yeah, that's it.
22302230-22312231-558
22322232-00:31:09.000 --> 00:31:11.000
22332233-That's how stream place works.
22342234-22352235-559
22362236-00:31:11.000 --> 00:31:38.000
22372237-So, uh, yeah, yeah.
22382238-22392239-560
22402240-00:31:38.000 --> 00:31:42.000
22412241-So the big alternative, um, why MP4, uh, there's a couple of reasons.
22422242-22432243-561
22442244-00:31:42.000 --> 00:31:47.000
22452245-Um, one because, uh, it's the most ubiquitous media format and the, that's the
22462246-22472247-562
22482248-00:31:47.000 --> 00:31:49.000
22492249-most highly compatible across everything.
22502250-22512251-563
22522252-00:31:49.000 --> 00:31:55.000
22532253-Um, the second is, um, it gives us the, uh, the, the, the media over quick stuff.
22542254-22552255-564
22562256-00:31:55.000 --> 00:31:57.000
22572257-Um, uh, tends to support it a lot already.
22582258-22592259-565
22602260-00:31:57.000 --> 00:32:04.000
22612261-Um, the, also the FM, uh, so this is like CMAF back to the, this thing, this is
22622262-22632263-566
22642264-00:32:04.000 --> 00:32:06.000
22652265-like CMAF MP4 playback.
22662266-22672267-567
22682268-00:32:06.000 --> 00:32:10.000
22692269-Um, and the advantage here is it lets you, um, separate out the, it gives you that
22702270-22712271-568
22722272-00:32:10.000 --> 00:32:14.000
22732273-lack of redundancy that I was describing where the in it segment isn't, there are
22742274-22752275-569
22762276-00:32:14.000 --> 00:32:17.000
22772277-other formats that embed all of that in it data in every segment, but we don't
22782278-22792279-570
22802280-00:32:17.000 --> 00:32:20.000
22812281-actually want that because it's redundant for, for a long video.
22822282-22832283-571
22842284-00:32:20.000 --> 00:32:26.000
22852285-So, um, yeah, those are the reasons.
22862286-22872287-572
22882288-00:32:26.000 --> 00:32:27.000
22892289-Sure, sure, sure.
22902290-22912291-573
22922292-00:32:27.000 --> 00:32:32.000
22932293-Uh, the question was why VP nine instead of, or why H two six four instead of,
22942294-22952295-574
22962296-00:32:32.000 --> 00:32:35.000
22972297-uh, like VP nine or AV one, no reason other than maximally compact maximum
22982298-22992299-575
23002300-00:32:35.000 --> 00:32:36.000
23012301-compatibility right now.
23022302-23032303-576
23042304-00:32:36.000 --> 00:32:40.000
23052305-We really, really want, uh, AV one in, in stream place.
23062306-23072307-577
23082308-00:32:40.000 --> 00:32:45.000
23092309-Um, we fully intend to support AV one as much as we do H two six four, especially
23102310-23112311-578
23122312-00:32:45.000 --> 00:32:48.000
23132313-when we do stuff like, like, uh, uh, I want to replace to do a lot of things
23142314-23152315-579
23162316-00:32:48.000 --> 00:32:50.000
23172317-that no other streaming platforms do.
23182318-23192319-580
23202320-00:32:50.000 --> 00:32:56.000
23212321-Like for example, uh, like 4k 120 FPS AV one video would be so sick.
23222322-23232323-581
23242324-00:32:56.000 --> 00:32:58.000
23252325-Uh, uh, can't even do it.
23262326-23272327-582
23282328-00:32:58.000 --> 00:32:59.000
23292329-I've tried to do it.
23302330-23312331-583
23322332-00:32:59.000 --> 00:33:00.000
23332333-H two six four.
23342334-23352335-584
23362336-00:33:00.000 --> 00:33:01.000
23372337-It just like doesn't, it did.
23382338-23392339-585
23402340-00:33:01.000 --> 00:33:03.000
23412341-No encoder can even come close to handling that.
23422342-23432343-586
23442344-00:33:03.000 --> 00:33:04.000
23452345-So, um, yeah, yeah.
23462346-23472347-587
23482348-00:33:04.000 --> 00:33:07.000
23492349-Uh, in terms of codec support, we want to support like every codec that it makes
23502350-23512351-588
23522352-00:33:07.000 --> 00:33:10.000
23532353-sense to, we just started with this because we're not quite in a world where
23542354-23552355-589
23562356-00:33:10.000 --> 00:33:12.000
23572357-I could probably get away with AV one only.
23582358-23592359-590
23602360-00:33:12.000 --> 00:33:17.000
23612361-And we would have needed an H two six four backup anyway in that context.
23622362-23632363-591
23642364-00:33:17.000 --> 00:33:20.000
23652365-That's why we started with H two six four, but yeah, definitely want to support
23662366-23672367-592
23682368-00:33:20.000 --> 00:33:22.000
23692369-lots of codecs.
23702370-23712371-593
23722372-00:33:28.000 --> 00:33:30.000
18881888+00:28:24.560 --> 00:28:24.900
23731889Thank you.
2374189023752375-594
23762376-00:33:34.000 --> 00:33:37.000
23772377-Thanks.
23782378-
+2502-74
public/subtitles/landslide.vtt
···11WEBVTT
22331
44-00:00:00.000 --> 00:00:02.800
55-many forms of machine assistance.
44+00:00:00.000 --> 00:00:11.100
55+I'm just going to say that because this is the kind of conference that it is with many
66772
88-00:00:02.800 --> 00:00:06.900
99-And this moment is our window for bending the future
88+00:00:11.100 --> 00:00:16.340
99+streams of information and in some cases multiple sources of truth, you may have seen that the
101011113
1212-00:00:06.900 --> 00:00:10.120
1313-around our hopes and values that cherish knowledge
1212+00:00:16.340 --> 00:00:18.220
1313+title of my talk is Landslide.
141415154
1616-00:00:10.120 --> 00:00:12.560
1717-and communal knowing, and that orient us
1616+00:00:18.220 --> 00:00:21.420
1717+You may also have seen the title of my talk is Hold Fast.
181819195
2020-00:00:12.560 --> 00:00:16.840
2121-toward real remedies for some of our most ancient information
2020+00:00:21.420 --> 00:00:25.660
2121+Both things are true at the same time because I gave Ted the information at different times.
222223236
2424-00:00:16.840 --> 00:00:21.160
2525-troubles and pains in service of living together
2424+00:00:25.660 --> 00:00:35.180
2525+So we're doing Landslide Hold Fast.
262627277
2828-00:00:21.160 --> 00:00:24.040
2929-in peace and mutual respect.
2828+00:00:35.180 --> 00:00:37.180
2929+One more glitch.
303031318
3232-00:00:24.040 --> 00:00:26.040
3333-Thank you.
3232+00:00:37.180 --> 00:00:38.980
3333+So hi, I'm Erin.
343435359
3636-00:00:55.040 --> 00:01:02.240
3737-Truly, truly, leaning toward the wrong mic,
3636+00:00:38.980 --> 00:00:44.440
3737+I alternate between trying to figure out what the social Internet is doing to us and trying
3838393910
4040-00:01:02.240 --> 00:01:04.640
4141-if you're working on this stuff, if you care about working
4040+00:00:44.440 --> 00:00:48.900
4141+to use it to get better information to more people in more places.
4242434311
4444-00:01:04.640 --> 00:01:05.760
4545-on this stuff, let's talk.
4444+00:00:48.900 --> 00:00:54.660
4545+So right now I'm doing network thinking and projects at my mini studio, wreckage salvage
4646474712
4848-00:01:05.760 --> 00:01:06.600
4949-That's why I'm here.
4848+00:00:54.660 --> 00:01:00.740
4949+and also co-running a networked volunteer mutual aid information project at Unbreaking,
5050515113
5252-00:01:06.600 --> 00:01:10.440
5353-I gave this talk so they'd let me in the door.
5252+00:01:00.740 --> 00:01:05.220
5353+also a project of the RAAF Foundation.
5454555514
5656-00:01:10.440 --> 00:01:12.360
5757-But I want to talk to people who are actually
5656+00:01:05.220 --> 00:01:08.860
5757+We work to nail down knowledge about what our government is doing to us in the United
5858595915
6060-00:01:12.360 --> 00:01:13.360
6161-trying to fix this.
6060+00:01:08.860 --> 00:01:10.740
6161+States.
6262636316
6464-00:01:13.360 --> 00:01:16.400
6565-Thank you.
6464+00:01:10.740 --> 00:01:14.300
6565+Before that I co-founded the COVID tracking project at the Atlantic.
6666676717
6868-00:01:16.400 --> 00:01:20.160
6969-We have no time for Q&A.
6868+00:01:14.300 --> 00:01:22.020
6969+This was before the Atlantic.
7070717118
7272-00:01:20.160 --> 00:01:22.120
7373-I didn't feel that service.
7272+00:01:22.020 --> 00:01:26.260
7373+That was to help people understand what was happening in 2020 through public data.
7474757519
7676-00:01:22.120 --> 00:01:23.440
7777-We went a couple of minutes over.
7676+00:01:26.260 --> 00:01:31.460
7777+Before that I was at a journalism tech community that came out of the Moz Foundation.
7878797920
8080-00:01:23.640 --> 00:01:24.960
8181-Let's go.
8080+00:01:31.460 --> 00:01:35.220
8181+Before that it was all over the early web.
8282838321
8484-00:01:24.960 --> 00:01:28.680
8585-We are blessed with this awesome talk to kick us off,
8484+00:01:35.220 --> 00:01:36.380
8585+So that's the nature of my work.
8686878722
8888-00:01:28.680 --> 00:01:31.680
8989-but we are also running a little bit late.
8888+00:01:36.380 --> 00:01:39.740
8989+I use the tools and I try to improve the tools and then I repeat.
9090919123
9292-00:01:31.680 --> 00:01:35.840
9393-We will be joined here in this room by Rudy Fraser.
9292+00:01:39.740 --> 00:01:46.420
9393+What I learned from yesterday's amazing pre-conference experience is that many of you are in much
9494959524
9696-00:01:35.840 --> 00:01:39.440
9797-We've got Justin Bank in the performance theater,
9696+00:01:46.420 --> 00:01:48.340
9797+the same position, which I love.
9898999925
100100-00:01:39.440 --> 00:01:44.160
101101-and we've got Mosh in the classroom at the end.
100100+00:01:48.340 --> 00:01:52.780
101101+It's like a whole room of corner cases.
10210210310326
104104-00:01:44.160 --> 00:01:46.840
105105-Rudy, groundings with my siblings, lessons learned,
104104+00:01:52.780 --> 00:01:57.700
105105+I want to know what the networks are doing to us and what resources that people like
10610610710727
108108-00:01:46.840 --> 00:01:49.720
109109-building for community.
108108+00:01:57.700 --> 00:02:04.680
109109+us have to draw from to shape our networks in ways that ground and reorient our communities
11011011111128
112112-00:01:49.720 --> 00:01:53.120
113113-Justin Bank, the aggregation era burn journalism
112112+00:02:04.680 --> 00:02:13.540
113113+in useful knowledge and to maybe someday live together in peace and mutual respect.
11411411511529
116116-00:01:53.120 --> 00:01:54.920
117117-institutions to the ground.
116116+00:02:13.540 --> 00:02:17.500
117117+Right before the end of last year I posted another extremely long blog post, which is
11811811911930
120120-00:01:54.920 --> 00:01:58.760
121121-The federated era is emerging from those embers.
120120+00:02:17.500 --> 00:02:22.220
121121+my jam, called Landslided Ghost Story, in which I tried to get closer to the core of
12212212312331
124124-00:01:58.760 --> 00:02:01.520
125125-And Mosh feature product business, a framework
124124+00:02:22.220 --> 00:02:27.340
125125+our network's role in disorienting and disintegrating us.
12612612712732
128128-00:02:01.520 --> 00:02:04.000
129129-for sustainable app portal projects.
128128+00:02:27.340 --> 00:02:31.220
129129+I'll talk about that one a little bit here because the new work I'm bringing builds on
13013013113133
132132-00:02:04.000 --> 00:02:06.200
133133-So we're going to reset.
132132+00:02:31.220 --> 00:02:32.780
133133+it.
13413413513534
136136-00:02:06.200 --> 00:02:07.920
137137-We're going to give you about five minutes.
136136+00:02:32.780 --> 00:02:37.700
137137+This talk, I think, and I hope is kind of a turning point for my work and what I can
13813813913935
140140-00:02:07.920 --> 00:02:10.840
141141-But if you can pick one of those three rooms, grab a coffee,
140140+00:02:37.700 --> 00:02:41.460
141141+bring to you because I think I finally have a good enough handle on at least parts of
14214214314336
144144-00:02:10.840 --> 00:02:13.440
145145-and head to your next destination.
144144+00:02:41.460 --> 00:02:46.460
145145+this to be able to offer some paths forward that aren't either unattainable or just like
14614614714737
148148-00:02:13.440 --> 00:02:14.480
149149-Thank you for joining us.
148148+00:02:46.460 --> 00:02:49.940
149149+disproportionately paltry.
150150+151151+38
152152+00:02:49.940 --> 00:02:51.460
153153+I want to make a side note.
154154+155155+39
156156+00:02:51.460 --> 00:02:56.540
157157+I take it as a given that one major underlying problem that prevents us from dealing with
158158+159159+40
160160+00:02:56.540 --> 00:03:00.340
161161+many other problems is centralization and lock-in, which decentralized networks are
162162+163163+41
164164+00:03:00.340 --> 00:03:01.340
165165+here to deal with.
166166+167167+42
168168+00:03:01.340 --> 00:03:06.180
169169+I just want to say I think that Jay and the rest of Blue Sky's founding team have done
170170+171171+43
172172+00:03:06.180 --> 00:03:11.660
173173+us all a tremendous service by, yes, making Blue Sky the app, but especially in using
174174+175175+44
176176+00:03:11.660 --> 00:03:17.040
177177+all of that available momentum to get this protocol ecosystem off the ground and stable
178178+179179+45
180180+00:03:17.040 --> 00:03:21.180
181181+enough to support the kind of independent development that I saw happening yesterday
182182+183183+46
184184+00:03:21.180 --> 00:03:23.020
185185+and that we'll be talking about here.
186186+187187+47
188188+00:03:23.020 --> 00:03:25.380
189189+I assume basically universal concordance about this.
190190+191191+48
192192+00:03:25.380 --> 00:03:29.020
193193+I'm not going to spend a lot of time talking about it, but I am so grateful for the work
194194+195195+49
196196+00:03:29.020 --> 00:03:30.260
197197+that the team has accomplished.
198198+199199+50
200200+00:03:30.260 --> 00:03:33.180
201201+I just want to say that.
202202+203203+51
204204+00:03:33.180 --> 00:03:36.420
205205+There's so much good stuff happening around the protocol, and I'm super psyched to see
206206+207207+52
208208+00:03:36.420 --> 00:03:39.440
209209+the next batch of it today.
210210+211211+53
212212+00:03:39.440 --> 00:03:40.440
213213+Yesterday was incredible.
214214+215215+54
216216+00:03:40.440 --> 00:03:45.980
217217+The work I have been doing is for you, and I brought a lot of things, so let's get to
218218+219219+55
220220+00:03:45.980 --> 00:03:47.580
221221+it.
222222+223223+56
224224+00:03:47.580 --> 00:03:56.340
225225+62 years ago yesterday, on Good Friday in 1964, a tectonic plate up under Alaska slid
226226+227227+57
228228+00:03:56.340 --> 00:04:01.900
229229+under another tectonic plate and produced an extraordinarily strong and sustained earthquake
230230+231231+58
232232+00:04:01.900 --> 00:04:07.100
233233+that we now know to be the second highest magnitude quake in recorded history.
234234+235235+59
236236+00:04:07.100 --> 00:04:11.900
237237+It actually reshaped the field of seismology, but more immediately it caused parts of the
238238+239239+60
240240+00:04:11.900 --> 00:04:17.900
241241+Alaskan coast to drop by nearly 40 feet, rise by nearly 40 feet, dropped others down below
242242+243243+61
244244+00:04:17.900 --> 00:04:22.940
245245+sea level, triggered enormous tsunamis, and according to geologists, it was so big that
246246+247247+62
248248+00:04:22.940 --> 00:04:26.540
249249+it rang the planet like a bell.
250250+251251+63
252252+00:04:26.540 --> 00:04:32.460
253253+Alaska is not densely populated, but this is what the earthquake looked like in, this
254254+255255+64
256256+00:04:32.460 --> 00:04:33.800
257257+is an anchorage.
258258+259259+65
260260+00:04:33.800 --> 00:04:38.200
261261+In cities and towns, you see the kind of damage you'd expect at tore up streets and knockdown
262262+263263+66
264264+00:04:38.200 --> 00:04:43.420
265265+buildings, and in Alaska, 139 people died.
266266+267267+67
268268+00:04:43.420 --> 00:04:51.500
269269+It also did something exceptionally weird and horrific in the port town of Valdez.
270270+271271+68
272272+00:04:51.980 --> 00:04:58.980
273273+Valdez is the northernmost year round ice free deep water port in North America and
274274+275275+69
276276+00:04:58.980 --> 00:05:04.300
277277+the southern end of the Trans-Alaska oil pipeline.
278278+279279+70
280280+00:05:04.300 --> 00:05:09.260
281281+My partner grew up in Valdez, so I heard about the earthquake and how weird it had been from
282282+283283+71
284284+00:05:09.260 --> 00:05:14.780
285285+him, and my father-in-law worked at the Valdez Museum and had produced a video from some
286286+287287+72
288288+00:05:14.780 --> 00:05:18.820
289289+of this really wild, grainy, contemporary footage of the quake, so when we went up to
290290+291291+73
292292+00:05:18.820 --> 00:05:20.820
293293+visit I got to see that.
294294+295295+74
296296+00:05:21.140 --> 00:05:27.580
297297+Much later, my family moved to the Cascadia subduction zone, and I became an earthquake
298298+299299+75
300300+00:05:27.580 --> 00:05:30.660
301301+nerd, as one does.
302302+303303+76
304304+00:05:30.660 --> 00:05:36.300
305305+I sort of just poked at this story and the records out of Valdez as part of my insomnia
306306+307307+77
308308+00:05:36.300 --> 00:05:40.820
309309+rounds of upsetting things to look at in the middle of the night, but it kind of stayed
310310+311311+78
312312+00:05:40.820 --> 00:05:46.140
313313+in the background until the end of last year when I discovered that the US Geological Survey
314314+315315+79
316316+00:05:46.140 --> 00:05:51.700
317317+had produced a new cut of that weird film footage from the Valdez Harbor.
318318+319319+80
320320+00:05:51.700 --> 00:05:59.380
321321+I'm not going to show it to you, but it is in the landslide post on my site.
322322+323323+81
324324+00:05:59.380 --> 00:06:04.180
325325+The footage only existed because a supply ship, the SS China, had come into the harbor
326326+327327+82
328328+00:06:04.180 --> 00:06:09.500
329329+right before the quake, and someone on the ship happened to have an 8mm camera and happened
330330+331331+83
332332+00:06:09.500 --> 00:06:13.500
333333+to be filming the crew just like dorking around on deck and throwing oranges and candy to
334334+335335+84
336336+00:06:13.500 --> 00:06:17.500
337337+the kids who'd come down to the docks and meet the ship.
338338+339339+85
340340+00:06:17.500 --> 00:06:22.140
341341+But I'd only ever seen the footage in a form that turned out to be highly manipulated,
342342+343343+86
344344+00:06:22.140 --> 00:06:28.620
345345+and the reconstructed cut from USGS revealed that the shots we always thought were of the
346346+347347+87
348348+00:06:28.620 --> 00:06:36.980
349349+water of the local tsunami produced by the quake were actually of the land, which had
350350+351351+88
352352+00:06:36.980 --> 00:06:44.020
353353+just turned to liquid and flowed out from under everything it was supporting.
354354+355355+89
356356+00:06:44.020 --> 00:06:50.660
357357+That's what used to be the harbor, and it all just fell in the sea, and the footage
358358+359359+90
360360+00:06:50.660 --> 00:06:54.340
361361+actually shows it just pouring out from under these buildings.
362362+363363+91
364364+00:06:54.340 --> 00:07:00.060
365365+That re-sequence footage remains the single most upsetting piece of film I have ever seen
366366+367367+92
368368+00:07:00.060 --> 00:07:05.340
369369+because the destabilization it depicts is happening at the level of basic physics, which
370370+371371+93
372372+00:07:05.340 --> 00:07:08.540
373373+is gross and weird.
374374+375375+94
376376+00:07:08.540 --> 00:07:12.580
377377+So here's what happened in Valdez, based on everything we know now.
378378+379379+95
380380+00:07:12.580 --> 00:07:17.700
381381+The town was built on glacial moraine, which is this disorganized debris piled up by a
382382+383383+96
384384+00:07:17.700 --> 00:07:23.420
385385+glacier, and down near the shoreline, that jumble of unconsolidated rock and sand went
386386+387387+97
388388+00:07:23.420 --> 00:07:27.260
389389+down 600 feet before you hit bedrock.
390390+391391+98
392392+00:07:27.260 --> 00:07:31.580
393393+And building on the moraine was not an obviously bad idea because it was still solid ground.
394394+395395+99
396396+00:07:31.580 --> 00:07:35.340
397397+You could step on it or drive on it, and it's fine because the contact forces between
398398+399399+100
400400+00:07:35.340 --> 00:07:38.220
401401+the particles would distribute the load.
402402+403403+101
404404+00:07:38.220 --> 00:07:41.180
405405+But Valdez is also extremely wet.
406406+407407+102
408408+00:07:41.180 --> 00:07:46.220
409409+In the winter, it's no so much people have to shovel their roofs to keep them from collapsing.
410410+411411+103
412412+00:07:46.220 --> 00:07:50.620
413413+And the water table down there by the shoreline is just a few feet from the surface of the
414414+415415+104
416416+00:07:50.620 --> 00:07:51.620
417417+town.
418418+419419+105
420420+00:07:51.620 --> 00:07:57.740
421421+So in late March of 1964, between that just like barely subterranean water and the melt
422422+423423+106
424424+00:07:57.740 --> 00:08:05.660
425425+from these exceptionally heavy snows, that loose jumbled substrate was flooded, was completely
426426+427427+107
428428+00:08:05.660 --> 00:08:07.900
429429+saturated.
430430+431431+108
432432+00:08:07.900 --> 00:08:13.220
433433+And it turns out that when a series of extraordinarily heavy and repeated shocks like this particular
434434+435435+109
436436+00:08:13.220 --> 00:08:18.620
437437+earthquake hit a loose substrate that's also completely saturated with water, the compression
438438+439439+110
440440+00:08:18.620 --> 00:08:26.060
441441+hits the water and pushes all those particles apart, and the solids just turn into liquid
442442+443443+111
444444+00:08:26.060 --> 00:08:29.980
445445+almost instantly and flow away and everything falls in.
446446+447447+112
448448+00:08:29.980 --> 00:08:36.580
449449+And in Valdez, the whole harbor flowed away and took out everything and everyone on it.
450450+451451+113
452452+00:08:36.580 --> 00:08:43.020
453453+So this is the three-part model of how this particularly horrific thing works.
454454+455455+114
456456+00:08:43.020 --> 00:08:48.420
457457+We've seen this elsewhere now, but we never had, especially we never had footage of anything
458458+459459+115
460460+00:08:48.420 --> 00:08:49.420
461461+like this.
462462+463463+116
464464+00:08:49.420 --> 00:08:55.700
465465+There were like some very loose records of what's called soil liquefaction.
466466+467467+117
468468+00:08:55.700 --> 00:08:59.700
469469+I don't recommend that you go look for videos of soil liquefaction.
470470+471471+118
472472+00:08:59.700 --> 00:09:03.780
473473+I was down this rabbit hole in December, the same time I was trying to take stock of almost
474474+475475+119
476476+00:09:03.780 --> 00:09:08.060
477477+a year of work at Unbreaking where we're just kind of down slogging through the mud of our
478478+479479+120
480480+00:09:08.060 --> 00:09:09.060
481481+information landscape.
482482+483483+121
484484+00:09:09.060 --> 00:09:14.300
485485+And I was trying to understand like the networks piece and also the underlying like journalism
486486+487487+122
488488+00:09:14.300 --> 00:09:20.260
489489+shaped stuff that's supposed to produce distributable knowledge and how our collective understanding
490490+491491+123
492492+00:09:20.260 --> 00:09:24.260
493493+was faring against repeated and violent shocks.
494494+495495+124
496496+00:09:24.260 --> 00:09:28.980
497497+So I wrote a lot of words about the information substrate and the saturation and flooding
498498+499499+125
500500+00:09:28.980 --> 00:09:33.660
501501+of network-based overload and how those two things together produce a colossal vulnerability
502502+503503+126
504504+00:09:33.660 --> 00:09:34.660
505505+to shocks.
506506+507507+127
508508+00:09:34.660 --> 00:09:38.580
509509+And I'm going to lay those out super quickly here just to get them on the table so we can
510510+511511+128
512512+00:09:38.580 --> 00:09:41.900
513513+move on to the good stuff.
514514+515515+129
516516+00:09:41.900 --> 00:09:47.780
517517+So starting with the substrate, in the US where I'm from and in many other parts of
518518+519519+130
520520+00:09:47.780 --> 00:09:52.740
521521+the world, our underlying foundational knowledge systems have taken a lot of damage.
522522+523523+131
524524+00:09:52.740 --> 00:09:58.500
525525+Like the business model underlying our media continues down this decades-long death spiral.
526526+527527+132
528528+00:09:58.500 --> 00:10:03.500
529529+And media consolidation which preceded the damage wrought by the internet by many decades
530530+531531+133
532532+00:10:03.500 --> 00:10:09.380
533533+continues to degrade and squeeze and hollow out a lot of our most, well, formerly most
534534+535535+134
536536+00:10:09.380 --> 00:10:13.620
537537+trustworthy sources of current information and basic analysis.
538538+539539+135
540540+00:10:13.620 --> 00:10:15.700
541541+But it's not just journalism.
542542+543543+136
544544+00:10:15.700 --> 00:10:20.220
545545+Extractive practices at every part of the knowledge production chain has dealt tremendous
546546+547547+137
548548+00:10:20.220 --> 00:10:23.420
549549+damage to our whole ecosystem.
550550+551551+138
552552+00:10:23.420 --> 00:10:26.900
553553+I have on my hard drive enough for like a dozen talks about what's happened to basic
554554+555555+139
556556+00:10:26.900 --> 00:10:32.700
557557+research and peer review and academic presses and general presses and even like web search,
558558+559559+140
560560+00:10:32.700 --> 00:10:37.740
561561+the niches that used to support independent writers and artists and some of our most recent
562562+563563+141
564564+00:10:37.740 --> 00:10:42.660
565565+knowledge consolidating institutions like Stack Overflow and Wikipedia are beginning
566566+567567+142
568568+00:10:42.660 --> 00:10:44.540
569569+to suffer.
570570+571571+143
572572+00:10:44.540 --> 00:10:50.100
573573+And all of this hollowing out has been accompanied by an upwelling of things that we wouldn't
574574+575575+144
576576+00:10:50.100 --> 00:10:56.820
577577+traditionally call news that range from genuinely vital eyewitness videos through outright and
578578+579579+145
580580+00:10:56.820 --> 00:11:02.260
581581+well-funded propaganda farms to purely fact-free slop.
582582+583583+146
584584+00:11:02.260 --> 00:11:09.540
585585+And all of this is enmeshed with the news organizations primarily devoted to discrediting
586586+587587+147
588588+00:11:09.540 --> 00:11:14.980
589589+real reporting and presented through social platforms that in many cases deliberately
590590+591591+148
592592+00:11:14.980 --> 00:11:19.780
593593+shape the subset of available information to evade responsibility for misinformation
594594+595595+149
596596+00:11:19.780 --> 00:11:25.400
597597+and also to suit sort of our own worst selves desires.
598598+599599+150
600600+00:11:25.400 --> 00:11:28.140
601601+So this is not great.
602602+603603+151
604604+00:11:28.140 --> 00:11:34.220
605605+And then we also have just the massive proliferation of information that I feel like we've just
606606+607607+152
608608+00:11:34.220 --> 00:11:38.100
609609+about lost a way to talk about maybe because we're so buried in it.
610610+611611+153
612612+00:11:38.100 --> 00:11:40.020
613613+The science folks bring it up.
614614+615615+154
616616+00:11:40.020 --> 00:11:44.460
617617+And that was extremely heartening to hear them acknowledging that's what they do, that
618618+619619+155
620620+00:11:44.460 --> 00:11:46.020
621621+the knowledge crafting.
622622+623623+156
624624+00:11:46.020 --> 00:11:52.940
625625+But this phenomenon of exponential hyperproliferation and information overload is a real one with
626626+627627+157
628628+00:11:52.940 --> 00:11:58.540
629629+a large and solid body of evidence about its genuinely damaging psychological and emotional
630630+631631+158
632632+00:11:58.540 --> 00:12:01.020
633633+and physical effects.
634634+635635+159
636636+00:12:01.020 --> 00:12:05.940
637637+And we've been making filters and developing practices to cope with this with too much
638638+639639+160
640640+00:12:05.940 --> 00:12:11.900
641641+information since we invented writing and complaining about it the whole time.
642642+643643+161
644644+00:12:11.900 --> 00:12:15.900
645645+The history of information overload is amazing.
646646+647647+162
648648+00:12:15.900 --> 00:12:22.060
649649+But our latest filters including web search and social media algorithms and now the LLMs
650650+651651+163
652652+00:12:22.060 --> 00:12:28.300
653653+are not necessarily filtering our flood in ways that actually serve us well.
654654+655655+164
656656+00:12:28.300 --> 00:12:33.860
657657+And many of us too have lost faith in some of the sort of stolid older filters because
658658+659659+165
660660+00:12:33.860 --> 00:12:39.020
661661+we can see that they're not representing the reality that we find in eyewitness videos
662662+663663+166
664664+00:12:39.020 --> 00:12:40.900
665665+and first person accounts.
666666+667667+167
668668+00:12:40.900 --> 00:12:45.700
669669+So maybe we decide to let go of those filters too and the more filters we opt out of the
670670+671671+168
672672+00:12:45.700 --> 00:12:48.900
673673+more we expose ourselves to the flood.
674674+675675+169
676676+00:12:48.900 --> 00:12:54.460
677677+But at least when we do that we're getting access to more knowledge.
678678+679679+170
680680+00:12:54.460 --> 00:12:59.020
681681+So this is a question social scientists have spent a lot of time and funding trying to
682682+683683+171
684684+00:12:59.020 --> 00:13:00.500
685685+figure out.
686686+687687+172
688688+00:13:00.500 --> 00:13:05.900
689689+And the emerging consensus is that for most people most of the time keeping up with current
690690+691691+173
692692+00:13:05.900 --> 00:13:13.140
693693+events via our social feeds produces something very near to zero gains in our knowledge about
694694+695695+174
696696+00:13:13.140 --> 00:13:15.340
697697+civics and politics.
698698+699699+175
700700+00:13:15.340 --> 00:13:19.420
701701+We see a lot of things go by and we feel a lot of feelings about them.
702702+703703+176
704704+00:13:19.420 --> 00:13:24.700
705705+But by and large we are not actually building much knowledge in our human brains.
706706+707707+177
708708+00:13:24.700 --> 00:13:28.460
709709+But I feel kind of cautious about this research because it blends together a lot of different
710710+711711+178
712712+00:13:28.460 --> 00:13:30.060
713713+ways to use social media.
714714+715715+179
716716+00:13:30.060 --> 00:13:36.860
717717+And I think those of us in this room are probably outliers in how we use it.
718718+719719+180
720720+00:13:36.860 --> 00:13:40.620
721721+In most cases like news, the researchers are just talking about a specific thing which
722722+723723+181
724724+00:13:40.620 --> 00:13:48.540
725725+is links to news stories being passed around and not like mega threads of analysis or videos
726726+727727+182
728728+00:13:48.540 --> 00:13:51.220
729729+by particularly gifted explainers.
730730+731731+183
732732+00:13:51.220 --> 00:13:54.180
733733+But even with those caveats the numbers are not good.
734734+735735+184
736736+00:13:54.180 --> 00:14:00.220
737737+There's a very recent and thorough meta analysis on whether we gain political or civic knowledge
738738+739739+185
740740+00:14:00.220 --> 00:14:08.500
741741+from social media exposure that has persuasive results that on the whole we really just don't.
742742+743743+186
744744+00:14:08.500 --> 00:14:11.780
745745+Which doesn't mean that outliers don't exist.
746746+747747+187
748748+00:14:11.780 --> 00:14:15.700
749749+But it does mean unless we're only building for outliers we should recognize that the
750750+751751+188
752752+00:14:15.700 --> 00:14:21.980
753753+combination of social media and human brains does not on average produce workable knowledge
754754+755755+189
756756+00:14:21.980 --> 00:14:24.000
757757+about what's happening.
758758+759759+190
760760+00:14:24.000 --> 00:14:27.520
761761+So that's bad but there's worse.
762762+763763+191
764764+00:14:27.520 --> 00:14:34.200
765765+We also have pretty solid although somewhat less evidenced research that on the whole
766766+767767+192
768768+00:14:34.200 --> 00:14:38.240
769769+we don't just fail to learn things from our social feeds.
770770+771771+193
772772+00:14:38.240 --> 00:14:45.360
773773+We also come away from them feeling more confident in our knowledge that we don't have.
774774+775775+194
776776+00:14:45.360 --> 00:14:51.080
777777+Which is also closely connected to my all time least favorite research on cognition
778778+779779+195
780780+00:14:51.160 --> 00:14:55.200
781781+which is on the illusion of explanatory depth.
782782+783783+196
784784+00:14:55.200 --> 00:14:58.000
785785+Who knows about the illusion of explanatory depth.
786786+787787+197
788788+00:14:58.000 --> 00:14:59.520
789789+Oh great.
790790+791791+198
792792+00:14:59.520 --> 00:15:01.640
793793+Okay we'll get to that later.
794794+795795+199
796796+00:15:01.640 --> 00:15:08.480
797797+For now I want to underline that not knowing things we might need to know is bad but lacking
798798+799799+200
800800+00:15:08.480 --> 00:15:17.080
801801+the epistemic humility to know that we might need to go learn them is probably worse.
802802+803803+201
804804+00:15:17.080 --> 00:15:23.800
805805+And then there's the emotional dimension of the flood.
806806+807807+202
808808+00:15:23.800 --> 00:15:28.600
809809+Which I want to talk about in strictly human terms and without laundering it through social
810810+811811+203
812812+00:15:28.600 --> 00:15:35.160
813813+science which is not to pick on the highbrow moral panic about the internet folks.
814814+815815+204
816816+00:15:35.160 --> 00:15:36.160
817817+Although it is.
818818+819819+205
820820+00:15:36.160 --> 00:15:41.440
821821+But I think many of our dominant critical lenses on our networks and what they do to
822822+823823+206
824824+00:15:41.440 --> 00:15:48.440
825825+society are essentially laundering genuine affective feelings trouble through selective
826826+827827+207
828828+00:15:48.440 --> 00:15:53.160
829829+and often irresponsibly represented social science and neurological research to present
830830+831831+208
832832+00:15:53.160 --> 00:15:57.440
833833+themselves as unshakably authoritative policy prescriptions.
834834+835835+209
836836+00:15:57.440 --> 00:16:04.400
837837+And I took the anxious generation slide out of this talk but please note that it was there.
838838+839839+210
840840+00:16:04.400 --> 00:16:08.520
841841+There are responsible ways to work with the science and I try to be really cautious when
842842+843843+211
844844+00:16:08.520 --> 00:16:12.200
845845+I an epistemic trespasser do it.
846846+847847+212
848848+00:16:12.200 --> 00:16:17.000
849849+But we don't even need it for conversations among ourselves because the affective stuff
850850+851851+213
852852+00:16:17.000 --> 00:16:23.400
853853+is real and we experience countless ephemeral sort of news shaped bids for our attention
854854+855855+214
856856+00:16:23.400 --> 00:16:28.440
857857+every day and most of us who hang out online experience them through highly emotive feeds
858858+859859+215
860860+00:16:28.440 --> 00:16:32.960
861861+that lean toward volume and speed and never ending context collapse.
862862+863863+216
864864+00:16:32.960 --> 00:16:36.240
865865+So for a lot of us it just feels bad.
866866+867867+217
868868+00:16:36.240 --> 00:16:39.320
869869+And this is the saturating flood.
870870+871871+218
872872+00:16:39.320 --> 00:16:41.420
873873+And then we get the shocks.
874874+875875+219
876876+00:16:41.420 --> 00:16:46.880
877877+And in the landslide essay I focus pretty narrowly on the Trump regime's attack on the
878878+879879+220
880880+00:16:46.880 --> 00:16:52.280
881881+idea of truth and on every viable model of building knowledge.
882882+883883+221
884884+00:16:52.280 --> 00:16:59.220
885885+But the more important attack from the administration is that they are just doing deranged nonsensical
886886+887887+222
888888+00:16:59.220 --> 00:17:03.460
889889+bullshit all the time.
890890+891891+223
892892+00:17:03.460 --> 00:17:09.480
893893+Thank you.
894894+895895+224
896896+00:17:09.480 --> 00:17:14.180
897897+And what that does to our ability to understand the world is still not as bad as what they
898898+899899+225
900900+00:17:14.180 --> 00:17:20.960
901901+are actually doing to people and to economies and to countries and to sovereignties.
902902+903903+226
904904+00:17:20.960 --> 00:17:26.740
905905+But it's still very bad because the only way out of this barring international intervention
906906+907907+227
908908+00:17:26.940 --> 00:17:31.780
909909+is for Americans to pull our brains together and act.
910910+911911+228
912912+00:17:31.780 --> 00:17:35.380
913913+And I don't know what your personal networks look like but a lot of people in almost every
914914+915915+229
916916+00:17:35.380 --> 00:17:39.980
917917+part of mine in all my overlapping circles spent a lot of the last year in a state of
918918+919919+230
920920+00:17:39.980 --> 00:17:46.940
921921+real disorientation about things like how is this not breaking the law and what is the
922922+923923+231
924924+00:17:46.940 --> 00:17:49.420
925925+law even?
926926+927927+232
928928+00:17:49.420 --> 00:17:53.340
929929+And this was true for almost everyone except for the folks who knew in advance that they
930930+931931+233
932932+00:17:53.340 --> 00:17:57.900
933933+would be targeted and we're paying a different kind of attention.
934934+935935+234
936936+00:17:57.900 --> 00:18:03.580
937937+But also unfortunately one bad regime is not the only kind of shock that we're experiencing
938938+939939+235
940940+00:18:03.580 --> 00:18:05.900
941941+or will experience.
942942+943943+236
944944+00:18:05.900 --> 00:18:11.200
945945+So I've spent the last few months reading more deeply in the research and also continuing
946946+947947+237
948948+00:18:11.200 --> 00:18:16.860
949949+to plug away in the info minds that I'm breaking and bashing on some possibilities for building
950950+951951+238
952952+00:18:16.860 --> 00:18:21.900
953953+ourselves out of this mess which is what I want to talk about next.
954954+955955+239
956956+00:18:21.900 --> 00:18:27.860
957957+But first I want to briefly say why I think this work belongs here at this protocol conference
958958+959959+240
960960+00:18:27.860 --> 00:18:32.820
961961+more than just about anywhere else.
962962+963963+241
964964+00:18:32.820 --> 00:18:38.020
965965+When I write about the fallout of our global networks some of the points I come to echo
966966+967967+242
968968+00:18:38.020 --> 00:18:43.000
969969+ones that many much fancier critics have covered but I tend to reach different conclusions
970970+971971+243
972972+00:18:43.000 --> 00:18:48.740
973973+than they do because I am focused on builders and they are mostly writing toward individualistic
974974+975975+244
976976+00:18:48.740 --> 00:18:51.460
977977+remedies or toward regulation.
978978+979979+245
980980+00:18:51.460 --> 00:18:56.820
981981+And I have been alive for a lot of the internet so far and I have absolutely no faith in either
982982+983983+246
984984+00:18:56.820 --> 00:18:59.860
985985+of those pathways at this time.
986986+987987+247
988988+00:18:59.860 --> 00:19:02.420
989989+We are not going to disconnect from each other.
990990+991991+248
992992+00:19:02.420 --> 00:19:04.500
993993+It's just not going to happen.
994994+995995+249
996996+00:19:04.500 --> 00:19:11.860
997997+And our regulators are mostly speaking for my own country working from cartoon understandings
998998+999999+250
10001000+00:19:11.860 --> 00:19:16.060
10011001+of network mechanisms and skating to where the puck was like between two and 12 years
10021002+10031003+251
10041004+00:19:16.060 --> 00:19:22.820
10051005+ago which leaves us, the people in this room and people like us who hold the technological
10061006+10071007+252
10081008+00:19:22.820 --> 00:19:26.940
10091009+means of production and would like to use it to do something different.
10101010+10111011+253
10121012+00:19:26.940 --> 00:19:30.880
10131013+And I will be honest, like saying this kind of thing which I have been saying in a lot
10141014+10151015+254
10161016+00:19:30.880 --> 00:19:35.500
10171017+of places for a long time has felt like kicking people who were already down because they
10181018+10191019+255
10201020+00:19:35.500 --> 00:19:41.180
10211021+are under resourced and over-taxed open source developers or they are stuck inside corporations
10221022+10231023+256
10241024+00:19:41.180 --> 00:19:46.900
10251025+with their own perverse incentives or people who have a lot of really good ideas but haven't
10261026+10271027+257
10281028+00:19:46.900 --> 00:19:52.380
10291029+had the technical means to turn those into something they can show other people.
10301030+10311031+258
10321032+00:19:52.380 --> 00:19:56.500
10331033+But there are two things happening right now that maybe make this moment different for
10341034+10351035+259
10361036+00:19:56.500 --> 00:19:57.740
10371037+some of us.
10381038+10391039+260
10401040+00:19:57.740 --> 00:20:02.780
10411041+The first is that decentralized protocols are a live force now with a bigger user base
10421042+10431043+261
10441044+00:20:02.780 --> 00:20:05.260
10451045+and more attention than we have ever seen.
10461046+10471047+262
10481048+00:20:05.260 --> 00:20:13.320
10491049+The atmosphere is a dev-friendly pro-experimentation zone with so much room for trying things.
10501050+10511051+263
10521052+00:20:13.320 --> 00:20:18.020
10531053+The second factor is that writing code has always been difficult and time-consuming and
10541054+10551055+264
10561056+00:20:18.020 --> 00:20:21.780
10571057+therefore quite expensive along one axis or another.
10581058+10591059+265
10601060+00:20:21.780 --> 00:20:29.860
10611061+And that appears to be changing quite quickly which can go several ways and will.
10621062+10631063+266
10641064+00:20:29.860 --> 00:20:34.180
10651065+But the models and the generators seem to be making a lot of previously high learning
10661066+10671067+267
10681068+00:20:34.180 --> 00:20:40.980
10691069+curve high time commitment prototyping and experimentation vastly easier to get into.
10701070+10711071+268
10721072+00:20:40.980 --> 00:20:45.220
10731073+And when I wrote this I felt like that was still sort of speculative and then we moved
10741074+10751075+269
10761076+00:20:45.220 --> 00:20:48.860
10771077+closer to the conference and I was like oh it's really happening I got here and I was
10781078+10791079+270
10801080+00:20:48.860 --> 00:20:52.580
10811081+like oh okay.
10821082+10831083+271
10841084+00:20:52.580 --> 00:20:58.540
10851085+And this gives people who have been thinking hard about the effects of our networks a
10861086+10871087+272
10881088+00:20:58.540 --> 00:21:04.700
10891089+chance to kind of rotate in and start prototyping and building and also I think gives long time
10901090+10911091+273
10921092+00:21:04.700 --> 00:21:11.220
10931093+developers more time and freedom to put into stuff that's actually good for us as organisms
10941094+10951095+274
10961096+00:21:11.220 --> 00:21:15.020
10971097+and communities of organisms.
10981098+10991099+275
11001100+00:21:15.020 --> 00:21:22.820
11011101+Therefore I want to bring you some research threads and hopes and provocations which we
11021102+11031103+276
11041104+00:21:22.860 --> 00:21:30.020
11051105+will mostly adapt from the wonderful world of kelp.
11061106+11071107+277
11081108+00:21:30.020 --> 00:21:37.540
11091109+I need to turn your attention to macro algae or macro algae for the Brits in the audience.
11101110+11111111+278
11121112+00:21:37.540 --> 00:21:42.980
11131113+Specifically to kelp and specifically to the subtlest and least showy parts of kelp which
11141114+11151115+279
11161116+00:21:42.980 --> 00:21:46.980
11171117+are its hold fasts.
11181118+11191119+280
11201120+00:21:46.980 --> 00:22:00.100
11211121+Hold fasts and thank you to my daughter June for this illustration.
11221122+11231123+281
11241124+00:22:00.100 --> 00:22:04.820
11251125+Hold fasts are the structural support systems that kelp and other micro algae and also
11261126+11271127+282
11281128+00:22:04.820 --> 00:22:11.140
11291129+a bunch of little sessile which is a beautiful word for non mobile sea creatures evolved
11301130+11311131+283
11321132+00:22:11.140 --> 00:22:16.580
11331133+to cling on to the sea floor or even to like bigger shellfish with such strength that they
11341134+11351135+284
11361136+00:22:16.580 --> 00:22:21.260
11371137+can hold on and flourish in deep water and in the roughest most turbulent intertidal
11381138+11391139+285
11401140+00:22:21.260 --> 00:22:22.260
11411141+zones.
11421142+11431143+286
11441144+00:22:22.260 --> 00:22:27.020
11451145+And the reason by the way that I tend to pull so heavily from the natural world and our
11461146+11471147+287
11481148+00:22:27.020 --> 00:22:31.740
11491149+interactions with it is that the world has kind of figured a lot of shit out in a lot
11501150+11511151+288
11521152+00:22:31.740 --> 00:22:37.180
11531153+of ways and I think leaving all of those models of complexity on the table is goofy and also
11541154+11551155+289
11561156+00:22:37.180 --> 00:22:40.260
11571157+kelp is awesome.
11581158+11591159+290
11601160+00:22:41.020 --> 00:22:46.780
11611161+So kelp and its hold fasts do three things that I think could be very useful for us to
11621162+11631163+291
11641164+00:22:46.780 --> 00:22:47.780
11651165+think about.
11661166+11671167+292
11681168+00:22:47.780 --> 00:22:54.740
11691169+They anchor entire communities into stability and they create permeable respite and sturdy
11701170+11711171+293
11721172+00:22:54.740 --> 00:22:59.980
11731173+shelter for all kinds of weirdos both first up in their fronds and down at the interface
11741174+11751175+294
11761176+00:22:59.980 --> 00:23:03.460
11771177+between the bedrock and the sea.
11781178+11791179+295
11801180+00:23:03.460 --> 00:23:08.220
11811181+So the first thing I want to bring is the idea of anchoring networks and humans.
11821182+11831183+296
11841184+00:23:08.260 --> 00:23:16.260
11851185+I think we could work toward reciprocal integration of rich sources of human knowledge.
11861186+11871187+297
11881188+00:23:16.260 --> 00:23:20.820
11891189+We know that news organizations have tried to adapt to the distribution changes that
11901190+11911191+298
11921192+00:23:20.820 --> 00:23:26.300
11931193+our networks have forced on them but the network's needs and affordances keep shifting so like
11941194+11951195+299
11961196+00:23:26.300 --> 00:23:31.020
11971197+getting good at SEO worked for a while with constant recalibration and then AI summaries
11981198+11991199+300
12001200+00:23:31.020 --> 00:23:37.200
12011201+have just cratered that experience for news orgs which is going to shut down newsrooms
12021202+12031203+301
12041204+00:23:37.200 --> 00:23:39.480
12051205+and already is.
12061206+12071207+302
12081208+00:23:39.480 --> 00:23:43.700
12091209+Getting integrated into social platforms worked pretty well until meta's properties started
12101210+12111211+303
12121212+00:23:43.700 --> 00:23:48.240
12131213+de-prioritizing news and Twitter turned into X and started hiding links.
12141214+12151215+304
12161216+00:23:48.240 --> 00:23:53.120
12171217+And I know that folks here today are psyched about getting journalists and news orgs onto
12181218+12191219+305
12201220+00:23:53.120 --> 00:23:57.400
12211221+the protocol but we're going to have to make it worth their while and demonstrate that
12221222+12231223+306
12241224+00:23:57.400 --> 00:24:02.520
12251225+there's a long game here that's going to be beneficial to them rather than a short period
12261226+12271227+307
12281228+00:24:02.520 --> 00:24:08.720
12291229+of reciprocity followed by a shift to either extraction or exclusion.
12301230+12311231+308
12321232+00:24:08.720 --> 00:24:11.940
12331233+And part of that is going to be based on whether or not people in the protocol are actually
12341234+12351235+309
12361236+00:24:11.940 --> 00:24:14.620
12371237+engaging with news and knowledge.
12381238+12391239+310
12401240+00:24:14.620 --> 00:24:19.840
12411241+As I suspect, although I have no data for this, is higher on blue sky and various other
12421242+12431243+311
12441244+00:24:19.840 --> 00:24:25.160
12451245+skies than on other platforms.
12461246+12471247+312
12481248+00:24:25.160 --> 00:24:32.080
12491249+And also we need to tell whether people in the protocol or encourage people in the protocol
12501250+12511251+313
12521252+00:24:32.200 --> 00:24:37.040
12531253+are engaging with that rather than treating links and headlines like trading cards to
12541254+12551255+314
12561256+00:24:37.040 --> 00:24:42.080
12571257+signal membership or confirm the truth of our already stated positions.
12581258+12591259+315
12601260+00:24:42.080 --> 00:24:48.520
12611261+So this is a long way to say we should try to get people to actually read what they're
12621262+12631263+316
12641264+00:24:48.520 --> 00:24:52.280
12651265+sharing.
12661266+12671267+317
12681268+00:24:52.280 --> 00:24:54.960
12691269+And the current state there is not great.
12701270+12711271+318
12721272+00:24:54.960 --> 00:24:58.200
12731273+Nature analysis of 35 billion Facebook posts.
12741274+12751275+319
12761276+00:24:58.200 --> 00:25:04.680
12771277+I know it's Facebook but that had links showed that three quarters of the time people shared
12781278+12791279+320
12801280+00:25:04.680 --> 00:25:05.680
12811281+links.
12821282+12831283+321
12841284+00:25:05.680 --> 00:25:10.640
12851285+They hadn't clicked through let alone read the article they were sharing.
12861286+12871287+322
12881288+00:25:10.640 --> 00:25:16.000
12891289+And the presence of sharing cues, just the existence of a cue, might you want to share
12901290+12911291+323
12921292+00:25:16.000 --> 00:25:17.040
12931293+this?
12941294+12951295+324
12961296+00:25:17.040 --> 00:25:23.200
12971297+Also makes people measurably worse at discerning true things from false things.
12981298+12991299+325
13001300+00:25:23.200 --> 00:25:29.560
13011301+Or as the researchers put it, the social media context interferes with truth discernment.
13021302+13031303+326
13041304+00:25:29.560 --> 00:25:34.960
13051305+So social media encounters as we see them on the big centralized platforms seem to push
13061306+13071307+327
13081308+00:25:34.960 --> 00:25:37.440
13091309+interactions with news.
13101310+13111311+328
13121312+00:25:37.440 --> 00:25:43.000
13131313+Not just from knowing things to knowing kind of about things, but from knowing about things
13141314+13151315+329
13161316+00:25:43.000 --> 00:25:46.480
13171317+to signaling that we might know about them.
13181318+13191319+330
13201320+00:25:46.480 --> 00:25:49.480
13211321+Which is getting really far away from the knowledge itself.
13221322+13231323+331
13241324+00:25:49.480 --> 00:25:52.800
13251325+Which I mean I've been on the internet, that tracks.
13261326+13271327+332
13281328+00:25:52.800 --> 00:25:58.080
13291329+If we wanted to move toward better integration and more reciprocity with knowledge collecting
13301330+13311331+333
13321332+00:25:58.080 --> 00:26:05.160
13331333+institutions because if no one's clicking it's not helping them, what would we do?
13341334+13351335+334
13361336+00:26:05.160 --> 00:26:12.760
13371337+So for blue sky and black sky and north sky and probably various other skies, y'all are
13381338+13391339+335
13401340+00:26:12.760 --> 00:26:17.840
13411341+already ahead by not doing things that are actively hostile to knowledge.
13421342+13431343+336
13441344+00:26:17.840 --> 00:26:22.600
13451345+Like hiding links and deprioritizing news and analysis.
13461346+13471347+337
13481348+00:26:22.600 --> 00:26:26.880
13491349+There's probably also room to think about some remediation.
13501350+13511351+338
13521352+00:26:26.880 --> 00:26:32.480
13531353+I will start here with my least favorite intervention, which is the nudge.
13541354+13551355+339
13561356+00:26:32.480 --> 00:26:36.080
13571357+The nudge to read before sharing I find this highly annoying.
13581358+13591359+340
13601360+00:26:36.080 --> 00:26:41.280
13611361+But I think it's interesting that it does seem to change behavior, at least in the short
13621362+13631363+341
13641364+00:26:41.280 --> 00:26:42.280
13651365+term.
13661366+13671367+342
13681368+00:26:42.280 --> 00:26:46.440
13691369+Twitter's comms team claimed in 2020 that when they did a little, want to read this
13701370+13711371+343
13721372+00:26:46.440 --> 00:26:51.500
13731373+before retweeting it, nudge, they got a 40% boost in article opening.
13741374+13751375+344
13761376+00:26:51.500 --> 00:26:53.820
13771377+We don't know what went into people's brains, but we know that happened.
13781378+13791379+345
13801380+00:26:53.820 --> 00:26:55.620
13811381+That's not nothing.
13821382+13831383+346
13841384+00:26:55.620 --> 00:27:00.780
13851385+And as skeptical as I am about nudges, all friction is perhaps not terrible.
13861386+13871387+347
13881388+00:27:00.780 --> 00:27:06.540
13891389+There's a study from just this past winter that looked quite carefully at friction, the
13901390+13911391+348
13921392+00:27:06.540 --> 00:27:13.220
13931393+nudge, and found that a very, very light touch of friction, so just a very occasional intervention,
13941394+13951395+349
13961396+00:27:13.220 --> 00:27:17.620
13971397+plus a tiny quiz, really improved information quality.
13981398+13991399+350
14001400+00:27:17.620 --> 00:27:24.260
14011401+Like a third, just doing the friction made people stop sharing things as much.
14021402+14031403+351
14041404+00:27:24.260 --> 00:27:27.220
14051405+It didn't improve the quality of the knowledge on the network.
14061406+14071407+352
14081408+00:27:27.220 --> 00:27:32.420
14091409+But the share friction plus a little bit of engaging analytical thought actually increased
14101410+14111411+353
14121412+00:27:32.420 --> 00:27:37.580
14131413+the quality according to the study's measures by about a third, which is so much.
14141414+14151415+354
14161416+00:27:37.580 --> 00:27:43.660
14171417+But I should say the caveat is that this study was done using a simulation.
14181418+14191419+355
14201420+00:27:43.660 --> 00:27:50.940
14211421+So it's kind of like reading the headline that's like, scientists cure cancer in mice.
14221422+14231423+356
14241424+00:27:50.940 --> 00:27:52.780
14251425+But even as with the mouse effect, right?
14261426+14271427+357
14281428+00:27:52.780 --> 00:27:55.620
14291429+They're interesting mice.
14301430+14311431+358
14321432+00:27:55.620 --> 00:28:01.260
14331433+So adding friction is never going to fully reverse the directional movement of a system
14341434+14351435+359
14361436+00:28:01.260 --> 00:28:08.800
14371437+that leans toward virality and toward first-mover advantage and toward signaling versus understanding.
14381438+14391439+360
14401440+00:28:08.800 --> 00:28:13.620
14411441+So what would it look like to move that problem upstream?
14421442+14431443+361
14441444+00:28:13.620 --> 00:28:17.860
14451445+What would a system look like that actually centrally attended to community knowledge
14461446+14471447+362
14481448+00:28:17.860 --> 00:28:19.540
14491449+and reciprocity?
14501450+14511451+363
14521452+00:28:19.540 --> 00:28:24.260
14531453+What would it do when a user in such a system encountered something that appears to be,
14541454+14551455+364
14561456+00:28:24.260 --> 00:28:28.840
14571457+for instance, news or analysis?
14581458+14591459+365
14601460+00:28:28.840 --> 00:28:33.460
14611461+Maybe it would open an article or the video or whatever and suggest finding a good clip
14621462+14631463+366
14641464+00:28:33.460 --> 00:28:37.580
14651465+or a quote to share, which could improve the quality of shared information and perhaps
14661466+14671467+367
14681468+00:28:37.580 --> 00:28:40.060
14691469+get more of it into the sharer's brains.
14701470+14711471+368
14721472+00:28:40.060 --> 00:28:44.420
14731473+Maybe it would automatically add sources mentioned in post that people bookmark or
14741474+14751475+369
14761476+00:28:44.420 --> 00:28:50.340
14771477+a fave to a reading or watch list that they can return to to help fight the anxiety-producing
14781478+14791479+370
14801480+00:28:50.340 --> 00:28:54.460
14811481+ephemerality that keeps information seekers doom-scrolling.
14821482+14831483+371
14841484+00:28:54.460 --> 00:29:00.220
14851485+Maybe it could offer a tiny, even machine-generated summary and some context cues about the source
14861486+14871487+372
14881488+00:29:00.220 --> 00:29:05.300
14891489+that provide enough trust signal from people with broadly strong reputations for a given
14901490+14911491+373
14921492+00:29:05.300 --> 00:29:10.540
14931493+local cluster to pull attention away from worthless content farms and misinfo peddlers
14941494+14951495+374
14961496+00:29:10.540 --> 00:29:14.500
14971497+and toward journalists and creators with integrity.
14981498+14991499+375
15001500+00:29:14.500 --> 00:29:19.420
15011501+Or maybe, God help us, it would ask us to answer a question about the material in the
15021502+15031503+376
15041504+00:29:19.420 --> 00:29:22.180
15051505+article, which I actually, I've flipped.
15061506+15071507+377
15081508+00:29:22.180 --> 00:29:23.180
15091509+I'd love that.
15101510+15111511+378
15121512+00:29:23.180 --> 00:29:29.180
15131513+I'm fully ready to leaderboard knowledge as a countermeasure to the current mode of leaderboarding,
15141514+15151515+379
15161516+00:29:29.180 --> 00:29:30.900
15171517+the lowest common denominator.
15181518+15191519+380
15201520+00:29:30.900 --> 00:29:31.900
15211521+Let's go.
15221522+15231523+381
15241524+00:29:32.580 --> 00:29:36.580
15251525+The right move obviously depends on a specific project's values and goals.
15261526+15271527+382
15281528+00:29:36.580 --> 00:29:41.900
15291529+I think this is the right level to consider it back in the architecture of a social internet
15301530+15311531+383
15321532+00:29:41.900 --> 00:29:46.260
15331533+system rather than as aftermarket fixes.
15341534+15351535+384
15361536+00:29:46.260 --> 00:29:53.020
15371537+Having seen yesterday's science track, those folks are way ahead of everyone else on this.
15381538+15391539+385
15401540+00:29:53.020 --> 00:29:59.420
15411541+It's so good.
15421542+15431543+386
15441544+00:29:59.420 --> 00:30:02.540
15451545+Next cool kelp fact.
15461546+15471547+387
15481548+00:30:02.540 --> 00:30:08.380
15491549+Kelp makes slower, calmer zones.
15501550+15511551+388
15521552+00:30:08.380 --> 00:30:15.580
15531553+For us, I think we could make slower, calmer zones that help our people keep them from
15541554+15551555+389
15561556+00:30:15.580 --> 00:30:19.180
15571557+being overwhelmed by network tides.
15581558+15591559+390
15601560+00:30:19.180 --> 00:30:21.940
15611561+There are two ways to look at this.
15621562+15631563+391
15641564+00:30:21.940 --> 00:30:25.940
15651565+First I want to say, kelp forests are super bio-diverse.
15661566+15671567+392
15681568+00:30:25.940 --> 00:30:27.740
15691569+They're a very rich community.
15701570+15711571+393
15721572+00:30:27.740 --> 00:30:35.340
15731573+They're up there with coral reefs on the biodiversity and what we call productivity
15741574+15751575+394
15761576+00:30:35.340 --> 00:30:36.780
15771577+as a system.
15781578+15791579+395
15801580+00:30:36.780 --> 00:30:43.900
15811581+They do two things roughly that help them be such an important sheltering force.
15821582+15831583+396
15841584+00:30:43.900 --> 00:30:50.260
15851585+The first is up in the water column where the kelp fronds and blades calm and slow and
15861586+15871587+397
15881588+00:30:50.260 --> 00:30:55.900
15891589+deflects the very strong currents that surround kelp forests, creating calmer and less turbulent
15901590+15911591+398
15921592+00:30:55.900 --> 00:30:59.140
15931593+spaces where other organisms can thrive.
15941594+15951595+399
15961596+00:30:59.140 --> 00:31:02.100
15971597+The second is down in the hold fasts themselves.
15981598+15991599+400
16001600+00:31:02.100 --> 00:31:07.180
16011601+The structures that wrap around and latch on to the sturdiest anchor they can are actually
16021602+16031603+401
16041604+00:31:07.180 --> 00:31:10.380
16051605+the most thriving part of the community.
16061606+16071607+402
16081608+00:31:10.380 --> 00:31:15.900
16091609+They shelter hundreds of mobile and sessile, invertebrate species, so they're like the
16101610+16111611+403
16121612+00:31:15.900 --> 00:31:18.660
16131613+critical infrastructure for kelp busy town.
16141614+16151615+404
16161616+00:31:18.660 --> 00:31:21.700
16171617+I want to take these one at a time.
16181618+16191619+405
16201620+00:31:21.700 --> 00:31:26.820
16211621+First up in the water column where the tides are moving fast, but perhaps our network's
16221622+16231623+406
16241624+00:31:26.820 --> 00:31:34.940
16251625+affordances could provide a little bit of cognitive and emotional traffic calming.
16261626+16271627+407
16281628+00:31:34.940 --> 00:31:38.660
16291629+Something I've been watching for a long time and especially this year is that every time
16301630+16311631+408
16321632+00:31:38.660 --> 00:31:43.900
16331633+something happens, whether it's someone dropping an album or a natural disaster happening or
16341634+16351635+409
16361636+00:31:43.900 --> 00:31:50.660
16371637+ice shooting someone in my country, there is an instant hyper-proliferation of chatter
16381638+16391639+410
16401640+00:31:50.660 --> 00:31:55.620
16411641+about it on the networks that comes online around the same time as live posting and eyewitness
16421642+16431643+411
16441644+00:31:55.620 --> 00:31:58.260
16451645+video or spot analysis.
16461646+16471647+412
16481648+00:31:58.260 --> 00:32:02.520
16491649+Then you get the local and specialist coverage and then you get the national and international
16501650+16511651+413
16521652+00:32:02.520 --> 00:32:07.220
16531653+coverage and the next morning the think tanks wake up and get moving on it.
16541654+16551655+414
16561656+00:32:07.220 --> 00:32:12.340
16571657+This is always expanding, but we don't really have a corresponding moment of synthesis or
16581658+16591659+415
16601660+00:32:12.340 --> 00:32:20.620
16611661+contraction of all of that stuff into something that is intelligible to a reasonable person.
16621662+16631663+416
16641664+00:32:20.700 --> 00:32:26.380
16651665+This is wild to me, but we can't just go to our networks or really anywhere, speaking
16661666+16671667+417
16681668+00:32:26.380 --> 00:32:31.580
16691669+in general knowledge terms, I understand the scientists may have this better, and find
16701670+16711671+418
16721672+00:32:31.580 --> 00:32:38.300
16731673+just an event node that connects all the sources of relevant information and the opinions of
16741674+16751675+419
16761676+00:32:38.300 --> 00:32:41.100
16771677+people we care about in one place.
16781678+16791679+420
16801680+00:32:41.100 --> 00:32:45.740
16811681+We have reporters who can do this high-speed gallop through the relevant context at the
16821682+16831683+421
16841684+00:32:45.740 --> 00:32:49.300
16851685+beginning of every article they write and then the next day they wake up and they write
16861686+16871687+422
16881688+00:32:49.300 --> 00:32:50.580
16891689+another article.
16901690+16911691+423
16921692+00:32:50.580 --> 00:32:52.220
16931693+It's all super atomized.
16941694+16951695+424
16961696+00:32:52.220 --> 00:32:54.820
16971697+There's nothing to bring it together.
16981698+16991699+425
17001700+00:32:54.820 --> 00:33:00.340
17011701+If you want to build a knowledge molecule, you have to do it with your own brain or you
17021702+17031703+426
17041704+00:33:00.340 --> 00:33:07.500
17051705+can glom on to someone in the creator or interpreter class, some of whom are genuinely world-class,
17061706+17071707+427
17081708+00:33:07.500 --> 00:33:13.700
17091709+super gifted analysts and some of whom are basically semi-deranged street preachers and
17101710+17111711+428
17121712+00:33:13.700 --> 00:33:18.020
17131713+not everyone can tell the difference all the time.
17141714+17151715+429
17161716+00:33:18.140 --> 00:33:23.460
17171717+Uplifting and reciprocating our gifted interpreters is necessary and I hope we're going to hear
17181718+17191719+430
17201720+00:33:23.460 --> 00:33:26.140
17211721+more about that this weekend.
17221722+17231723+431
17241724+00:33:26.140 --> 00:33:31.380
17251725+But it also seems to me that we really could get the machines involved in bundling up all
17261726+17271727+432
17281728+00:33:31.380 --> 00:33:36.180
17291729+of this noise into intelligible collections of material that we could actually learn through
17301730+17311731+433
17321732+00:33:36.180 --> 00:33:41.100
17331733+and refer to so that it's not so insistently ephemeral and scattered.
17341734+17351735+434
17361736+00:33:41.100 --> 00:33:47.180
17371737+And if this sounds like resuscitating the dream of structured data, it kind of is.
17381738+17391739+435
17401740+00:33:47.180 --> 00:33:56.660
17411741+But I want to put it in service of ordinary people using tech we didn't have before and
17421742+17431743+436
17441744+00:33:56.660 --> 00:34:03.020
17451745+signals from social that can make this stuff more than like a terrible index.
17461746+17471747+437
17481748+00:34:03.020 --> 00:34:07.540
17491749+And it's odd to me that we have all of these recommendation algorithms working in variously
17501750+17511751+438
17521752+00:34:07.540 --> 00:34:13.540
17531753+pro and antisocial ways, but as far as I can tell, we haven't effectively brought our
17541754+17551755+439
17561756+00:34:13.540 --> 00:34:20.500
17571757+social tech to the work of orientation or reorientation in any structured way.
17581758+17591759+440
17601760+00:34:20.500 --> 00:34:26.740
17611761+As again the science cluster is ably demonstrating, we can develop features that cluster and amplify
17621762+17631763+441
17641764+00:34:26.740 --> 00:34:28.700
17651765+the knowledge people assemble.
17661766+17671767+442
17681768+00:34:28.700 --> 00:34:33.340
17691769+We can do it with machine learning and human curation, probably both of them.
17701770+17711771+443
17721772+00:34:33.340 --> 00:34:38.500
17731773+We could give our communities the tools to do this for their areas of interest or their
17741774+17751775+444
17761776+00:34:38.500 --> 00:34:41.580
17771777+physical localities or their specializations.
17781778+17791779+445
17801780+00:34:41.580 --> 00:34:48.940
17811781+And we could extend existing work on community moderation to rule certain knowledge associations
17821782+17831783+446
17841784+00:34:48.940 --> 00:34:50.500
17851785+in or out.
17861786+17871787+447
17881788+00:34:50.500 --> 00:34:55.400
17891789+But if we only do this work for highly motivated specialists, we're missing the chance to bring
17901790+17911791+448
17921792+00:34:55.400 --> 00:34:58.460
17931793+that fire to everyone else.
17941794+17951795+449
17961796+00:34:58.460 --> 00:35:02.820
17971797+And I will now embarrass my old journalism world friend Tyler Fisher and say that I think
17981798+17991799+450
18001800+00:35:02.820 --> 00:35:07.100
18011801+his work with CIL is admirable and a really good start towards this.
18021802+18031803+451
18041804+00:35:07.100 --> 00:35:12.140
18051805+And some things about the next area I want to talk about, which is mitigating the cognitive
18061806+18071807+452
18081808+00:35:12.140 --> 00:35:21.140
18091809+and emotional effects of processing so many different emotional registers in one place.
18101810+18111811+453
18121812+00:35:21.140 --> 00:35:28.540
18131813+I think we could give our embodied human selves a break if we were to find a way to split
18141814+18151815+454
18161816+00:35:28.540 --> 00:35:34.260
18171817+rhetorical registers at the point of reader viewer contact.
18181818+18191819+455
18201820+00:35:34.260 --> 00:35:38.500
18211821+We go online because we're bored or we're lonely or we want to see what people are talking
18221822+18231823+456
18241824+00:35:38.500 --> 00:35:43.060
18251825+about either in a professional or a very unprofessional way.
18261826+18271827+457
18281828+00:35:43.060 --> 00:35:49.900
18291829+But what most of us get when we come online is this amazing puree of jokes and infighting
18301830+18311831+458
18321832+00:35:49.900 --> 00:35:55.920
18331833+and scary news and hustling and entertaining nonsense and dumb memes and video evidence
18341834+18351835+459
18361836+00:35:55.920 --> 00:35:59.240
18371837+of war crimes.
18381838+18391839+460
18401840+00:35:59.240 --> 00:36:02.800
18411841+I think this is genuinely not good for us.
18421842+18431843+461
18441844+00:36:02.800 --> 00:36:07.680
18451845+There's a lot of evidence about this, but honestly, it's kind of weird.
18461846+18471847+462
18481848+00:36:07.680 --> 00:36:10.040
18491849+I wanted it to be stronger.
18501850+18511851+463
18521852+00:36:10.040 --> 00:36:14.320
18531853+There is a study about how rough context switching is for our ability to understand things, but
18541854+18551855+464
18561856+00:36:14.320 --> 00:36:15.940
18571857+it's mostly focused on format.
18581858+18591859+465
18601860+00:36:15.940 --> 00:36:22.080
18611861+So it's hard to go from video to text, which is fine, but not the same thing.
18621862+18631863+466
18641864+00:36:22.080 --> 00:36:28.480
18651865+There's this really fun paper with three studies from a couple of professors of advertising
18661866+18671867+467
18681868+00:36:28.480 --> 00:36:34.600
18691869+that found that scrolling Instagram for 30 seconds essentially makes us weak to ads,
18701870+18711871+468
18721872+00:36:34.600 --> 00:36:39.240
18731873+but especially to ads that have high social signals.
18741874+18751875+469
18761876+00:36:39.240 --> 00:36:43.880
18771877+So we're switching from a more analytical mode to heuristic processing, and if a lot
18781878+18791879+470
18801880+00:36:43.880 --> 00:36:49.100
18811881+of people appear to have liked the thing, we're more likely to just buy whatever nonsense
18821882+18831883+471
18841884+00:36:49.100 --> 00:36:51.000
18851885+it is.
18861886+18871887+472
18881888+00:36:51.020 --> 00:36:56.160
18891889+The same paper also includes another experiment showing that people who scroll their social
18901890+18911891+473
18921892+00:36:56.160 --> 00:37:01.540
18931893+feed for a very brief period also immediately got worse at math and sentence diagramming.
18941894+18951895+474
18961896+00:37:01.540 --> 00:37:02.540
18971897+So that's fun.
18981898+18991899+475
19001900+00:37:02.540 --> 00:37:05.160
19011901+But that's just one paper.
19021902+19031903+476
19041904+00:37:05.160 --> 00:37:09.160
19051905+And there are a few others, but they're not necessarily generalizable, so I want to be
19061906+19071907+477
19081908+00:37:09.160 --> 00:37:10.160
19091909+careful.
19101910+19111911+478
19121912+00:37:10.160 --> 00:37:13.940
19131913+I think we do have two really helpful bodies here of indirect evidence.
19141914+19151915+479
19161916+00:37:13.940 --> 00:37:20.480
19171917+One is the quite beefy body of work on transportive communication, stuff that transports us, which
19181918+19191919+480
19201920+00:37:20.480 --> 00:37:26.280
19211921+is behind a bunch of the power of storytelling stuff.
19221922+19231923+481
19241924+00:37:26.280 --> 00:37:32.200
19251925+But essentially things that feel transportive, including a lot of first-person testimony,
19261926+19271927+482
19281928+00:37:32.200 --> 00:37:35.400
19291929+really reduce skepticism and analytical thought.
19301930+19311931+483
19321932+00:37:35.400 --> 00:37:39.760
19331933+And there's a solid pool of evidence and theory there, kind of just waiting for someone to
19341934+19351935+484
19361936+00:37:39.760 --> 00:37:43.800
19371937+step in and work on the effects of trying to move between the transportive and just
19381938+19391939+485
19401940+00:37:43.800 --> 00:37:49.720
19411941+quotidian newsy stuff registers in rapid succession over and over again in the same
19421942+19431943+486
19441944+00:37:49.720 --> 00:37:51.920
19451945+place.
19461946+19471947+487
19481948+00:37:51.920 --> 00:37:57.720
19491949+But the second thing we have is, again, the evidence of our senses.
19501950+19511951+488
19521952+00:37:57.720 --> 00:38:04.000
19531953+I think there are a few people having a good time in the political news zone on the social
19541954+19551955+489
19561956+00:38:04.000 --> 00:38:05.600
19571957+internet.
19581958+19591959+490
19601960+00:38:05.600 --> 00:38:10.840
19611961+I think there are journalism and policy people who mostly treat the networks like Brief Mean
19621962+19631963+491
19641964+00:38:10.840 --> 00:38:14.880
19651965+LinkedIn, which works out well for them.
19661966+19671967+492
19681968+00:38:14.880 --> 00:38:20.320
19691969+And then there are a lot of people, including people in positions of extraordinary power,
19701970+19711971+493
19721972+00:38:20.320 --> 00:38:24.840
19731973+who treat the experience of modern life and the suffering of others as a spectator blood
19741974+19751975+494
19761976+00:38:24.840 --> 00:38:26.040
19771977+sport.
19781978+19791979+495
19801980+00:38:26.040 --> 00:38:31.140
19811981+And I do not think that that mode in particular is good or even neutral.
19821982+19831983+496
19841984+00:38:31.140 --> 00:38:36.080
19851985+I think we will not fix the problems with our governance if we continue to allow it
19861986+19871987+497
19881988+00:38:36.080 --> 00:38:39.920
19891989+to metastasize through our civic life.
19901990+19911991+498
19921992+00:38:40.000 --> 00:38:44.540
19931993+And for the rest of us, this stuff is just exhausting and alienating, and it does things
19941994+19951995+499
19961996+00:38:44.540 --> 00:38:46.640
19971997+to our brains that we don't like.
19981998+19991999+500
20002000+00:38:46.640 --> 00:38:50.280
20012001+And I want to briefly bring in Joshua Myrowitz.
20022002+20032003+501
20042004+00:38:50.280 --> 00:38:52.840
20052005+Do we have other Myrowitz heads in the crowd?
20062006+20072007+502
20082008+00:38:52.840 --> 00:38:54.360
20092009+He wrote No Sense a Place in 1986.
20102010+20112011+503
20122012+00:38:54.360 --> 00:38:58.360
20132013+Oh, my God, I'm going to write so many blog posts about Joshua Myrowitz for you.
20142014+20152015+504
20162016+00:38:58.360 --> 00:39:04.680
20172017+So he's this media scholar whose ideas informed Dana Boyd and Alice Marwick's work on context
20182018+20192019+505
20202020+00:39:04.680 --> 00:39:05.680
20212021+collapse.
20222022+20232023+506
20242024+00:39:06.440 --> 00:39:14.480
20252025+But he was writing in the mid 80s, which makes this a little unsettling to me.
20262026+20272027+507
20282028+00:39:14.480 --> 00:39:22.120
20292029+He wrote, the current merging of situations, by which he means places, doesn't give us
20302030+20312031+508
20322032+00:39:22.120 --> 00:39:27.960
20332033+a sum of what we had before, but rather new synthesized behaviors that are qualitatively
20342034+20352035+509
20362036+00:39:27.960 --> 00:39:29.000
20372037+different.
20382038+20392039+510
20402040+00:39:29.000 --> 00:39:33.680
20412041+If we celebrate our child's wedding in an isolated situation where it is the sole experience
20422042+20432043+511
20442044+00:39:33.760 --> 00:39:37.160
20452045+of the day, then our joy may be unbounded.
20462046+20472047+512
20482048+00:39:37.160 --> 00:39:41.960
20492049+But when on our way to the wedding, we hear over the car radio of a devastating earthquake
20502050+20512051+513
20522052+00:39:41.960 --> 00:39:46.920
20532053+or the death of a popular entertainer or the assassination of a political figure, we not
20542054+20552055+514
20562056+00:39:46.920 --> 00:39:54.240
20572057+only lose our ability to rejoice fully, but also our ability to mourn deeply.
20582058+20592059+515
20602060+00:39:54.240 --> 00:39:59.280
20612061+Unbounded joy and unmitigated misery cannot coexist in the same place and time.
20622062+20632063+516
20642064+00:39:59.280 --> 00:40:06.320
20652065+The situations merge, the hot flush and the icy stare blend into a middle region cool.
20662066+20672067+517
20682068+00:40:06.320 --> 00:40:09.680
20692069+And for Myrowitz's cool, I would substitute numb.
20702070+20712071+518
20722072+00:40:11.680 --> 00:40:17.040
20732073+Now some communities in the decentralized space have tried to deal with this by asking
20742074+20752075+519
20762076+00:40:17.040 --> 00:40:22.080
20772077+people to either content warn their posts based on the whole panoply of their readers'
20782078+20792079+520
20802080+00:40:22.080 --> 00:40:26.400
20812081+potential sensitivities or to divide their expression into separate accounts.
20822082+20832083+521
20842084+00:40:26.880 --> 00:40:30.480
20852085+And I think these people are working from good instincts, but from the wrong end of
20862086+20872087+522
20882088+00:40:30.480 --> 00:40:35.800
20892089+the problem, given how alienating and anti-convivial it is to be instructed to preprocess your
20902090+20912091+523
20922092+00:40:35.800 --> 00:40:39.320
20932093+emotional utterances for people you may not even be speaking to.
20942094+20952095+524
20962096+00:40:39.320 --> 00:40:43.240
20972097+But I think we could make this work on the other end.
20982098+20992099+525
21002100+00:40:43.240 --> 00:40:47.680
21012101+And I want to say if we do it successfully, it will be because we recognize that we cannot
21022102+21032103+526
21042104+00:40:47.680 --> 00:40:54.880
21052105+rely on like civility forward sentiment analysis that for instance reads black Americans speaking
21062106+21072107+527
21082108+00:40:54.880 --> 00:40:58.640
21092109+in a neutral register as aggressive.
21102110+21112111+528
21122112+00:40:58.640 --> 00:41:03.400
21132113+Doing it well would involve grounding in community and doing a lot of training work which would
21142114+21152115+529
21162116+00:41:03.400 --> 00:41:06.320
21172117+have to be shared across a willing group.
21182118+21192119+530
21202120+00:41:06.320 --> 00:41:08.680
21212121+I don't want to undersell the difficulty.
21222122+21232123+531
21242124+00:41:08.680 --> 00:41:16.000
21252125+But being able to come online and see a mourning experience that starts with like, hi, friends,
21262126+21272127+532
21282128+00:41:16.000 --> 00:41:20.360
21292129+it's puppy pictures and selfies and not have the hard news come online until like after
21302130+21312131+533
21322132+00:41:20.360 --> 00:41:22.720
21332133+the caffeine kicks in.
21342134+21352135+534
21362136+00:41:22.800 --> 00:41:24.880
21372137+I think this would be transformative.
21382138+21392139+535
21402140+00:41:24.880 --> 00:41:29.400
21412141+And like for me when I'm working, I would love to be able to filter in posts that match
21422142+21432143+536
21442144+00:41:29.400 --> 00:41:36.880
21452145+the register I'm working in and hold the puppies and beefs for later.
21462146+21472147+537
21482148+00:41:36.880 --> 00:41:42.680
21492149+I would like to think about this less as feed switching and more like a radio dial.
21502150+21512151+538
21522152+00:41:42.680 --> 00:41:47.640
21532153+Always the people that we like, but with the option to filter different registers in and
21542154+21552155+539
21562156+00:41:47.640 --> 00:41:52.440
21572157+out to suit different emotional capacities and allow for some separation.
21582158+21592159+540
21602160+00:41:52.960 --> 00:41:58.040
21612161+So those are some thoughts about working on this stuff in kind of lateral ways up in the
21622162+21632163+541
21642164+00:41:58.040 --> 00:42:00.240
21652165+big open world of the water column.
21662166+21672167+542
21682168+00:42:00.240 --> 00:42:03.240
21692169+And now I want to talk about the other thing.
21702170+21712171+543
21722172+00:42:03.240 --> 00:42:08.400
21732173+The most vibrant part of the kelp forest is in the hold fasts which act like roots but
21742174+21752175+544
21762176+00:42:08.400 --> 00:42:12.160
21772177+kind of in reverse instead of pulling resources out of the soil.
21782178+21792179+545
21802180+00:42:12.160 --> 00:42:17.320
21812181+They push benefits out to every living thing around them by providing a firmly anchored
21822182+21832183+546
21842184+00:42:17.320 --> 00:42:24.160
21852185+structure that offers complex and variegated shelter for both the charismatic invertebrates
21862186+21872187+547
21882188+00:42:24.160 --> 00:42:29.480
21892189+with all the little flowy parts and also the tiny snails and worms and all the other beloved
21902190+21912191+548
21922192+00:42:29.480 --> 00:42:32.240
21932193+lobes of the kelp forest.
21942194+21952195+549
21962196+00:42:32.240 --> 00:42:37.840
21972197+So one more Joshua Myrowitz quote from 1986.
21982198+21992199+550
22002200+00:42:37.840 --> 00:42:42.640
22012201+For every moment of our lives there are things happening someplace that would upset us, that
22022202+22032203+551
22042204+00:42:42.640 --> 00:42:46.760
22052205+would involve us, that would drain our energies and engage our feelings.
22062206+22072207+552
22082208+00:42:46.760 --> 00:42:50.440
22092209+There are more things that if present in our view we would feel compelled to respond
22102210+22112211+553
22122212+00:42:50.440 --> 00:42:56.560
22132213+to or do something about than could possibly fit into the same experience of a single lifetime.
22142214+22152215+554
22162216+00:42:56.560 --> 00:43:01.720
22172217+Situation segregation, however, acts as a psychosocial shock absorber.
22182218+22192219+555
22202220+00:43:01.720 --> 00:43:06.480
22212221+By selectively exposing ourselves to events and other people we control the flow of our
22222222+22232223+556
22242224+00:43:06.480 --> 00:43:08.480
22252225+actions and emotions.
22262226+22272227+557
22282228+00:43:08.480 --> 00:43:14.260
22292229+Compassion, empathy, and even ethics may be more situationally bound than we often care
22302230+22312231+558
22322232+00:43:14.260 --> 00:43:15.260
22332233+to think.
22342234+22352235+559
22362236+00:43:15.740 --> 00:43:18.140
22372237+I love this guy.
22382238+22392239+560
22402240+00:43:18.140 --> 00:43:22.700
22412241+I feel this in the way that I participate in the online world.
22422242+22432243+561
22442244+00:43:22.700 --> 00:43:27.860
22452245+I think we need space to think and feel together that isn't always fully in the current and
22462246+22472247+562
22482248+00:43:27.860 --> 00:43:33.380
22492249+I feel like probably everybody here gets this.
22502250+22512251+563
22522252+00:43:33.380 --> 00:43:37.500
22532253+It also produces the benefit, also I think we understand the benefit of not having to
22542254+22552255+564
22562256+00:43:37.500 --> 00:43:42.980
22572257+send people off protocol into discords and group chats whenever they need to do that
22582258+22592259+565
22602260+00:43:42.980 --> 00:43:44.380
22612261+work.
22622262+22632263+566
22642264+00:43:44.380 --> 00:43:49.340
22652265+The spaces work that the Blue Sky team has been publishing about is going to unlock so
22662266+22672267+567
22682268+00:43:49.340 --> 00:43:53.260
22692269+many affordances for pro social things that go well beyond private accounts.
22702270+22712271+568
22722272+00:43:53.260 --> 00:43:57.220
22732273+I cannot tell you how excited I am about this.
22742274+22752275+569
22762276+00:43:57.220 --> 00:44:02.300
22772277+I also want to make a note, I think letting people huddle up inside an anchoring structure
22782278+22792279+570
22802280+00:44:02.300 --> 00:44:09.300
22812281+also undercuts both the need for and the value of mobbing as territorial defense.
22822282+22832283+571
22842284+00:44:09.300 --> 00:44:13.860
22852285+I think that's something very real on the networks right now and that also came up in
22862286+22872287+572
22882288+00:44:13.860 --> 00:44:15.860
22892289+the science track yesterday.
22902290+22912291+573
22922292+00:44:15.860 --> 00:44:21.460
22932293+If you and your community have a cave or a building or a little sheltering trees to step
22942294+22952295+574
22962296+00:44:21.460 --> 00:44:26.820
22972297+into to get out of the broad featureless plane with everyone in it filled with many other
22982298+22992299+575
23002300+00:44:26.820 --> 00:44:32.060
23012301+communities some of whom will always hate you, you're not going to have to constantly
23022302+23032303+576
23042304+00:44:32.060 --> 00:44:38.500
23052305+make up for your lack of shelter by continuously contesting every millimeter of cultural boundary.
23062306+23072307+577
23082308+00:44:38.500 --> 00:44:40.300
23092309+You can just sidestep it.
23102310+23112311+578
23122312+00:44:40.300 --> 00:44:44.900
23132313+This is so low level that I think it's honestly hard to find ways to talk about, but I think
23142314+23152315+579
23162316+00:44:44.900 --> 00:44:48.060
23172317+we have to solve these problems.
23182318+23192319+580
23202320+00:44:48.060 --> 00:44:55.680
23212321+I would like to suggest as a completely unqualified nonanthropologist that the entire known history
23222322+23232323+581
23242324+00:44:55.680 --> 00:45:01.060
23252325+of humans coming together in groups larger than a few families has involved making buildings
23262326+23272327+582
23282328+00:45:01.060 --> 00:45:05.960
23292329+of one kind or another and then elaborating those buildings fairly quickly with rooms
23302330+23312331+583
23322332+00:45:05.960 --> 00:45:10.560
23332333+and divisions because our structures out in the physical world don't just shield us
23342334+23352335+584
23362336+00:45:10.560 --> 00:45:11.560
23372337+from the environment.
23382338+23392339+585
23402340+00:45:11.560 --> 00:45:16.680
23412341+They also give us necessary shelter from each other which probably brings the murder rate
23422342+23432343+586
23442344+00:45:16.680 --> 00:45:21.120
23452345+down among other things.
23462346+23472347+587
23482348+00:45:21.120 --> 00:45:26.700
23492349+I said earlier that I would revisit the illusion of explanatory depth which is essentially
23502350+23512351+588
23522352+00:45:26.700 --> 00:45:32.400
23532353+a pervasive cognitive con that all our brains are running all the time by leading us to
23542354+23552355+589
23562356+00:45:32.400 --> 00:45:37.120
23572357+believe that we understand things about the world that we actually do not.
23582358+23592359+590
23602360+00:45:37.120 --> 00:45:42.960
23612361+We don't know that we don't know until we have to explain something or fix something
23622362+23632363+591
23642364+00:45:42.960 --> 00:45:46.200
23652365+and then it's not there.
23662366+23672367+592
23682368+00:45:46.200 --> 00:45:50.880
23692369+If I had an extra 10 minutes I would absolutely ask you each to turn to the person next to
23702370+23712371+593
23722372+00:45:50.880 --> 00:45:56.120
23732373+you and explain how a flush toilet works.
23742374+23752375+594
23762376+00:45:56.120 --> 00:45:57.640
23772377+I've worked on flush toilets.
23782378+23792379+595
23802380+00:45:57.640 --> 00:45:58.640
23812381+I was so wrong.
23822382+23832383+596
23842384+00:45:58.640 --> 00:46:02.300
23852385+It was very upsetting.
23862386+23872387+597
23882388+00:46:02.300 --> 00:46:08.640
23892389+This is usually okay as long as we have reliable sources to refer back to but it's extremely
23902390+23912391+598
23922392+00:46:08.640 --> 00:46:09.640
23932393+bad when we don't.
23942394+23952395+599
23962396+00:46:09.640 --> 00:46:14.620
23972397+I read a lot about this in the landslide essay and I'll link the relevant research
23982398+23992399+600
24002400+00:46:14.620 --> 00:46:19.960
24012401+but the upshot is that for people who care about knowledge we need to know that we don't
24022402+24032403+601
24042404+00:46:19.960 --> 00:46:25.940
24052405+know very much in our brains actually and that our knowledge is not just embodied but
24062406+24072407+602
24082408+00:46:25.940 --> 00:46:31.180
24092409+also genuinely social and networked which means that the quality of knowledge in our
24102410+24112411+603
24122412+00:46:31.180 --> 00:46:37.840
24132413+networks when it goes down we all get less knowledgeable and we all get less capable
24142414+24152415+604
24162416+00:46:37.840 --> 00:46:41.500
24172417+and I would argue that we all get less free.
24182418+24192419+605
24202420+00:46:41.500 --> 00:46:46.820
24212421+This is why everything I'm suggesting today centres on treating ordinary people as subjects
24222422+24232423+606
24242424+00:46:46.820 --> 00:46:52.380
24252425+with agency who deserve workable access to good information in reasonable environments
24262426+24272427+607
24282428+00:46:52.620 --> 00:46:58.540
24292429+rather than treating them as consumers whose purpose is to be a manipulable object.
24302430+24312431+608
24322432+00:46:58.540 --> 00:47:02.560
24332433+The science folks from yesterday are already demonstrating the protocol can be used to
24342434+24352435+609
24362436+00:47:02.560 --> 00:47:07.740
24372437+do knowledge consolidating and brain preserving work but if we don't bring those goods to
24382438+24392439+610
24402440+00:47:07.740 --> 00:47:13.660
24412441+everyone at all levels we're going to lose our democracies all of which are predicated
24422442+24432443+611
24442444+00:47:13.660 --> 00:47:21.680
24452445+on the existence of at least minimally informed civic community who are subjects with agency.
24462446+24472447+612
24482448+00:47:21.680 --> 00:47:24.720
24492449+So I've got one more cool kelp fact for you.
24502450+24512451+613
24522452+00:47:24.720 --> 00:47:29.080
24532453+At least you'll have the kelp facts even if nothing else carries forward.
24542454+24552455+614
24562456+00:47:29.080 --> 00:47:33.680
24572457+Kelp are way older than we thought until a few years ago we thought they were only 14
24582458+24592459+615
24602460+00:47:33.680 --> 00:47:38.080
24612461+million years old because we found a kelp fossil and it was 14 million years old.
24622462+24632463+616
24642464+00:47:38.080 --> 00:47:43.560
24652465+But then this amateur fossil collector down in Washington state cracked open some rocks
24662466+24672467+617
24682468+00:47:43.560 --> 00:47:48.080
24692469+he found on the beach and found something that looked a lot like a fossilized hold fast.
24702470+24712471+618
24722472+00:47:48.080 --> 00:47:54.640
24732473+So he sent it down to the ancient kelp dating nerds at UC Berkeley and the new fossils were
24742474+24752475+619
24762476+00:47:54.640 --> 00:47:58.480
24772477+around 32 million years old.
24782478+24792479+620
24802480+00:47:58.480 --> 00:48:04.700
24812481+And this is important because it means that the kelp evolved way before all the species
24822482+24832483+621
24842484+00:48:04.700 --> 00:48:09.560
24852485+that now shelter in their fronds and their hold fasts and became a foundation species
24862486+24872487+622
24882488+00:48:09.560 --> 00:48:13.800
24892489+without which all that other life would have been impossible.
24902490+24912491+623
24922492+00:48:13.800 --> 00:48:18.960
24932493+But another way their presence and the affordances they offered bent the future around them in
24942494+24952495+624
24962496+00:48:18.960 --> 00:48:23.320
24972497+ways that we now find beautiful and valuable and good.
24982498+24992499+625
25002500+00:48:23.320 --> 00:48:28.240
25012501+To me the point of working toward knowledge anchoring and against continuous turbulence
25022502+25032503+626
25042504+00:48:28.240 --> 00:48:34.360
25052505+and trouble is not just short term as a respite or a little pocket oasis for us and our friends
25062506+25072507+627
25082508+00:48:34.360 --> 00:48:39.440
25092509+but toward a genuinely more workable way to think and know together.
25102510+25112511+628
25122512+00:48:39.440 --> 00:48:46.240
25132513+Where together is going to include billions of humans and also many forms of machine assistance.
25142514+25152515+629
25162516+00:48:46.240 --> 00:48:52.280
25172517+And this moment is our window for bending the future around our hopes and values that
25182518+25192519+630
25202520+00:48:52.280 --> 00:48:57.560
25212521+cherish knowledge and communal knowing and that orient us toward real remedies for some
25222522+25232523+631
25242524+00:48:57.560 --> 00:49:05.080
25252525+of our most ancient information troubles and pains in service of living together in peace
25262526+25272527+632
25282528+00:49:05.080 --> 00:49:06.080
25292529+and mutual respect.
25302530+25312531+633
25322532+00:49:06.080 --> 00:49:10.080
25332533+Thank you.
25342534+25352535+634
25362536+00:49:37.080 --> 00:49:47.320
25372537+Truly, truly, leaning toward the wrong mic, if you're working on this stuff, if you care
25382538+25392539+635
25402540+00:49:47.320 --> 00:49:49.160
25412541+about working on this stuff, let's talk.
25422542+25432543+636
25442544+00:49:49.160 --> 00:49:50.160
25452545+That's why I'm here.
25462546+25472547+637
25482548+00:49:50.160 --> 00:49:53.800
25492549+I gave this talk so they'd let me in the door.
25502550+25512551+638
25522552+00:49:53.800 --> 00:49:56.720
25532553+But I want to talk to people who are actually trying to fix this.
25542554+25552555+639
25562556+00:49:56.720 --> 00:49:58.720
25572557+Thank you.
25582558+25592559+640
25602560+00:49:58.720 --> 00:49:59.720
25612561+We have no time for Q&A.
25622562+25632563+641
25642564+00:49:59.720 --> 00:50:00.720
25652565+I didn't feel that.
25662566+25672567+642
25682568+00:50:00.720 --> 00:50:01.720
25692569+I want a couple of minutes.
25702570+25712571+643
25722572+00:50:01.720 --> 00:50:02.720
25732573+This is how these things go.
25742574+25752575+644
25762576+00:50:02.720 --> 00:50:08.720
25772577+Thank you.
1502578
+2382-566
public/subtitles/the-phoenix-architecture.vtt
···11WEBVTT
22331
44-00:00:00.000 --> 00:00:02.000
55-Thank you.
44+00:00:00.000 --> 00:00:01.440
55+X architecture.
66772
88-00:00:30.000 --> 00:00:32.000
99-Thank you.
88+00:00:01.440 --> 00:00:03.880
99+Thank you, thank you, hello.
101011113
1212-00:01:00.000 --> 00:01:04.900
1313-Please.
1212+00:00:03.880 --> 00:00:08.720
1313+This will be at protocol related, just so you know.
141415154
1616-00:01:30.000 --> 00:01:34.000
1717-It's fun.
1616+00:00:08.720 --> 00:00:10.720
1717+The description does not make it sound that way,
181819195
2020-00:01:34.000 --> 00:01:38.000
2121-Good.
2020+00:00:10.720 --> 00:00:12.160
2121+but I promise it will.
222223236
2424-00:01:38.000 --> 00:01:42.000
2525-Oh good. It works.
2424+00:00:12.160 --> 00:00:14.320
2525+For one thing, there's a leaflet link.
262627277
2828-00:01:42.000 --> 00:01:46.000
2929-Perfect. We officially start in two minutes. Yeah.
2828+00:00:14.320 --> 00:00:19.160
2929+So as Boris said, I have been writing about this for a while.
303031318
3232-00:01:46.000 --> 00:01:50.000
3333-It's a good conference.
3232+00:00:19.160 --> 00:00:21.200
3333+I've also been thinking about this topic for,
343435359
3636-00:01:50.000 --> 00:01:54.000
3737-I have to leave in the morning sadly. As I expected I would.
3636+00:00:21.200 --> 00:00:25.440
3737+and speaking and writing and practicing things around this
3838393910
4040-00:01:54.000 --> 00:01:58.000
4141-I feel regret. My mother-in-law is in the hot room.
4040+00:00:25.440 --> 00:00:28.360
4141+for almost 20 years.
4242434311
4444-00:01:58.000 --> 00:02:02.000
4545-I'm going for surgery Monday so I have to go. Yeah.
4444+00:00:28.360 --> 00:00:31.480
4545+So this is a, and that sounds probably pretty crazy
4646474712
4848-00:02:02.000 --> 00:02:06.000
4949-I have to one two. Yeah.
4848+00:00:31.480 --> 00:00:33.760
4949+because we haven't had generative software that long,
5050515113
5252-00:02:06.000 --> 00:02:10.000
5353-Yeah. The other day. I haven't spoken at my conference
5252+00:00:33.760 --> 00:00:37.200
5353+but I'm gonna talk to you about architectural patterns today.
5454555514
5656-00:02:10.000 --> 00:02:14.000
5757-in I don't know how many years.
5656+00:00:37.200 --> 00:00:38.400
5757+But I wanna kinda set it up
5858595915
6060-00:02:14.000 --> 00:02:18.000
6161-You've done this fiddle faddle MCing business.
6060+00:00:38.400 --> 00:00:42.320
6161+and tell you about what I was thinking.
6262636316
6464-00:02:18.000 --> 00:02:22.000
6565-Yeah. I've done the MC. That's not the same thing. No. It's a very
6464+00:00:42.320 --> 00:00:46.440
6565+So probably a lot of us started thinking about vibe coding
6666676717
6868-00:02:22.000 --> 00:02:26.000
6969-different process.
6868+00:00:46.440 --> 00:00:49.920
6969+before it was called vibe coding three more years ago.
7070717118
7272-00:02:26.000 --> 00:02:30.000
7373-I'm going to do it so much. It's different with AI.
7272+00:00:49.920 --> 00:00:53.840
7373+And the first thought I thought back in 2023 was like,
7474757519
7676-00:02:30.000 --> 00:02:34.000
7777-Like this morning
7676+00:00:53.840 --> 00:00:57.960
7777+someday people will actually allow agents to write code
7878797920
8080-00:02:34.000 --> 00:02:38.000
8181-I had my presentation software create a script for me which I would never read.
8080+00:00:57.960 --> 00:00:59.360
8181+and they won't even review the code.
8282838321
8484-00:02:38.000 --> 00:02:42.000
8585-Then I gave it to chat GPT. I was getting ready walking around the hotel
8484+00:00:59.360 --> 00:01:01.160
8585+That sounded crazy, you know?
8686878722
8888-00:02:42.000 --> 00:02:46.000
8989-room and I had a chat. I said go slide by slide and tell me
8888+00:01:01.160 --> 00:01:03.600
8989+And then it's like, oh, next year, okay,
9090919123
9292-00:02:46.000 --> 00:02:50.000
9393-what's the thought and what how do I transition just to refresh myself for a minute.
9292+00:01:03.600 --> 00:01:04.840
9393+a lot of people are gonna do this.
9494959524
9696-00:02:50.000 --> 00:02:54.000
9797-Amazing.
9696+00:01:04.840 --> 00:01:07.400
9797+And now I'm thinking, of course, everyone's gonna do it.
9898999925
100100-00:02:55.000 --> 00:02:58.000
101101-Shall we. Alright. We're going to get started with Chad
100100+00:01:07.400 --> 00:01:09.160
101101+Why is everyone gonna do it?
10210210310326
104104-00:02:58.000 --> 00:03:02.000
105105-Fowler who has been writing on Bluesky for
104104+00:01:09.160 --> 00:01:12.120
105105+Because people are lazy, right?
10610610710727
108108-00:03:02.000 --> 00:03:06.000
109109-a while. I guess leaflet rather. About some thoughts on how
108108+00:01:12.120 --> 00:01:15.480
109109+They are, they are lazy, agents are not lazy.
11011011111128
112112-00:03:06.000 --> 00:03:10.000
113113-maybe software just regenerates
112112+00:01:15.480 --> 00:01:18.080
113113+And all of us with the best intentions,
11411411511529
116116-00:03:10.000 --> 00:03:14.000
117117-itself constantly. So over to Chad Fowler with the Phoenix architecture.
116116+00:01:18.080 --> 00:01:21.120
117117+when we are stressed, we will do the easiest possible thing.
11811811911930
120120-00:03:14.000 --> 00:03:18.000
121121-Thank you. Thank you. Hello. This will be
120120+00:01:21.120 --> 00:01:25.400
121121+So I started thinking about if we know they're gonna do it,
12212212312331
124124-00:03:18.000 --> 00:03:22.000
125125-at protocol related. Just so you know.
124124+00:01:25.400 --> 00:01:27.320
125125+how can we make it okay?
12612612712732
128128-00:03:22.000 --> 00:03:26.000
129129-The description does not make it sound that way but I promise it will. For one
128128+00:01:27.320 --> 00:01:28.400
129129+And I should say it this way,
13013013113133
132132-00:03:26.000 --> 00:03:30.000
133133-thing there's a leaflet link. So as Boris said
132132+00:01:28.400 --> 00:01:30.320
133133+so it doesn't sound like I'm judging anyone.
13413413513534
136136-00:03:30.000 --> 00:03:34.000
137137-I have been writing about this for a while. I've also been thinking about this
136136+00:01:30.320 --> 00:01:32.920
137137+If I know I'm gonna do it, how can we make it okay?
13813813913935
140140-00:03:34.000 --> 00:03:38.000
141141-topic for and speaking and writing and practicing
140140+00:01:32.920 --> 00:01:35.520
141141+And not just for trivial vibe coded one shot apps.
14214214314336
144144-00:03:38.000 --> 00:03:42.000
145145-things around this for almost 20 years.
144144+00:01:35.520 --> 00:01:37.480
145145+That's a demo, that's a magic trick.
14614614714737
148148-00:03:42.000 --> 00:03:46.000
149149-So this is a and that sounds probably pretty crazy because we haven't had
148148+00:01:37.480 --> 00:01:39.240
149149+That doesn't matter in real life.
15015015115138
152152-00:03:46.000 --> 00:03:50.000
153153-generative software that long but I'm going to talk to you about architectural patterns today.
152152+00:01:39.240 --> 00:01:40.840
153153+It's fun, but it doesn't matter.
15415415515539
156156-00:03:50.000 --> 00:03:54.000
157157-But I want to kind of set it up and
156156+00:01:41.760 --> 00:01:45.480
157157+And so the thing that occurred to me is,
15815815915940
160160-00:03:54.000 --> 00:03:58.000
161161-tell you about what I was thinking. So probably a lot of us started
160160+00:01:45.480 --> 00:01:47.440
161161+and I was talking to a bunch of nerd friends,
16216216316341
164164-00:03:58.000 --> 00:04:02.000
165165-thinking about vibe coding before it was called vibe coding three
164164+00:01:47.440 --> 00:01:49.840
165165+you know, old people like me about,
16616616716742
168168-00:04:02.000 --> 00:04:06.000
169169-more years ago. And the first thought I thought back in
168168+00:01:49.840 --> 00:01:51.280
169169+if I'm looking at something like
17017017117143
172172-00:04:06.000 --> 00:04:10.000
173173-2023 was like someday people will actually
172172+00:01:52.360 --> 00:01:54.400
173173+a pure function written in Haskell,
17417417517544
176176-00:04:10.000 --> 00:04:14.000
177177-allow agents to write code and they won't even review the code. That sounded crazy.
176176+00:01:54.400 --> 00:01:55.280
177177+this isn't Haskell,
17817817917945
180180-00:04:14.000 --> 00:04:18.000
181181-And it's like oh next year okay a lot of people are going to do this.
180180+00:01:55.280 --> 00:01:57.960
181181+because I didn't want you to have to try to read that.
18218218318346
184184-00:04:18.000 --> 00:04:22.000
185185-And now I'm thinking of course everyone's going to do it. Why is everyone going to do it?
184184+00:01:57.960 --> 00:01:59.560
185185+Pure function written in Haskell,
18618618718747
188188-00:04:22.000 --> 00:04:26.000
189189-Because people are lazy. Right? They are.
188188+00:01:59.560 --> 00:02:02.000
189189+so no side effects, great type system.
19019019119148
192192-00:04:26.000 --> 00:04:30.000
193193-They are lazy. Agents are not lazy. And all of us
192192+00:02:02.000 --> 00:02:04.880
193193+The language can ensure there are no side effects.
19419419519549
196196-00:04:30.000 --> 00:04:34.000
197197-with the best intentions when we are stressed we will do the easiest possible thing.
196196+00:02:04.880 --> 00:02:06.760
197197+You know what the input and the output types are,
19819819919950
200200-00:04:34.000 --> 00:04:38.000
201201-So I started thinking about if we know they're going to
200200+00:02:06.760 --> 00:02:08.800
201201+the names are great, et cetera.
20220220320351
204204-00:04:38.000 --> 00:04:42.000
205205-do it how can we make it okay? And I should say it this way so it doesn't
204204+00:02:08.800 --> 00:02:11.880
205205+I pretty much thought even three years ago,
20620620720752
208208-00:04:42.000 --> 00:04:46.000
209209-sound like I'm judging anyone. If I know I'm going to do it how can we make it okay?
208208+00:02:11.880 --> 00:02:15.160
209209+I can tell chat GPT in the little chat GPT program
21021021121153
212212-00:04:46.000 --> 00:04:50.000
213213-And not just for trivial vibe coded one shot apps. That's a demo. That's a magic
212212+00:02:15.160 --> 00:02:16.000
213213+to create that.
21421421521554
216216-00:04:50.000 --> 00:04:54.000
217217-trick. That doesn't matter in real life. It's fun but it doesn't matter.
216216+00:02:16.000 --> 00:02:17.280
217217+I can just copy and paste it in,
21821821921955
220220-00:04:54.000 --> 00:04:58.000
221221-And so the thing that occurred to me
220220+00:02:17.280 --> 00:02:19.800
221221+probably trust it, never have to verify it.
22222222322356
224224-00:04:58.000 --> 00:05:02.000
225225-is and I was talking to a bunch of nerd friends you know old people like me about
224224+00:02:19.800 --> 00:02:22.020
225225+We've all sort of had that intuition,
22622622722757
228228-00:05:02.000 --> 00:05:06.000
229229-if I'm looking at something like a pure
228228+00:02:22.020 --> 00:02:25.200
229229+that small focused things are probably okay.
23023023123158
232232-00:05:06.000 --> 00:05:10.000
233233-function written in Haskell. This isn't Haskell because I didn't want you to have to try to read that.
232232+00:02:26.000 --> 00:02:27.360
233233+And it's probably gonna do a good job, right?
23423423523559
236236-00:05:10.000 --> 00:05:14.000
237237-Pure function written in Haskell. So no side effects.
236236+00:02:27.360 --> 00:02:29.600
237237+And so I started thinking about this like,
23823823923960
240240-00:05:14.000 --> 00:05:18.000
241241-Great type system. The language can ensure there are no side effects.
240240+00:02:29.600 --> 00:02:33.320
241241+well, what's the difference between that and a whole system?
24224224324361
244244-00:05:18.000 --> 00:05:22.000
245245-You know what the input and the output types are. The names are great, etc.
244244+00:02:33.320 --> 00:02:35.880
245245+And really the whole system, it's about shapes.
24624624724762
248248-00:05:22.000 --> 00:05:26.000
249249-I pretty much thought even three years ago I can tell
248248+00:02:35.880 --> 00:02:37.440
249249+So I just described a bunch of things
25025025125163
252252-00:05:26.000 --> 00:05:30.000
253253-chat GPT in the little chat GPT program to create that. I can just copy and
252252+00:02:37.440 --> 00:02:38.960
253253+that were about shape is about size,
25425425525564
256256-00:05:30.000 --> 00:05:34.000
257257-paste it in. Probably trust it. Never have to verify it. We've all sort of had
256256+00:02:38.960 --> 00:02:41.600
257257+it was about like the boundaries of the function,
25825825925965
260260-00:05:34.000 --> 00:05:38.000
261261-that intuition that small focused things are probably
260260+00:02:41.600 --> 00:02:43.840
261261+the type system, the names, all these things.
26226226326366
264264-00:05:38.000 --> 00:05:42.000
265265-okay. And it's probably going to do a good job. Right? And so I started thinking
264264+00:02:44.720 --> 00:02:47.560
265265+It's easy to replace something that is that small.
26626626726767
268268-00:05:42.000 --> 00:05:46.000
269269-about this like well what's the difference between that and a whole system?
268268+00:02:47.560 --> 00:02:49.520
269269+It's also easy to generate something correct,
27027027127168
272272-00:05:46.000 --> 00:05:50.000
273273-And really the whole system it's about shapes. So I just described
272272+00:02:49.520 --> 00:02:50.640
273273+that small.
27427427527569
276276-00:05:50.000 --> 00:05:54.000
277277-a bunch of things that were about shape. It was about size. It was about like the boundaries
276276+00:02:50.640 --> 00:02:52.480
277277+So this led me on a whole adventure,
27827827927970
280280-00:05:54.000 --> 00:05:58.000
281281-of the function. The type system. The names. All these things.
280280+00:02:52.480 --> 00:02:55.880
281281+but I'm gonna go back in time a little bit to 2014.
28228228328371
284284-00:05:58.000 --> 00:06:02.000
285285-It's easy to replace something that is that small. It's also easy to
284284+00:02:55.880 --> 00:02:58.840
285285+Did any of you live through Heartbleed?
28628628728772
288288-00:06:02.000 --> 00:06:06.000
289289-generate something correct that small. So this led me on a whole adventure.
288288+00:02:58.840 --> 00:02:59.920
289289+Yeah.
29029029129173
292292-00:06:06.000 --> 00:06:10.000
293293-But I'm going to go back in time a little bit to 2014. Did any of you
292292+00:02:59.920 --> 00:03:01.320
293293+So if you were working at a company
29429429529574
296296-00:06:10.000 --> 00:06:14.000
297297-live through Heartbleed? Yeah. So if you were working
296296+00:03:01.320 --> 00:03:04.920
297297+that had any production systems when Heartbleed happened,
29829829929975
300300-00:06:14.000 --> 00:06:18.000
301301-at a company that had any production systems when Heartbleed
300300+00:03:04.920 --> 00:03:08.120
301301+I was at Wonderlist in Berlin at the time I was CTO.
30230230330376
304304-00:06:18.000 --> 00:06:22.000
305305-happened, I was at Wonderlist in Berlin at the time I was CTO. I woke up
304304+00:03:08.120 --> 00:03:10.840
305305+I woke up one morning and my colleague,
30630630730777
308308-00:06:22.000 --> 00:06:26.000
309309-one morning and my colleague James Duncan Davidson who was the creator
308308+00:03:10.840 --> 00:03:13.280
309309+James Duncan Davidson, who was the creator of Tomcat
31031031131178
312312-00:06:26.000 --> 00:06:30.000
313313-of Tomcat and Ant, another old school guy, had sent me a message saying
312312+00:03:13.280 --> 00:03:15.460
313313+and Ant, like another old school guy,
31431431531579
316316-00:06:30.000 --> 00:06:34.000
317317-we have to turn off the entire service. That's how I woke up that morning. I was like
316316+00:03:15.460 --> 00:03:17.040
317317+had sent me a message saying,
31831831931980
320320-00:06:34.000 --> 00:06:38.000
321321-oh my god what did we do wrong? We didn't do anything wrong.
320320+00:03:17.040 --> 00:03:19.000
321321+we have to turn off the entire service.
32232232332381
324324-00:06:38.000 --> 00:06:42.000
325325-So Heartbleed was a bug in open SSL that it was just a mistake
324324+00:03:19.000 --> 00:03:20.320
325325+That's how I woke up that morning.
32632632732782
328328-00:06:42.000 --> 00:06:46.000
329329-that allowed leakage of private data just
328328+00:03:20.320 --> 00:03:21.920
329329+I was like, oh my God, what is that?
33033033133183
332332-00:06:46.000 --> 00:06:50.000
333333-to anyone on the internet that could access the service.
332332+00:03:21.960 --> 00:03:23.160
333333+What did we do wrong?
33433433533584
336336-00:06:50.000 --> 00:06:54.000
337337-And it was a disaster. It was such a disaster. So we had a micro
336336+00:03:23.160 --> 00:03:24.680
337337+We didn't do anything wrong.
33833833933985
340340-00:06:54.000 --> 00:06:58.000
341341-services architecture. And we've been doing something called immutable infrastructure
340340+00:03:24.680 --> 00:03:27.520
341341+So Heartbleed was a bug in OpenSSL
34234234334386
344344-00:06:58.000 --> 00:07:02.000
345345-long before that was a thing that everyone did. It was before Docker was in
344344+00:03:27.520 --> 00:03:29.480
345345+that it was just a mistake
34634634734787
348348-00:07:02.000 --> 00:07:06.000
349349-major circulation and usage. It was still pretty early.
348348+00:03:29.480 --> 00:03:32.460
349349+that allowed leakage of private data
35035035135188
352352-00:07:06.000 --> 00:07:10.000
353353-And so we had hundreds of services, which means we had hundreds of
352352+00:03:32.460 --> 00:03:36.800
353353+just to anyone on the internet that could access the service.
35435435535589
356356-00:07:10.000 --> 00:07:14.000
357357-computers that had a bad version of open SSL that were running in
356356+00:03:36.800 --> 00:03:38.560
357357+And it was a disaster.
35835835935990
360360-00:07:14.000 --> 00:07:18.000
361361-production with millions of active users. So what did we do?
360360+00:03:38.560 --> 00:03:39.480
361361+It was such a disaster.
36236236336391
364364-00:07:18.000 --> 00:07:22.000
365365-That's a panic situation. I remember looking at the
364364+00:03:39.480 --> 00:03:41.800
365365+So we had a microservices architecture
36636636736792
368368-00:07:22.000 --> 00:07:26.000
369369-AWS dashboard and all the things and just thinking what are we going to do? We were waiting for
368368+00:03:41.800 --> 00:03:43.280
369369+and we've been doing something called
37037037137193
372372-00:07:26.000 --> 00:07:30.000
373373-Amazon. They were not responding. They were very busy, as you might guess that day.
372372+00:03:43.280 --> 00:03:46.000
373373+immutable infrastructure long before that was a thing
37437437537594
376376-00:07:30.000 --> 00:07:34.000
377377-And so we said well, as soon as we have a good open SSL
376376+00:03:46.000 --> 00:03:46.840
377377+that everyone did.
37837837937995
380380-00:07:34.000 --> 00:07:38.000
381381-image, we're just going to replace literally every server.
380380+00:03:46.840 --> 00:03:50.400
381381+It was before Docker was like in major circulation and usage.
38238238338396
384384-00:07:38.000 --> 00:07:42.000
385385-Hundreds of servers. 300-ish instances at the time.
384384+00:03:50.400 --> 00:03:51.640
385385+It was still pretty early.
38638638738797
388388-00:07:42.000 --> 00:07:46.000
389389-How did we do it? I went to a computer.
388388+00:03:52.640 --> 00:03:55.320
389389+And so we had hundreds of services,
39039039139198
392392-00:07:46.000 --> 00:07:50.000
393393-I was afraid. I typed a command. And over the course of a couple of hours, they all
392392+00:03:55.320 --> 00:03:57.400
393393+which means we had hundreds of computers
39439439539599
396396-00:07:50.000 --> 00:07:54.000
397397-got replaced. Nothing ever went down. And it just worked. Why?
396396+00:03:57.400 --> 00:03:59.880
397397+that had a bad version of OpenSSL
398398399399100
400400-00:07:54.000 --> 00:07:58.000
401401-Because the system was built to be
400400+00:03:59.880 --> 00:04:01.320
401401+that were running in production
402402403403101
404404-00:07:58.000 --> 00:08:02.000
405405-a massive system of small components.
404404+00:04:01.320 --> 00:04:03.840
405405+with millions of active users.
406406407407102
408408-00:08:02.000 --> 00:08:06.000
409409-And it was always built with the idea that these components would be destroyed.
408408+00:04:03.840 --> 00:04:04.760
409409+So what did we do?
410410411411103
412412-00:08:06.000 --> 00:08:10.000
413413-That's the idea behind immutable infrastructure. You never change a server.
412412+00:04:04.760 --> 00:04:06.480
413413+I mean, that's a panic situation.
414414415415104
416416-00:08:10.000 --> 00:08:14.000
417417-You only modify the server by replacing it. So if you need to
416416+00:04:06.480 --> 00:04:08.080
417417+I remember looking at the Amazon,
418418419419105
420420-00:08:14.000 --> 00:08:18.000
421421-upgrade something, you throw away the old thing, you replace it with a new thing.
420420+00:04:08.080 --> 00:04:10.880
421421+AWS dashboarded all the things and just thinking,
422422423423106
424424-00:08:18.000 --> 00:08:22.000
425425-Kind of old hat and infrastructure now. If you're a DevOps-y kind of person, that's how you do it probably.
424424+00:04:10.880 --> 00:04:11.860
425425+what are we gonna do?
426426427427107
428428-00:08:22.000 --> 00:08:26.000
429429-If not, apologies to you. You should get a new job.
428428+00:04:11.860 --> 00:04:13.280
429429+We were waiting for Amazon.
430430431431108
432432-00:08:26.000 --> 00:08:30.000
433433-So it took us a day. It took most teams weeks
432432+00:04:13.280 --> 00:04:14.240
433433+They were not responding.
434434435435109
436436-00:08:30.000 --> 00:08:34.000
437437-or a week. There are still 250,000-ish servers on the
436436+00:04:14.240 --> 00:04:17.240
437437+They were very busy, as you might guess, that day.
438438439439110
440440-00:08:34.000 --> 00:08:38.000
441441-Internet that are suffering from this problem. Which means 250,000
440440+00:04:17.240 --> 00:04:18.760
441441+And so we said, well,
442442443443111
444444-00:08:38.000 --> 00:08:42.000
445445-compromised servers that you can get private data out of for whatever reason.
444444+00:04:18.800 --> 00:04:21.280
445445+as soon as we have a good OpenSSL image,
446446447447112
448448-00:08:42.000 --> 00:08:46.000
449449-But this problem is sort of solved, right? This is more than ten years ago.
448448+00:04:21.280 --> 00:04:24.200
449449+we're just gonna replace literally every server,
450450451451113
452452-00:08:46.000 --> 00:08:50.000
453453-Here's an imaginary scenario. Later on this year,
452452+00:04:24.200 --> 00:04:29.200
453453+hundreds of servers, 300-ish instances at the time.
454454455455114
456456-00:08:50.000 --> 00:08:54.000
457457-the Lazarus Group in North Korea infects some packages
456456+00:04:29.200 --> 00:04:30.340
457457+How did we do it?
458458459459115
460460-00:08:54.000 --> 00:08:58.000
461461-in NPM. Or whatever package manager. And the infection
460460+00:04:31.240 --> 00:04:32.360
461461+I went to a computer.
462462463463116
464464-00:08:58.000 --> 00:09:02.000
465465-goes like a virus through the network. And it starts infecting all the other
464464+00:04:32.360 --> 00:04:33.200
465465+I was afraid.
466466467467117
468468-00:09:02.000 --> 00:09:06.000
469469-packages. And at the end of the day, you wake up
468468+00:04:33.200 --> 00:04:34.460
469469+I typed a command.
470470471471118
472472-00:09:06.000 --> 00:09:10.000
473473-to the news that the entire JavaScript ecosystem is compromised.
472472+00:04:34.460 --> 00:04:36.220
473473+And over the course of a couple of hours,
474474475475119
476476-00:09:10.000 --> 00:09:14.000
477477-What do you do? You can't delete all the servers
476476+00:04:36.220 --> 00:04:37.440
477477+they all got replaced.
478478479479120
480480-00:09:14.000 --> 00:09:18.000
481481-and restart them because NPM itself is compromised. Everything is compromised.
480480+00:04:37.440 --> 00:04:40.100
481481+Nothing ever went down and it just worked.
482482483483121
484484-00:09:18.000 --> 00:09:22.000
485485-You can't trust anything in the ecosystem. You have to
484484+00:04:40.100 --> 00:04:41.560
485485+Why?
486486487487122
488488-00:09:22.000 --> 00:09:26.000
489489-actually move to a new language and a new ecosystem. So let's do that in a day.
488488+00:04:41.560 --> 00:04:46.600
489489+Because the system was built to be a massive system
490490491491123
492492-00:09:26.000 --> 00:09:30.000
493493-Yeah? On a complicated application. Probably not, right?
492492+00:04:46.600 --> 00:04:49.960
493493+of small components and it was always built
494494495495124
496496-00:09:30.000 --> 00:09:34.000
497497-But that's the idea. You would need to delete everything
496496+00:04:49.960 --> 00:04:52.720
497497+with the idea that these components would be destroyed.
498498499499125
500500-00:09:34.000 --> 00:09:38.000
501501-and regenerate it. It would be an absolute disaster.
500500+00:04:52.720 --> 00:04:55.300
501501+That's the idea behind immutable infrastructure.
502502503503126
504504-00:09:38.000 --> 00:09:42.000
505505-So this is the goal of the
504504+00:04:55.300 --> 00:04:56.720
505505+You never change a server.
506506507507127
508508-00:09:42.000 --> 00:09:46.000
509509-architecture that I'm putting forward here. And you probably can't read
508508+00:04:56.720 --> 00:04:57.920
509509+You only modify,
510510511511128
512512-00:09:46.000 --> 00:09:50.000
513513-it because it's too small. These are command lines that say Phoenix generate and
512512+00:04:57.920 --> 00:05:00.160
513513+the only way you modify a server is by replacing it.
514514515515129
516516-00:09:50.000 --> 00:09:54.000
517517-regenerate. And the idea is just replace all the implementations of everything that we have.
516516+00:05:00.160 --> 00:05:01.400
517517+So if you need to upgrade something,
518518519519130
520520-00:09:54.000 --> 00:09:58.000
521521-Say from NPM, we're going to go ahead and finally move to Rust like everybody else.
520520+00:05:01.400 --> 00:05:02.920
521521+you throw away the old thing,
522522523523131
524524-00:09:58.000 --> 00:10:02.000
525525-So one last story.
524524+00:05:02.920 --> 00:05:04.380
525525+you replace it with a new thing.
526526527527132
528528-00:10:02.000 --> 00:10:06.000
529529-Early in my career, this is over 20 years ago,
528528+00:05:04.380 --> 00:05:06.400
529529+Kind of old hat and infrastructure now.
530530531531133
532532-00:10:06.000 --> 00:10:10.000
533533-I was moving up the career ladder. I was at a big
532532+00:05:06.400 --> 00:05:07.800
533533+If you're a DevOps-y kind of person,
534534535535134
536536-00:10:10.000 --> 00:10:14.000
537537-public company. I was moving toward a CIO position in one of
536536+00:05:07.800 --> 00:05:09.200
537537+that's how you do it probably.
538538539539135
540540-00:10:14.000 --> 00:10:18.000
541541-the divisions of the company. And I was asked to do a new job.
540540+00:05:09.200 --> 00:05:12.720
541541+If not, apologies to you, you should get a new job.
542542543543136
544544-00:10:18.000 --> 00:10:22.000
545545-The new job was pretty surprising giving my career path. It was
544544+00:05:12.720 --> 00:05:14.680
545545+So it took us a day.
546546547547137
548548-00:10:22.000 --> 00:10:26.000
549549-to be the lone developer that took over another
548548+00:05:14.720 --> 00:05:18.000
549549+It took most teams weeks or a week.
550550551551138
552552-00:10:26.000 --> 00:10:30.000
553553-system from a guy who was trolling the company. So this guy
552552+00:05:18.000 --> 00:05:21.080
553553+There are still 250,000-ish servers on the internet
554554555555139
556556-00:10:30.000 --> 00:10:34.000
557557-had written this really complex system in C that was talking
556556+00:05:21.080 --> 00:05:23.100
557557+that are suffering from this problem,
558558559559140
560560-00:10:34.000 --> 00:10:38.000
561561-to the MobyTech's radio frequency network. It was managing laptops
560560+00:05:23.100 --> 00:05:25.560
561561+which means 250,000 compromised servers
562562563563141
564564-00:10:38.000 --> 00:10:42.000
565565-in the field for service technicians. It was basically like a bespoke message
564564+00:05:25.560 --> 00:05:28.840
565565+that you can get private data out of for whatever reason.
566566567567142
568568-00:10:42.000 --> 00:10:46.000
569569-queuing system. Like you'd do RabbitMQ today. He had built his own thing then.
568568+00:05:28.840 --> 00:05:30.960
569569+Okay, but this problem is sort of solved, right?
570570571571143
572572-00:10:46.000 --> 00:10:50.000
573573-No one knew how this thing worked. Why? Because
572572+00:05:30.960 --> 00:05:32.800
573573+This is more than 10 years ago.
574574575575144
576576-00:10:50.000 --> 00:10:54.000
577577-the only real artifact of the system was the code. It was a bunch of conversations
576576+00:05:32.800 --> 00:05:35.220
577577+Here's an imaginary scenario.
578578579579145
580580-00:10:54.000 --> 00:10:58.000
581581-that had happened in ugly conference rooms in this company over the years.
580580+00:05:35.220 --> 00:05:39.160
581581+Later on this year, the Lazarus Group in North Korea
582582583583146
584584-00:10:58.000 --> 00:11:02.000
585585-It was all in production. This guy was the only person who
584584+00:05:39.160 --> 00:05:43.380
585585+infects some packages in NPM or whatever package manager.
586586587587147
588588-00:11:02.000 --> 00:11:06.000
589589-knew how any of it worked. Really knew how it worked. But he was
588588+00:05:44.260 --> 00:05:47.340
589589+And the infection goes like a virus through the network
590590591591148
592592-00:11:06.000 --> 00:11:10.000
593593-basically holding us hostage as a company. So I went from
592592+00:05:47.340 --> 00:05:50.020
593593+and it starts infecting all the other packages.
594594595595149
596596-00:11:10.000 --> 00:11:14.000
597597-move toward CIO to go sit up all night in an office
596596+00:05:50.020 --> 00:05:53.860
597597+And at the end of the day, you wake up to the news
598598599599150
600600-00:11:14.000 --> 00:11:18.000
601601-in the dark like doing S-trace on server
600600+00:05:53.860 --> 00:05:58.300
601601+that the entire JavaScript ecosystem is compromised.
602602603603151
604604-00:11:18.000 --> 00:11:22.000
605605-processes trying to figure out what this thing does. So this can
604604+00:05:58.300 --> 00:05:59.500
605605+What do you do?
606606607607152
608608-00:11:22.000 --> 00:11:26.000
609609-happen today, and it could happen 20 years ago, you can be held hostage by your
608608+00:05:59.500 --> 00:06:02.060
609609+You can't delete all the servers and restart them
610610611611153
612612-00:11:26.000 --> 00:11:30.000
613613-code base. So I learned something very early around that
612612+00:06:02.060 --> 00:06:03.980
613613+because NPM itself is compromised.
614614615615154
616616-00:11:30.000 --> 00:11:34.000
617617-time in my career from a guy named Kent Beck who is the creator of
616616+00:06:03.980 --> 00:06:04.900
617617+Everything is compromised.
618618619619155
620620-00:11:34.000 --> 00:11:38.000
621621-Extreme Programming and a bunch of other stuff. And if you're my age in software development, he's
620620+00:06:04.900 --> 00:06:07.060
621621+You can't trust anything in the ecosystem.
622622623623156
624624-00:11:38.000 --> 00:11:42.000
625625-probably one of your software development heroes. If something hurts,
624624+00:06:08.180 --> 00:06:10.140
625625+You have to actually move to a new language
626626627627157
628628-00:11:42.000 --> 00:11:46.000
629629-do it more frequently. So with Extreme Programming, which was the precursor to Agile
628628+00:06:10.140 --> 00:06:11.740
629629+and a new ecosystem.
630630631631158
632632-00:11:46.000 --> 00:11:50.000
633633-which ruined everything and they never should have done the Agile thing, but Extreme Programming
632632+00:06:11.740 --> 00:06:13.180
633633+So let's do that in a day.
634634635635159
636636-00:11:50.000 --> 00:11:54.000
637637-was like merging is hard, you need to do continuous integration,
636636+00:06:14.180 --> 00:06:17.860
637637+On a complicated application, probably not, right?
638638639639160
640640-00:11:54.000 --> 00:11:58.000
641641-deployment is hard, we learned all these things, testing is hard, you should do it up front
640640+00:06:17.860 --> 00:06:18.700
641641+But that's the idea.
642642643643161
644644-00:11:58.000 --> 00:12:02.000
645645-so no code is written without a test, code review is hard, just do pair programming
644644+00:06:18.700 --> 00:06:22.620
645645+You would need to delete everything and regenerate it.
646646647647162
648648-00:12:02.000 --> 00:12:06.000
649649-constant, right? So if updating code is hard and making
648648+00:06:22.620 --> 00:06:25.260
649649+It would be an absolute disaster.
650650651651163
652652-00:12:06.000 --> 00:12:10.000
653653-changes to code is hard, the Kent Beck version of that would be just do it
652652+00:06:25.260 --> 00:06:29.380
653653+So this is the goal of the architecture
654654655655164
656656-00:12:10.000 --> 00:12:14.000
657657-constantly, like all day maybe. So how do you do that?
656656+00:06:29.380 --> 00:06:31.620
657657+that I'm putting forward here.
658658659659165
660660-00:12:14.000 --> 00:12:18.000
661661-That means that the code itself is not
660660+00:06:31.620 --> 00:06:33.980
661661+And you probably can't read it because it's too small.
662662663663166
664664-00:12:18.000 --> 00:12:22.000
665665-that important, sort of, right? If you're going to be replacing it all the time, if you're going to be throwing it away
664664+00:06:33.980 --> 00:06:36.380
665665+These are command lines that say like Phoenix generate
666666667667167
668668-00:12:22.000 --> 00:12:26.000
669669-and replacing it, how do you do it? And then another person who's not as smart
668668+00:06:36.380 --> 00:06:38.260
669669+and regenerate and the idea is just like,
670670671671168
672672-00:12:26.000 --> 00:12:30.000
673673-as Kent once said the mutability of a system is enhanced by the
672672+00:06:38.260 --> 00:06:41.260
673673+replace all the implementations of everything that we have.
674674675675169
676676-00:12:30.000 --> 00:12:34.000
677677-immutability of its components. I said that, but I like to quote myself
676676+00:06:41.260 --> 00:06:43.060
677677+Say like from NPM, we're gonna go ahead
678678679679170
680680-00:12:34.000 --> 00:12:38.000
681681-because I think it's a pretty good one. Maybe in 20 years or so, someone will say
680680+00:06:43.260 --> 00:06:45.500
681681+and finally move to Rust like everybody else.
682682683683171
684684-00:12:38.000 --> 00:12:42.000
685685-if it was me, you heard Chad say this and it was meaningful to you.
684684+00:06:47.100 --> 00:06:49.100
685685+So one last story.
686686687687172
688688-00:12:42.000 --> 00:12:46.000
689689-So the weird thing about this is, you know, we're
688688+00:06:49.980 --> 00:06:52.540
689689+Early in my career, this is over 20 years ago,
690690691691173
692692-00:12:46.000 --> 00:12:50.000
693693-in this weird era, how many of you are actually software developers
692692+00:06:53.700 --> 00:06:55.980
693693+I was like moving up the career ladder.
694694695695174
696696-00:12:50.000 --> 00:12:54.000
697697-by the way? Okay, got enough of you that some of you will feel
696696+00:06:55.980 --> 00:06:57.220
697697+I was at a big public company.
698698699699175
700700-00:12:54.000 --> 00:12:58.000
701701-sad about this sort of, you know, is the craft going away?
700700+00:06:57.220 --> 00:06:59.300
701701+I was moving toward a CIO position
702702703703176
704704-00:12:58.000 --> 00:13:02.000
705705-I've been posting a bunch of stuff on that leaflet and people get mad. Every time I post something
704704+00:07:00.100 --> 00:07:03.220
705705+in one of the divisions of the company.
706706707707177
708708-00:13:02.000 --> 00:13:06.000
709709-there's at least someone who is angry and like, you know, you're wrong
708708+00:07:03.220 --> 00:07:05.380
709709+And I was asked to do a new job.
710710711711178
712712-00:13:06.000 --> 00:13:10.000
713713-idiot, you are influenced by marketing, that was yesterday's post actually.
712712+00:07:05.380 --> 00:07:07.980
713713+The new job was pretty surprising giving my career path.
714714715715179
716716-00:13:10.000 --> 00:13:14.000
717717-But the craft doesn't disappear, it just moves. So, you know,
716716+00:07:07.980 --> 00:07:11.420
717717+It was to be the lone developer
718718719719180
720720-00:13:14.000 --> 00:13:18.000
721721-from like doing test driven development you need to be thinking about how you evaluate the code
720720+00:07:11.420 --> 00:07:13.780
721721+that took over another system
722722723723181
724724-00:13:18.000 --> 00:13:22.000
725725-from a business perspective and from a architectural perspective
724724+00:07:13.780 --> 00:07:16.020
725725+from a guy who was trolling the company.
726726727727182
728728-00:13:22.000 --> 00:13:26.000
729729-in terms of what the technical requirements are of the code.
728728+00:07:16.020 --> 00:07:19.740
729729+So this guy had written this really complex system in C
730730731731183
732732-00:13:26.000 --> 00:13:30.000
733733-You'll be thinking about things like what are the boundaries and what is the
732732+00:07:19.740 --> 00:07:23.020
733733+that was talking to the MobyTek's radio frequency network.
734734735735184
736736-00:13:30.000 --> 00:13:34.000
737737-actual architecture that can work in a system that's constantly replacing itself?
736736+00:07:23.020 --> 00:07:25.020
737737+It was managing laptops in the field
738738739739185
740740-00:13:34.000 --> 00:13:38.000
741741-How can that possibly work? And so I'm going to dig into that kind of stuff.
740740+00:07:25.020 --> 00:07:26.300
741741+for service technicians.
742742743743186
744744-00:13:39.000 --> 00:13:43.000
745745-One note here though, is there is still very much a craft
744744+00:07:26.300 --> 00:07:29.740
745745+It was basically like a bespoke message queuing system.
746746747747187
748748-00:13:43.000 --> 00:13:47.000
749749-or an engineering discipline or whatever sort of metaphor you want to use. Art.
748748+00:07:29.740 --> 00:07:31.460
749749+Like you'd do RabbitMQ today.
750750751751188
752752-00:13:47.000 --> 00:13:51.000
753753-You know, I'm a musician so maybe there's a craft or there's an art to it.
752752+00:07:31.460 --> 00:07:33.500
753753+He had built his own thing then.
754754755755189
756756-00:13:51.000 --> 00:13:55.000
757757-And what I'm seeing now and the fear that a lot of people have in the software
756756+00:07:33.500 --> 00:07:35.580
757757+No one knew how this thing worked.
758758759759190
760760-00:13:55.000 --> 00:13:59.000
761761-industry is that the senior people,
760760+00:07:35.580 --> 00:07:36.420
761761+Why?
762762763763191
764764-00:13:59.000 --> 00:14:03.000
765765-and senior doesn't have to mean old or even experienced, but somehow the people who have
764764+00:07:36.420 --> 00:07:39.620
765765+Because the only real artifact of the system was the code.
766766767767192
768768-00:14:03.000 --> 00:14:08.000
769769-gained wisdom in this field somehow, they are
768768+00:07:39.620 --> 00:07:41.660
769769+It was a bunch of conversations that had happened
770770771771193
772772-00:14:08.000 --> 00:14:12.000
773773-moving farther and farther away from the newbies.
772772+00:07:41.660 --> 00:07:44.940
773773+in ugly conference rooms in this company over the years.
774774775775194
776776-00:14:12.000 --> 00:14:17.000
777777-Because everything moves so quickly and the mistakes you make
776776+00:07:44.940 --> 00:07:46.620
777777+It was all in production.
778778779779195
780780-00:14:17.000 --> 00:14:21.000
781781-have such great and instant ramifications and the good choices you make
780780+00:07:46.620 --> 00:07:50.420
781781+This guy was the only person who knew how any of it worked.
782782783783196
784784-00:14:21.000 --> 00:14:26.000
785785-have such major ramifications that this AI thing
784784+00:07:50.420 --> 00:07:52.100
785785+Really knew how it worked.
786786787787197
788788-00:14:26.000 --> 00:14:30.000
789789-amplifies the effect of this experience.
788788+00:07:52.100 --> 00:07:55.580
789789+But he was basically holding us hostage as a company.
790790791791198
792792-00:14:31.000 --> 00:14:34.000
793793-So Phoenix Architecture, what is it?
792792+00:07:55.580 --> 00:07:57.940
793793+So I went from move toward CIO
794794795795199
796796-00:14:34.000 --> 00:14:38.000
797797-It's a name that I let the AI choose, honestly.
796796+00:07:57.940 --> 00:08:02.740
797797+to go sit up all night in an office in the dark,
798798799799200
800800-00:14:38.000 --> 00:14:42.000
801801-This is a thing I do because naming is one of the hardest things, right?
800800+00:08:02.740 --> 00:08:05.100
801801+like doing S trace on server processes
802802803803201
804804-00:14:42.000 --> 00:14:45.000
805805-So that's why we have LLMs. You never have to name anything again.
804804+00:08:05.100 --> 00:08:07.740
805805+trying to figure out what this thing does.
806806807807202
808808-00:14:45.000 --> 00:14:50.000
809809-Just make sure it's not offensive in any language if you can, but you can ask the LLM that too.
808808+00:08:07.740 --> 00:08:09.340
809809+So this can happen today
810810811811203
812812-00:14:50.000 --> 00:14:55.000
813813-It's an architectural idea, a bunch of architectural principles.
812812+00:08:09.380 --> 00:08:10.980
813813+and it could happen 20 years ago.
814814815815204
816816-00:14:55.000 --> 00:15:00.000
817817-As I said, they are extracted from my decades of thinking about this problem
816816+00:08:10.980 --> 00:08:13.380
817817+You can be held hostage by your code base.
818818819819205
820820-00:15:00.000 --> 00:15:04.000
821821-and trying to figure out how we can create systems that can survive.
820820+00:08:14.820 --> 00:08:16.820
821821+So I learned something very early around that time
822822823823206
824824-00:15:04.000 --> 00:15:09.000
825825-So if you Google for me, if anyone uses Google anymore, and put the word legacy,
824824+00:08:16.820 --> 00:08:19.100
825825+in my career from a guy named Kent Beck
826826827827207
828828-00:15:09.000 --> 00:15:14.000
829829-you will find me talking about this back in 2009 and some of the things I'm going to say are the same today.
828828+00:08:19.100 --> 00:08:21.060
829829+who is the creator of Extreme Programming
830830831831208
832832-00:15:14.000 --> 00:15:20.000
833833-Because I realized that making systems that can survive, the principles have been the same for a long time.
832832+00:08:21.060 --> 00:08:22.300
833833+and a bunch of other stuff.
834834835835209
836836-00:15:20.000 --> 00:15:24.000
837837-It's also a reference implementation of this architecture.
836836+00:08:22.300 --> 00:08:24.220
837837+And if you're my age in software development,
838838839839210
840840-00:15:24.000 --> 00:15:28.000
841841-I'm going to show you two things very briefly on the reference implementation,
840840+00:08:24.220 --> 00:08:27.740
841841+he's probably one of your software development heroes.
842842843843211
844844-00:15:28.000 --> 00:15:32.000
845845-and you can find it on Tangled or you can find it on the copy on GitHub.
844844+00:08:27.740 --> 00:08:29.660
845845+If something hurts, do it more frequently.
846846847847212
848848-00:15:32.000 --> 00:15:35.000
849849-Obviously, you're all going to use Tangled, right?
848848+00:08:29.660 --> 00:08:31.100
849849+So with Extreme Programming,
850850851851213
852852-00:15:35.000 --> 00:15:42.000
853853-So I'm starting to think about software, not as a thing where you go into an editor.
852852+00:08:31.100 --> 00:08:32.740
853853+which was the precursor to Agile,
854854855855214
856856-00:15:42.000 --> 00:15:46.000
857857-That's always been like a short version of what the AI thing would be,
856856+00:08:32.740 --> 00:08:33.740
857857+which ruined everything,
858858859859215
860860-00:15:46.000 --> 00:15:52.000
861861-these copilot things in an IDE that's gone already, but rather a pipeline.
860860+00:08:33.740 --> 00:08:35.580
861861+and they never should have done the Agile thing,
862862863863216
864864-00:15:52.000 --> 00:16:00.000
865865-So we go from specifications to something else, to something else, to something else that ends up generating code.
864864+00:08:35.580 --> 00:08:38.980
865865+but Extreme Programming was like merging is hard.
866866867867217
868868-00:16:00.000 --> 00:16:05.000
869869-And the something else is here. You won't be able to read this, but you can just kind of see columns here.
868868+00:08:38.980 --> 00:08:40.700
869869+You need to do continuous integration,
870870871871218
872872-00:16:05.000 --> 00:16:09.000
873873-Imagine you've got a bunch of markdown specifications. Those are just things where you just type stuff.
872872+00:08:40.700 --> 00:08:41.660
873873+deployment is hard.
874874875875219
876876-00:16:09.000 --> 00:16:16.000
877877-Maybe you're also in a chat program like FREQ. Ask me about FREQ, F-R-E-E-Q.
876876+00:08:41.660 --> 00:08:42.820
877877+We learned all these things.
878878879879220
880880-00:16:16.000 --> 00:16:22.000
881881-From that will be extracted clauses. So you can use LLMs for this.
880880+00:08:42.820 --> 00:08:43.660
881881+Testing is hard.
882882883883221
884884-00:16:22.000 --> 00:16:26.000
885885-It's not quite perfect, but my reference implementation does some hacks.
884884+00:08:43.660 --> 00:08:44.500
885885+You should do it upfront
886886887887222
888888-00:16:26.000 --> 00:16:30.000
889889-You extract clauses which are like different ways of saying the same thing.
888888+00:08:44.500 --> 00:08:46.540
889889+so no code is written without a test.
890890891891223
892892-00:16:30.000 --> 00:16:33.000
893893-You can kind of deduplicate them into those text chunks.
892892+00:08:46.540 --> 00:08:47.580
893893+Code review is hard.
894894895895224
896896-00:16:33.000 --> 00:16:38.000
897897-From that, you can canonicalize and deduplicate actual requirements.
896896+00:08:47.580 --> 00:08:50.020
897897+Just do pair programming, constant, right?
898898899899225
900900-00:16:38.000 --> 00:16:42.000
901901-From that, you can expand them into various things that you want to evaluate.
900900+00:08:50.020 --> 00:08:52.340
901901+So if updating code is hard
902902903903226
904904-00:16:42.000 --> 00:16:45.000
905905-They could be invariants. They could be various other constraints.
904904+00:08:52.340 --> 00:08:54.420
905905+and making changes to code is hard,
906906907907227
908908-00:16:45.000 --> 00:16:53.000
909909-They might even be things like this component must be fast, which turns into this component must respond within 50 milliseconds.
908908+00:08:54.420 --> 00:08:55.820
909909+the Kent Beck version of that would be
910910911911228
912912-00:16:53.000 --> 00:16:55.000
913913-So that becomes a constraint.
912912+00:08:55.820 --> 00:08:59.540
913913+just do it constantly, like all day maybe.
914914915915229
916916-00:16:55.000 --> 00:16:59.000
917917-And from there, you go into the implementation, which I'm going to talk about in a second.
916916+00:08:59.540 --> 00:09:01.380
917917+So how do you do that?
918918919919230
920920-00:16:59.000 --> 00:17:02.000
921921-It has two phases sort of necessarily.
920920+00:09:01.380 --> 00:09:04.300
921921+That means that the code itself
922922923923231
924924-00:17:02.000 --> 00:17:11.000
925925-The cool thing about this is if you create a system like this where you're actually thinking of that end piece,
924924+00:09:04.300 --> 00:09:06.140
925925+is not that important, sort of, right?
926926927927232
928928-00:17:11.000 --> 00:17:17.000
929929-the code as a compiled artifact, think of it as a binary, like TypeScript or whatever you're generating.
928928+00:09:06.140 --> 00:09:07.540
929929+If you're gonna be replacing it all the time,
930930931931233
932932-00:17:17.000 --> 00:17:19.000
933933-It's like binary code. You wouldn't edit it.
932932+00:09:07.540 --> 00:09:08.420
933933+if you're gonna be throwing it away
934934935935234
936936-00:17:19.000 --> 00:17:26.000
937937-It also means that you can trace the provenance from the markdown file, from a piece of text in the markdown file,
936936+00:09:08.500 --> 00:09:10.980
937937+and replacing it, how do you do it?
938938939939235
940940-00:17:26.000 --> 00:17:31.000
941941-through this graph of requirements all the way through to the generated thing at the end.
940940+00:09:10.980 --> 00:09:13.140
941941+And then another person who's not as smart as Kent
942942943943236
944944-00:17:31.000 --> 00:17:37.000
945945-So just like you were doing a C program or something where you're compiling from C to an object file to blah, blah, blah,
944944+00:09:13.140 --> 00:09:15.380
945945+once said the mutability of a system
946946947947237
948948-00:17:37.000 --> 00:17:40.000
949949-the TypeScript is just in that dependent path.
948948+00:09:15.380 --> 00:09:17.980
949949+is enhanced by the immutability of its components.
950950951951238
952952-00:17:40.000 --> 00:17:43.000
953953-So when you set up a system like this, you can do two things.
952952+00:09:17.980 --> 00:09:20.780
953953+I said that, but I like to quote myself
954954955955239
956956-00:17:43.000 --> 00:17:48.000
957957-One is you can regenerate just the path down to the component at the end that you want to generate.
956956+00:09:20.780 --> 00:09:22.740
957957+because I think it's a pretty good one.
958958959959240
960960-00:17:48.000 --> 00:17:55.000
961961-The other is if someone does do the wrong thing, so I say, and edit the code themselves as a human,
960960+00:09:22.740 --> 00:09:24.580
961961+Maybe in 20 years or so, someone will say,
962962963963241
964964-00:17:55.000 --> 00:17:57.000
965965-you can see where it drifts.
964964+00:09:24.580 --> 00:09:26.660
965965+if it was me, you heard Chad say this,
966966967967242
968968-00:17:57.000 --> 00:18:01.000
969969-And you can see, well, the drift is here and it actually affects this spec.
968968+00:09:26.660 --> 00:09:28.220
969969+and it was meaningful to you.
970970971971243
972972-00:18:01.000 --> 00:18:07.000
973973-And I could even like automatically analyze the code and see it's changed the spec in a certain way.
972972+00:09:29.140 --> 00:09:32.220
973973+So the weird thing about this is,
974974975975244
976976-00:18:07.000 --> 00:18:09.000
977977-Is that actually the spec now? Is that what you meant?
976976+00:09:32.220 --> 00:09:35.020
977977+we're in this weird era.
978978979979245
980980-00:18:09.000 --> 00:18:12.000
981981-And commit it as the real intent of the code.
980980+00:09:35.020 --> 00:09:36.900
981981+How many of you are actually software developers,
982982983983246
984984-00:18:12.000 --> 00:18:15.000
985985-Because intent is what matters more than anything else now.
984984+00:09:36.900 --> 00:09:37.740
985985+by the way?
986986987987247
988988-00:18:15.000 --> 00:18:18.000
989989-Intent plus architecture.
988988+00:09:37.940 --> 00:09:39.820
989989+Got enough of you that some of you
990990991991248
992992-00:18:18.000 --> 00:18:22.000
993993-Let me put this back in full screen.
992992+00:09:39.820 --> 00:09:41.980
993993+will feel sad about this, sort of.
994994995995249
996996-00:18:22.000 --> 00:18:23.000
997997-Or not.
996996+00:09:42.980 --> 00:09:44.860
997997+Is the craft going away?
998998999999250
10001000-00:18:23.000 --> 00:18:28.000
10011001-This is the fun of creating your own presentation software.
10001000+00:09:44.860 --> 00:09:46.700
10011001+I've been posting a bunch of stuff on that leaflet
1002100210031003251
10041004-00:18:28.000 --> 00:18:36.000
10051005-So when I was implementing this, I realized when I got to a certain point, I'm going to generate some code.
10041004+00:09:46.700 --> 00:09:48.620
10051005+and people get mad every time I post something,
1006100610071007252
10081008-00:18:36.000 --> 00:18:38.000
10091009-What the hell am I going to generate?
10081008+00:09:48.620 --> 00:09:50.220
10091009+there's at least someone who is angry
1010101010111011253
10121012-00:18:38.000 --> 00:18:40.000
10131013-Like is it a React application?
10121012+00:09:50.220 --> 00:09:53.060
10131013+and like, you're a wrong idiot,
1014101410151015254
10161016-00:18:40.000 --> 00:18:42.000
10171017-Is it a Next.js application?
10161016+00:09:53.060 --> 00:09:54.420
10171017+you are influenced by marketing,
1018101810191019255
10201020-00:18:42.000 --> 00:18:44.000
10211021-Is it a Rust thing?
10201020+00:09:54.420 --> 00:09:56.220
10211021+that was yesterday's post, actually.
1022102210231023256
10241024-00:18:44.000 --> 00:18:46.000
10251025-The answer is I don't know.
10241024+00:09:57.620 --> 00:10:00.060
10251025+But the craft doesn't disappear, it just moves.
1026102610271027257
10281028-00:18:46.000 --> 00:18:52.000
10291029-And not only do I not know, I don't want to have to, for a given application, decide those things.
10281028+00:10:00.060 --> 00:10:02.460
10291029+So from doing test-driven development,
1030103010311031258
10321032-00:18:52.000 --> 00:19:00.000
10331033-Because I want to be able to move from, let's say, JavaScript to Rust when the Lazarus group takes over NPM.
10321032+00:10:02.460 --> 00:10:05.100
10331033+you need to be thinking about how you evaluate the code
1034103410351035259
10361036-00:19:00.000 --> 00:19:04.000
10371037-They're not going to, but if they did, I want that flexibility.
10361036+00:10:05.100 --> 00:10:06.540
10371037+from a business perspective
1038103810391039260
10401040-00:19:04.000 --> 00:19:14.000
10411041-And the real life story behind that is at Wonderlist again, we launched Wonderlist 3, which was our huge rewrite that finally made the sync work and everyone was happy with it.
10401040+00:10:06.540 --> 00:10:08.940
10411041+and from an architectural perspective
1042104210431043261
10441044-00:19:14.000 --> 00:19:17.000
10451045-We launched it with Ruby on Rails as the back end.
10441044+00:10:08.940 --> 00:10:11.900
10451045+in terms of what the technical requirements are of the code.
1046104610471047262
10481048-00:19:17.000 --> 00:19:23.000
10491049-Lovely for humans, not great for compute, very expensive to run.
10481048+00:10:12.860 --> 00:10:14.860
10491049+You'll be thinking about things like,
1050105010511051263
10521052-00:19:23.000 --> 00:19:31.000
10531053-But the way we had architected this back in 2013-14 allowed us, for the same reasons that we could fix the heartbleed problem,
10521052+00:10:14.860 --> 00:10:17.700
10531053+what are the boundaries and what is the actual architecture
1054105410551055264
10561056-00:19:31.000 --> 00:19:35.000
10571057-allowed us to rewrite each service in another language within three months.
10561056+00:10:17.700 --> 00:10:19.180
10571057+that can work in a system
1058105810591059265
10601060-00:19:35.000 --> 00:19:45.000
10611061-And we went from, I'll just say we saved 70% of our compute costs by rewriting services without affecting the system.
10601060+00:10:19.180 --> 00:10:21.140
10611061+that's constantly replacing itself?
1062106210631063266
10641064-00:19:45.000 --> 00:19:48.000
10651065-Because we were just replacing the components.
10641064+00:10:21.140 --> 00:10:22.580
10651065+How can that possibly work?
1066106610671067267
10681068-00:19:48.000 --> 00:19:55.000
10691069-So in a system like this, if we're building this for agents, if we're building this for a constantly regenerating world,
10681068+00:10:22.580 --> 00:10:24.740
10691069+And so I'm gonna dig into that kind of stuff.
1070107010711071268
10721072-00:19:55.000 --> 00:20:11.000
10731073-we need to compile not to an implementation, but we need to compile to an architecture that has these properties of components with boundaries that are just like that Haskell thing I was talking about earlier that can be replaced at will because the boundaries are clear enough.
10721072+00:10:26.340 --> 00:10:30.420
10731073+One note here though, is there is still very much a craft
1074107410751075269
10761076-00:20:11.000 --> 00:20:20.000
10771077-So the idea is you have some intent. Maybe it comes from a conversation. Usually they come from conversation. Maybe documents, lots of conversations.
10761076+00:10:30.420 --> 00:10:31.900
10771077+or an engineering discipline
1078107810791079270
10801080-00:20:20.000 --> 00:20:26.000
10811081-The intent is then compiled into some decisions, not into code necessarily.
10801080+00:10:31.900 --> 00:10:34.340
10811081+or whatever sort of metaphor you wanna use, art.
1082108210831083271
10841084-00:20:26.000 --> 00:20:39.000
10851085-The decisions then generate code. And then they go through an evaluation loop where you see, well, is this code actually doing the thing that it's required to do based on the specs, including all those invariants and constraints and stuff I was talking about earlier.
10841084+00:10:34.340 --> 00:10:36.500
10851085+I'm a musician, so maybe there's a craft
1086108610871087272
10881088-00:20:39.000 --> 00:20:43.000
10891089-That could even be stuff that's coming from observability systems.
10881088+00:10:37.340 --> 00:10:38.740
10891089+or there's an art to it.
1090109010911091273
10921092-00:20:43.000 --> 00:20:51.000
10931093-So I think software development in the near future is a closed loop from production where you're actually pulling in what's happening in production.
10921092+00:10:38.740 --> 00:10:40.580
10931093+And what I'm seeing now in the fear
1094109410951095274
10961096-00:20:51.000 --> 00:20:56.000
10971097-It's informing and saying, well, this thing has now drifted from the requirements.
10961096+00:10:40.580 --> 00:10:42.620
10971097+that a lot of people have in the software industry
1098109810991099275
11001100-00:20:56.000 --> 00:21:03.000
11011101-I think we should regenerate these two components because they're not doing the thing that the business says they need to do.
11001100+00:10:42.620 --> 00:10:46.220
11011101+is that the senior people,
1102110211031103276
11041104-00:21:03.000 --> 00:21:17.000
11051105-So then you record the provenance, which means the chain of the human and human's agents and all of the different specs and everything else that led to the generation capture it forever cryptographically.
11041104+00:10:46.220 --> 00:10:48.620
11051105+and senior doesn't have to mean old or even experienced,
1106110611071107277
11081108-00:21:17.000 --> 00:21:25.000
11091109-Then you deploy it within the boundaries. Same way I talked about with Wonderless. So you're deploying these nice, tight, controlled components.
11081108+00:10:48.620 --> 00:10:50.660
11091109+but somehow the people who have gained wisdom
1110111011111111278
11121112-00:21:25.000 --> 00:21:36.000
11131113-And then I won't talk about this now, but if you read the blog, you will compact because we are creating tons and tons of garbage, those of us who are making stuff with LLMs now.
11121112+00:10:50.660 --> 00:10:52.300
11131113+in this field somehow,
1114111411151115279
11161116-00:21:36.000 --> 00:21:46.000
11171117-I accidentally created two web interfaces for my IRC network, and it took me a while to delete them because I couldn't remember which one was the right one. So there you go.
11161116+00:10:53.460 --> 00:10:58.460
11171117+they are moving farther and farther away from the newbies
1118111811191119280
11201120-00:21:47.000 --> 00:22:02.000
11211121-So I should mention what is an evaluation because this is an overloaded term now. I kind of got into it. It's all of these different things, the requirements that could be just like it must act like this, what we're used to with specs and user stories.
11201120+00:10:59.780 --> 00:11:02.340
11211121+because everything moves so quickly
1122112211231123281
11241124-00:22:02.000 --> 00:22:09.000
11251125-But it's also it shouldn't use this much memory or it has to be this fast or it has to be deployable on this thing or whatever.
11241124+00:11:02.340 --> 00:11:05.260
11251125+and the mistakes you make have such great
1126112611271127282
11281128-00:22:09.000 --> 00:22:20.000
11291129-So evaluations are the thing that are about the system and not about the code. It's not unit tests because unit tests are tied to actual implementation. So that's not the thing that you want to rely on.
11281128+00:11:05.260 --> 00:11:06.860
11291129+and instant ramifications.
1130113011311131283
11321132-00:22:20.000 --> 00:22:30.000
11331133-That's also a thing that they can generate better than we can and we should let them. So it might be has to have 100% test coverage and they always have to pass. That sort of stuff. That could be one.
11321132+00:11:06.860 --> 00:11:11.300
11331133+And the good choices you make have such major ramifications
11341134+11351135+284
11361136+00:11:11.300 --> 00:11:15.780
11371137+that this AI thing amplifies the effect of this experience.
11381138+11391139+285
11401140+00:11:17.540 --> 00:11:20.980
11411141+So Phoenix architecture, what is it?
11421142+11431143+286
11441144+00:11:20.980 --> 00:11:25.220
11451145+It's a name that I let the AI choose, honestly.
11461146+11471147+287
11481148+00:11:25.220 --> 00:11:26.100
11491149+This is a thing I do
11501150+11511151+288
11521152+00:11:26.100 --> 00:11:28.620
11531153+because naming is one of the hardest things, right?
11541154+11551155+289
11561156+00:11:28.620 --> 00:11:30.260
11571157+So that's why we have LLMs.
11581158+11591159+290
11601160+00:11:30.260 --> 00:11:31.820
11611161+You don't ever have to name anything again.
11621162+11631163+291
11641164+00:11:31.820 --> 00:11:34.740
11651165+Just make sure it's not offensive in any language if you can,
11661166+11671167+292
11681168+00:11:34.740 --> 00:11:36.460
11691169+but you can ask the LLM that too.
11701170+11711171+293
11721172+00:11:37.420 --> 00:11:38.940
11731173+It's an architectural idea,
11741174+11751175+294
11761176+00:11:38.940 --> 00:11:40.900
11771177+a bunch of architectural principles.
11781178+11791179+295
11801180+00:11:41.820 --> 00:11:45.300
11811181+As I said, they are extracted from my decades
11821182+11831183+296
11841184+00:11:45.300 --> 00:11:46.700
11851185+of thinking about this problem
11861186+11871187+297
11881188+00:11:46.700 --> 00:11:49.260
11891189+and trying to figure out how we can create systems
11901190+11911191+298
11921192+00:11:49.260 --> 00:11:50.380
11931193+that can survive.
11941194+11951195+299
11961196+00:11:50.380 --> 00:11:53.980
11971197+So if you Google for me, if anyone uses Google anymore
11981198+11991199+300
12001200+00:11:53.980 --> 00:11:55.820
12011201+and put the word legacy,
12021202+12031203+301
12041204+00:11:55.820 --> 00:11:58.220
12051205+you will find me talking about this back in 2009.
12061206+12071207+302
12081208+00:11:58.220 --> 00:12:00.540
12091209+And some of the things I'm gonna say are the same today
12101210+12111211+303
12121212+00:12:00.540 --> 00:12:03.540
12131213+because I realized that making systems that can survive,
12141214+12151215+304
12161216+00:12:03.540 --> 00:12:06.020
12171217+the principles have been the same for a long time.
12181218+12191219+305
12201220+00:12:06.900 --> 00:12:10.580
12211221+It's also a reference implementation of this architecture.
12221222+12231223+306
12241224+00:12:10.580 --> 00:12:13.340
12251225+And I'm gonna show you two things very briefly
12261226+12271227+307
12281228+00:12:13.340 --> 00:12:15.100
12291229+on the reference implementation
12301230+12311231+308
12321232+00:12:15.100 --> 00:12:16.380
12331233+and you can find it on Tangled
12341234+12351235+309
12361236+00:12:16.380 --> 00:12:18.940
12371237+or you can find it on the copy on GitHub.
12381238+12391239+310
12401240+00:12:18.940 --> 00:12:21.180
12411241+Obviously you're all gonna use Tangled, right?
12421242+12431243+311
12441244+00:12:22.460 --> 00:12:26.260
12451245+So I'm starting to think about software,
12461246+12471247+312
12481248+00:12:26.260 --> 00:12:29.300
12491249+not as a thing where you go into an editor.
12501250+12511251+313
12521252+00:12:29.300 --> 00:12:31.660
12531253+That's always been like a short version
12541254+12551255+314
12561256+00:12:31.660 --> 00:12:32.900
12571257+of what the AI thing would be,
12581258+12591259+315
12601260+00:12:32.900 --> 00:12:36.500
12611261+these copilot things in an IDE that's gone already,
12621262+12631263+316
12641264+00:12:36.500 --> 00:12:38.660
12651265+but rather a pipeline.
12661266+12671267+317
12681268+00:12:38.660 --> 00:12:43.100
12691269+So we go from specifications to something else,
12701270+12711271+318
12721272+00:12:43.100 --> 00:12:44.420
12731273+to something else, to something else
12741274+12751275+319
12761276+00:12:44.420 --> 00:12:46.140
12771277+that ends up generating code.
12781278+12791279+320
12801280+00:12:46.140 --> 00:12:48.580
12811281+And the something else is here.
12821282+12831283+321
12841284+00:12:48.580 --> 00:12:49.620
12851285+You won't be able to read this,
12861286+12871287+322
12881288+00:12:49.620 --> 00:12:51.620
12891289+but you can just kind of see columns here.
12901290+12911291+323
12921292+00:12:51.620 --> 00:12:54.020
12931293+Imagine you've got a bunch of markdown specifications.
12941294+12951295+324
12961296+00:12:54.020 --> 00:12:56.100
12971297+Those are just things where you just type stuff.
12981298+12991299+325
13001300+00:12:56.100 --> 00:12:59.340
13011301+Maybe you're also in a chat program like a freak,
13021302+13031303+326
13041304+00:12:59.340 --> 00:13:01.540
13051305+ask me about freak, F-R-E-E-Q.
13061306+13071307+327
13081308+00:13:02.980 --> 00:13:06.580
13091309+From that will be extracted clauses.
13101310+13111311+328
13121312+00:13:06.580 --> 00:13:08.540
13131313+So you can use LLMs for this.
13141314+13151315+329
13161316+00:13:08.540 --> 00:13:10.140
13171317+It's not quite perfect,
13181318+13191319+330
13201320+00:13:10.140 --> 00:13:13.100
13211321+but my reference implementation does some hacks.
13221322+13231323+331
13241324+00:13:13.100 --> 00:13:15.540
13251325+You extract clauses which are like different ways
13261326+13271327+332
13281328+00:13:15.540 --> 00:13:16.500
13291329+of saying the same thing.
13301330+13311331+333
13321332+00:13:16.500 --> 00:13:19.540
13331333+You can kind of deduplicate them into those text chunks.
13341334+13351335+334
13361336+00:13:19.540 --> 00:13:21.700
13371337+From that, you can canonicalize
13381338+13391339+335
13401340+00:13:21.700 --> 00:13:24.780
13411341+and deduplicate actual requirements.
13421342+13431343+336
13441344+00:13:24.780 --> 00:13:27.780
13451345+From that, you can expand them into various things
13461346+13471347+337
13481348+00:13:27.780 --> 00:13:28.820
13491349+that you want to evaluate.
13501350+13511351+338
13521352+00:13:28.820 --> 00:13:29.860
13531353+They could be invariants.
13541354+13551355+339
13561356+00:13:29.860 --> 00:13:32.000
13571357+They could be various other constraints.
13581358+13591359+340
13601360+00:13:32.000 --> 00:13:33.640
13611361+They might even be things like,
13621362+13631363+341
13641364+00:13:33.640 --> 00:13:36.040
13651365+this component must be fast,
13661366+13671367+342
13681368+00:13:36.040 --> 00:13:37.480
13691369+which turns into this component
13701370+13711371+343
13721372+00:13:37.480 --> 00:13:39.520
13731373+must respond within 50 milliseconds.
13741374+13751375+344
13761376+00:13:39.520 --> 00:13:41.360
13771377+So that becomes a constraint.
13781378+13791379+345
13801380+00:13:41.360 --> 00:13:43.880
13811381+And from there, you go into the implementation,
13821382+13831383+346
13841384+00:13:43.880 --> 00:13:45.400
13851385+which I'm gonna talk about in a second,
13861386+13871387+347
13881388+00:13:45.400 --> 00:13:48.840
13891389+has two phases sort of necessarily.
13901390+13911391+348
13921392+00:13:48.840 --> 00:13:51.380
13931393+The cool thing about this is,
13941394+13951395+349
13961396+00:13:54.200 --> 00:13:55.600
13971397+if you create a system like this,
13981398+13991399+350
14001400+00:13:55.600 --> 00:13:57.600
14011401+where you're actually thinking of that end piece,
14021402+14031403+351
14041404+00:13:57.600 --> 00:14:00.000
14051405+the code as a compiled artifact,
14061406+14071407+352
14081408+00:14:00.000 --> 00:14:02.000
14091409+think of it as a binary, like TypeScript
14101410+14111411+353
14121412+00:14:02.000 --> 00:14:03.280
14131413+or whatever you're generating.
14141414+14151415+354
14161416+00:14:03.280 --> 00:14:05.740
14171417+It's like binary code, you wouldn't edit it.
14181418+14191419+355
14201420+00:14:05.740 --> 00:14:09.100
14211421+It also means that you can trace the provenance
14221422+14231423+356
14241424+00:14:09.100 --> 00:14:10.480
14251425+from the markdown file,
14261426+14271427+357
14281428+00:14:10.480 --> 00:14:12.560
14291429+from a piece of text in the markdown file,
14301430+14311431+358
14321432+00:14:12.560 --> 00:14:14.460
14331433+through this graph of requirements,
14341434+14351435+359
14361436+00:14:14.460 --> 00:14:17.320
14371437+all the way through to the generated thing at the end.
14381438+14391439+360
14401440+00:14:17.320 --> 00:14:19.640
14411441+So just like you were doing a C program or something,
14421442+14431443+361
14441444+00:14:19.640 --> 00:14:21.800
14451445+where you're compiling from C to an object file
14461446+14471447+362
14481448+00:14:21.800 --> 00:14:23.540
14491449+to blah, blah, blah,
14501450+14511451+363
14521452+00:14:23.540 --> 00:14:26.120
14531453+the TypeScript is just in that dependent path.
14541454+14551455+364
14561456+00:14:26.120 --> 00:14:28.560
14571457+And so when you set up a system like this,
14581458+14591459+365
14601460+00:14:28.560 --> 00:14:29.600
14611461+you can do two things.
14621462+14631463+366
14641464+00:14:29.600 --> 00:14:32.220
14651465+One is you can regenerate just the path
14661466+14671467+367
14681468+00:14:32.220 --> 00:14:35.220
14691469+down to the component at the end that you wanna generate.
14701470+14711471+368
14721472+00:14:35.220 --> 00:14:38.340
14731473+The other is, if someone does do the wrong thing,
14741474+14751475+369
14761476+00:14:38.340 --> 00:14:42.120
14771477+so I say, and edit the code themselves as a human,
14781478+14791479+370
14801480+00:14:42.120 --> 00:14:43.540
14811481+you can see where it drifts.
14821482+14831483+371
14841484+00:14:43.540 --> 00:14:45.680
14851485+And you can see, well, the drift is here
14861486+14871487+372
14881488+00:14:45.680 --> 00:14:47.400
14891489+and it actually affects this spec.
14901490+14911491+373
14921492+00:14:47.400 --> 00:14:51.360
14931493+And I could even like automatically analyze the code
14941494+14951495+374
14961496+00:14:51.360 --> 00:14:54.080
14971497+and see it's changed the spec in a certain way.
14981498+14991499+375
15001500+00:14:54.080 --> 00:14:55.360
15011501+Is that actually the spec now?
15021502+15031503+376
15041504+00:14:55.360 --> 00:14:56.200
15051505+Is that what you meant?
15061506+15071507+377
15081508+00:14:56.200 --> 00:14:58.920
15091509+And commit it as the real intent of the code.
15101510+15111511+378
15121512+00:14:58.920 --> 00:15:01.560
15131513+Because intent is what matters more than anything else.
15141514+15151515+379
15161516+00:15:01.560 --> 00:15:03.500
15171517+Now, intent plus architecture.
15181518+15191519+380
15201520+00:15:05.680 --> 00:15:07.480
15211521+Let me put this back in full screen.
15221522+15231523+381
15241524+00:15:09.240 --> 00:15:10.440
15251525+Or not.
15261526+15271527+382
15281528+00:15:10.440 --> 00:15:13.680
15291529+This is the fun of creating your own presentation software.
15301530+15311531+383
15321532+00:15:15.180 --> 00:15:18.700
15331533+So when I was implementing this,
15341534+15351535+384
15361536+00:15:18.700 --> 00:15:21.240
15371537+I realized when I got to a certain point,
15381538+15391539+385
15401540+00:15:21.240 --> 00:15:22.800
15411541+I'm gonna generate some code.
15421542+15431543+386
15441544+00:15:22.800 --> 00:15:24.720
15451545+What the hell am I gonna generate?
15461546+15471547+387
15481548+00:15:24.720 --> 00:15:27.140
15491549+Like, is it a React application?
15501550+15511551+388
15521552+00:15:27.140 --> 00:15:29.260
15531553+Is it a Next.js application?
15541554+15551555+389
15561556+00:15:29.260 --> 00:15:30.960
15571557+Is it a Rust thing?
15581558+15591559+390
15601560+00:15:30.960 --> 00:15:32.900
15611561+The answer is, I don't know.
15621562+15631563+391
15641564+00:15:32.900 --> 00:15:35.220
15651565+And not only do I not know,
15661566+15671567+392
15681568+00:15:35.220 --> 00:15:37.500
15691569+I don't wanna have to, for a given application,
15701570+15711571+393
15721572+00:15:37.500 --> 00:15:38.900
15731573+decide those things.
15741574+15751575+394
15761576+00:15:38.900 --> 00:15:41.340
15771577+Because I want to be able to move from,
15781578+15791579+395
15801580+00:15:41.340 --> 00:15:44.260
15811581+let's say JavaScript to Rust,
15821582+15831583+396
15841584+00:15:44.260 --> 00:15:47.180
15851585+when the Lazarus group takes over NPM.
15861586+15871587+397
15881588+00:15:47.180 --> 00:15:48.940
15891589+They're not going to, but if they did,
15901590+15911591+398
15921592+00:15:48.940 --> 00:15:50.420
15931593+I want that flexibility.
15941594+15951595+399
15961596+00:15:50.420 --> 00:15:52.580
15971597+And the real life story behind that is,
15981598+15991599+400
16001600+00:15:52.580 --> 00:15:55.340
16011601+at Wonderlist again, we launched Wonderlist 3,
16021602+16031603+401
16041604+00:15:55.340 --> 00:15:58.120
16051605+which was our huge rewrite that finally made the sync work
16061606+16071607+402
16081608+00:15:58.120 --> 00:16:00.380
16091609+and everyone was happy with it.
16101610+16111611+403
16121612+00:16:00.380 --> 00:16:04.180
16131613+We launched it with Ruby on Rails as the backend.
16141614+16151615+404
16161616+00:16:04.180 --> 00:16:07.320
16171617+Lovely for humans, not great for compute,
16181618+16191619+405
16201620+00:16:07.320 --> 00:16:09.540
16211621+very expensive to run.
16221622+16231623+406
16241624+00:16:09.540 --> 00:16:13.620
16251625+But the way we had architected this back in 2013, 14,
16261626+16271627+407
16281628+00:16:13.620 --> 00:16:15.500
16291629+allowed us, for the same reasons
16301630+16311631+408
16321632+00:16:15.500 --> 00:16:17.380
16331633+that we could fix the heartbleed problem,
16341634+16351635+409
16361636+00:16:17.380 --> 00:16:19.380
16371637+allowed us to rewrite each service
16381638+16391639+410
16401640+00:16:19.380 --> 00:16:21.620
16411641+in another language within three months.
16421642+16431643+411
16441644+00:16:21.780 --> 00:16:27.020
16451645+And we went from, I'll just say we saved 70%
16461646+16471647+412
16481648+00:16:27.020 --> 00:16:29.980
16491649+of our compute costs by rewriting services
16501650+16511651+413
16521652+00:16:29.980 --> 00:16:32.060
16531653+without affecting the system.
16541654+16551655+414
16561656+00:16:32.060 --> 00:16:34.580
16571657+Because we were just replacing the components.
16581658+16591659+415
16601660+00:16:34.580 --> 00:16:37.740
16611661+So in a system like this, if we're building this for agents,
16621662+16631663+416
16641664+00:16:37.740 --> 00:16:41.660
16651665+if we're building this for a constantly regenerating world,
16661666+16671667+417
16681668+00:16:41.660 --> 00:16:44.380
16691669+we need to compile not to an implementation,
16701670+16711671+418
16721672+00:16:44.380 --> 00:16:46.300
16731673+but we need to compile to an architecture
16741674+16751675+419
16761676+00:16:46.300 --> 00:16:49.660
16771677+that has these properties of components with boundaries
16781678+16791679+420
16801680+00:16:49.700 --> 00:16:51.220
16811681+that are just like that Haskell thing
16821682+16831683+421
16841684+00:16:51.220 --> 00:16:54.700
16851685+I was talking about earlier, that can be replaced at will
16861686+16871687+422
16881688+00:16:54.700 --> 00:16:56.700
16891689+because the boundaries are clear enough.
16901690+16911691+423
16921692+00:16:58.140 --> 00:17:00.900
16931693+So the idea is you have some intent.
16941694+16951695+424
16961696+00:17:00.900 --> 00:17:02.580
16971697+Maybe it comes from a conversation.
16981698+16991699+425
17001700+00:17:02.580 --> 00:17:04.180
17011701+Usually they come from a conversation.
17021702+17031703+426
17041704+00:17:04.180 --> 00:17:06.820
17051705+Maybe documents, lots of conversations.
17061706+17071707+427
17081708+00:17:06.820 --> 00:17:10.660
17091709+The intent is then compiled into some decisions,
17101710+17111711+428
17121712+00:17:10.660 --> 00:17:12.860
17131713+not into code necessarily.
17141714+17151715+429
17161716+00:17:12.860 --> 00:17:15.020
17171717+The decisions then generate code.
17181718+17191719+430
17201720+00:17:15.020 --> 00:17:17.220
17211721+And then they go through an evaluation loop
17221722+17231723+431
17241724+00:17:17.220 --> 00:17:19.420
17251725+where you see, well, is this code actually doing the thing
17261726+17271727+432
17281728+00:17:19.740 --> 00:17:21.700
17291729+that it's required to do based on the specs,
17301730+17311731+433
17321732+00:17:21.700 --> 00:17:23.900
17331733+including all those invariants and constraints
17341734+17351735+434
17361736+00:17:23.900 --> 00:17:25.780
17371737+and stuff I was talking about earlier.
17381738+17391739+435
17401740+00:17:25.780 --> 00:17:27.340
17411741+That could even be stuff that's coming
17421742+17431743+436
17441744+00:17:27.340 --> 00:17:29.660
17451745+from observability systems.
17461746+17471747+437
17481748+00:17:29.660 --> 00:17:32.740
17491749+So I think software development in the near future
17501750+17511751+438
17521752+00:17:32.740 --> 00:17:35.580
17531753+is a closed loop from production,
17541754+17551755+439
17561756+00:17:35.580 --> 00:17:37.260
17571757+where you're actually pulling in what's happening
17581758+17591759+440
17601760+00:17:37.260 --> 00:17:39.540
17611761+in production, it's informing and saying,
17621762+17631763+441
17641764+00:17:39.540 --> 00:17:43.060
17651765+well, this thing has now drifted from the requirements.
17661766+17671767+442
17681768+00:17:43.060 --> 00:17:45.220
17691769+I think we should regenerate these two components
17701770+17711771+443
17721772+00:17:45.220 --> 00:17:46.460
17731773+because they're not doing the thing
17741774+17751775+444
17761776+00:17:46.460 --> 00:17:48.420
17771777+that the business says they need to do.
17781778+17791779+445
17801780+00:17:49.820 --> 00:17:51.820
17811781+So then you record the provenance,
17821782+17831783+446
17841784+00:17:51.820 --> 00:17:53.620
17851785+which means the chain of the human
17861786+17871787+447
17881788+00:17:53.620 --> 00:17:57.100
17891789+or the human and human's agents
17901790+17911791+448
17921792+00:17:57.100 --> 00:17:58.860
17931793+and all of the different specs
17941794+17951795+449
17961796+00:17:58.860 --> 00:18:01.220
17971797+and everything else that led to the generation
17981798+17991799+450
18001800+00:18:01.220 --> 00:18:03.820
18011801+capture it forever, cryptographically.
18021802+18031803+451
18041804+00:18:03.820 --> 00:18:06.060
18051805+Then you deploy it within the boundaries,
18061806+18071807+452
18081808+00:18:06.060 --> 00:18:07.500
18091809+same way I talked about with Wonderless.
18101810+18111811+453
18121812+00:18:07.500 --> 00:18:09.260
18131813+So you're deploying these nice,
18141814+18151815+454
18161816+00:18:09.260 --> 00:18:12.220
18171817+tight, controlled components.
18181818+18191819+455
18201820+00:18:12.220 --> 00:18:13.900
18211821+And then I won't talk about this now,
18221822+18231823+456
18241824+00:18:13.900 --> 00:18:16.500
18251825+but if you read the blog, you will compact
18261826+18271827+457
18281828+00:18:16.500 --> 00:18:19.860
18291829+because we are creating tons and tons of garbage,
18301830+18311831+458
18321832+00:18:19.860 --> 00:18:22.900
18331833+those of us who are making stuff with LLMs now.
18341834+18351835+459
18361836+00:18:22.900 --> 00:18:25.700
18371837+I accidentally created two web interfaces
18381838+18391839+460
18401840+00:18:25.700 --> 00:18:27.940
18411841+for my IRC network and it took me a while
18421842+18431843+461
18441844+00:18:27.940 --> 00:18:29.380
18451845+to delete them because I couldn't remember
18461846+18471847+462
18481848+00:18:29.380 --> 00:18:30.540
18491849+which one was the right one.
18501850+18511851+463
18521852+00:18:30.540 --> 00:18:31.740
18531853+So there you go.
18541854+18551855+464
18561856+00:18:32.980 --> 00:18:37.060
18571857+So I should mention what is an evaluation
18581858+18591859+465
18601860+00:18:37.060 --> 00:18:38.860
18611861+because this is an overloaded term now.
18621862+18631863+466
18641864+00:18:38.860 --> 00:18:40.380
18651865+I kind of got into it.
18661866+18671867+467
18681868+00:18:40.380 --> 00:18:42.340
18691869+It's all of these different things,
18701870+18711871+468
18721872+00:18:42.340 --> 00:18:44.420
18731873+the requirements that could be just like,
18741874+18751875+469
18761876+00:18:44.420 --> 00:18:46.020
18771877+it must act like this.
18781878+18791879+470
18801880+00:18:46.500 --> 00:18:48.580
18811881+It's not what we're used to with specs and user stories,
18821882+18831883+471
18841884+00:18:48.580 --> 00:18:50.780
18851885+but it's also, it shouldn't use this much memory
18861886+18871887+472
18881888+00:18:50.780 --> 00:18:54.060
18891889+or it has to be this fast or it has to be deployable
18901890+18911891+473
18921892+00:18:54.060 --> 00:18:55.380
18931893+on this thing or whatever.
18941894+18951895+474
18961896+00:18:55.380 --> 00:18:59.620
18971897+So evaluations are the thing that are about the system
18981898+18991899+475
19001900+00:18:59.620 --> 00:19:00.740
19011901+and not about the code.
19021902+19031903+476
19041904+00:19:00.740 --> 00:19:02.940
19051905+It's not unit tests because unit tests
19061906+19071907+477
19081908+00:19:02.940 --> 00:19:04.580
19091909+are tied to actual implementation.
19101910+19111911+478
19121912+00:19:04.580 --> 00:19:06.700
19131913+So that's not the thing that you want to rely on.
19141914+19151915+479
19161916+00:19:06.700 --> 00:19:09.100
19171917+That's also a thing that they can generate
19181918+19191919+480
19201920+00:19:09.100 --> 00:19:11.340
19211921+better than we can and we should let them.
19221922+19231923+481
19241924+00:19:11.340 --> 00:19:14.140
19251925+So it might be, has to have 100% test coverage
19261926+19271927+482
19281928+00:19:14.140 --> 00:19:16.180
19291929+and they always have to pass, that sort of stuff.
19301930+19311931+483
19321932+00:19:16.180 --> 00:19:17.020
19331933+That could be one.
19341934+19351935+484
19361936+00:19:19.300 --> 00:19:21.580
19371937+And then here's the sort of secret.
19381938+19391939+485
19401940+00:19:21.580 --> 00:19:23.540
19411941+In the flow I showed you earlier,
19421942+19431943+486
19441944+00:19:23.540 --> 00:19:27.220
19451945+where you have specs going to canonical requirements,
19461946+19471947+487
19481948+00:19:27.220 --> 00:19:30.580
19491949+et cetera, et cetera, there are two things in the,
19501950+19511951+488
19521952+00:19:30.580 --> 00:19:33.020
19531953+there are two like columns and implementation.
19541954+19551955+489
19561956+00:19:33.020 --> 00:19:36.140
19571957+Before you get to the actual implementation,
19581958+19591959+490
19601960+00:19:36.140 --> 00:19:38.260
19611961+I'm calling this implementation units
19621962+19631963+491
19641964+00:19:38.260 --> 00:19:40.060
19651965+because this is actually the decisions
19661966+19671967+492
19681968+00:19:40.060 --> 00:19:41.900
19691969+about what components should exist
19701970+19711971+493
19721972+00:19:41.900 --> 00:19:44.140
19731973+and what their behaviors and boundaries
19741974+19751975+494
19761976+00:19:44.140 --> 00:19:45.700
19771977+and interfaces need to be.
19781978+19791979+495
19801980+00:19:46.620 --> 00:19:50.460
19811981+This should not be language or runtime dependent.
19821982+19831983+496
19841984+00:19:50.460 --> 00:19:54.100
19851985+This is the promise of a thing that will be implemented
19861986+19871987+497
19881988+00:19:54.100 --> 00:19:57.260
19891989+in some language and deployed in some runtime
19901990+19911991+498
19921992+00:19:57.260 --> 00:20:00.620
19931993+that meets the requirements of the specifications.
19941994+19951995+499
19961996+00:20:00.620 --> 00:20:02.940
19971997+And this is a really powerful thing
19981998+19991999+500
20002000+00:20:02.940 --> 00:20:05.780
20012001+because it means you can do things like say,
20022002+20032003+501
20042004+00:20:05.780 --> 00:20:07.580
20052005+well let's just do a pass this afternoon
20062006+20072007+502
20082008+00:20:07.580 --> 00:20:09.780
20092009+and see if we can make this thing 50% faster.
20102010+20112011+503
20122012+00:20:09.820 --> 00:20:12.420
20132013+Okay, good, Friday, deploy it.
20142014+20152015+504
20162016+00:20:12.420 --> 00:20:13.900
20172017+That's where we wanna get with this stuff.
20182018+20192019+505
20202020+00:20:13.900 --> 00:20:15.580
20212021+So implementation units are sort of like
20222022+20232023+506
20242024+00:20:15.580 --> 00:20:19.220
20252025+the semi abstract version of the thing that you wanna test
20262026+20272027+507
20282028+00:20:19.220 --> 00:20:21.620
20292029+and they're what the actual evaluations tie to.
20302030+20312031+508
20322032+00:20:21.620 --> 00:20:23.340
20332033+And the implementations can have unit tests
20342034+20352035+509
20362036+00:20:23.340 --> 00:20:24.500
20372037+and all the other stuff that you're used to
20382038+20392039+510
20402040+00:20:24.500 --> 00:20:25.580
20412041+in your language.
20422042+20432043+511
20442044+00:20:25.580 --> 00:20:28.340
20452045+But we are actually past a point now of,
20462046+20472047+512
20482048+00:20:28.340 --> 00:20:31.180
20492049+I think, sorry, language advocacy.
20502050+20512051+513
20522052+00:20:31.180 --> 00:20:33.180
20532053+And I say that as someone who like,
20542054+20552055+514
20562056+00:20:33.180 --> 00:20:35.580
20572057+I was like, I started the Ruby nonprofit
20582058+20592059+515
20602060+00:20:35.580 --> 00:20:37.100
20612061+and the Rails comp and Ruby comp
20622062+20632063+516
20642064+00:20:37.100 --> 00:20:38.260
20652065+and wrote the Ruby gems thing
20662066+20672067+517
20682068+00:20:38.260 --> 00:20:40.540
20692069+and spoke at Ruby conferences and wrote books about Ruby
20702070+20712071+518
20722072+00:20:40.540 --> 00:20:43.780
20732073+and I was all Ruby, Ruby, Ruby 20 something years ago.
20742074+20752075+519
20762076+00:20:43.780 --> 00:20:47.100
20772077+And I'm going to Ruby comp to receive an award this year
20782078+20792079+520
20802080+00:20:47.100 --> 00:20:49.540
20812081+and tell them, you probably ought to not use Ruby anymore.
20822082+20832083+521
20842084+00:20:49.540 --> 00:20:50.660
20852085+It's not a good idea.
20862086+20872087+522
20882088+00:20:51.620 --> 00:20:53.460
20892089+Because who's Ruby for?
20902090+20912091+523
20922092+00:20:53.460 --> 00:20:54.500
20932093+People.
20942094+20952095+524
20962096+00:20:54.500 --> 00:20:55.620
20972097+Ruby is for people.
20982098+20992099+525
21002100+00:20:56.780 --> 00:20:58.780
21012101+These programs are for machines.
21022102+21032103+526
21042104+00:20:58.780 --> 00:21:01.100
21052105+And what matters now is that they're fast, correct.
21062106+21072107+527
21082108+00:21:01.100 --> 00:21:02.820
21092109+You can generate them with LLMs
21102110+21112111+528
21122112+00:21:02.820 --> 00:21:04.620
21132113+or whatever the technology is gonna be.
21142114+21152115+529
21162116+00:21:04.620 --> 00:21:05.760
21172117+They're cheap to run.
21182118+21192119+530
21202120+00:21:05.760 --> 00:21:06.740
21212121+That's what matters.
21222122+21232123+531
21242124+00:21:06.740 --> 00:21:08.140
21252125+Doesn't matter what language it is anymore.
21262126+21272127+532
21282128+00:21:08.960 --> 00:21:10.740
21292129+So let go of that except for your hobby time.
21302130+21312131+533
21322132+00:21:10.740 --> 00:21:12.100
21332133+Write it in your hobby time.
21342134+21352135+534
21362136+00:21:12.100 --> 00:21:13.380
21372137+Find fun.
21382138+21392139+535
21402140+00:21:13.380 --> 00:21:15.260
21412141+Otherwise it's irresponsible.
21422142+21432143+536
21442144+00:21:15.260 --> 00:21:18.220
21452145+That was a, yeah, just throwing some bombs at you here.
21462146+21472147+537
21482148+00:21:18.220 --> 00:21:20.140
21492149+All right.
21502150+21512151+538
21522152+00:21:20.140 --> 00:21:22.220
21532153+And so, you know, the code doesn't matter anymore.
21542154+21552155+539
21562156+00:21:22.220 --> 00:21:23.260
21572157+We have to let go of that.
21582158+21592159+540
21602160+00:21:23.260 --> 00:21:24.380
21612161+We have a code fetish.
21622162+21632163+541
21642164+00:21:24.380 --> 00:21:26.460
21652165+I've been saying that for decades, literally,
21662166+21672167+542
21682168+00:21:26.460 --> 00:21:27.900
21692169+to developers at conferences.
21702170+21712171+543
21722172+00:21:27.900 --> 00:21:29.260
21732173+We have a code fetish.
21742174+21752175+544
21762176+00:21:29.260 --> 00:21:30.840
21772177+It's not about the code.
21782178+21792179+545
21802180+00:21:30.840 --> 00:21:33.340
21812181+Now it's about these evaluations, really,
21822182+21832183+546
21842184+00:21:33.340 --> 00:21:35.340
21852185+and the fact that things need to exist.
21862186+21872187+547
21882188+00:21:36.340 --> 00:21:39.260
21892189+So sort of backing up a little bit,
21902190+21912191+548
21922192+00:21:39.260 --> 00:21:41.260
21932193+think about, like, I went through the whole
21942194+21952195+549
21962196+00:21:41.260 --> 00:21:43.780
21972197+microservices movement, if you can call it that,
21982198+21992199+550
22002200+00:21:43.780 --> 00:21:45.260
22012201+craze, hype, whatever.
22022202+22032203+551
22042204+00:21:45.260 --> 00:21:47.140
22052205+And I was definitely one of them.
22062206+22072207+552
22082208+00:21:47.140 --> 00:21:50.540
22092209+And I'm friends with Fred George who created that term
22102210+22112211+553
22122212+00:21:50.540 --> 00:21:52.980
22132213+and probably regrets it now.
22142214+22152215+554
22162216+00:21:52.980 --> 00:21:55.220
22172217+People hate microservices.
22182218+22192219+555
22202220+00:21:55.220 --> 00:21:57.500
22212221+Now there's been a movement to move back to monoliths.
22222222+22232223+556
22242224+00:21:57.500 --> 00:22:00.420
22252225+That's also really stupid and misguided.
22262226+22272227+557
22282228+00:22:00.420 --> 00:22:02.260
22292229+The reason they hate microservices is,
22302230+22312231+558
22322232+00:22:02.260 --> 00:22:04.500
22332233+like, imagine you spent six months,
22342234+22352235+559
22362236+00:22:04.540 --> 00:22:06.340
22372237+like, breaking apart this monolith
22382238+22392239+560
22402240+00:22:06.340 --> 00:22:08.740
22412241+into a bunch of microservices because your manager said,
22422242+22432243+561
22442244+00:22:08.740 --> 00:22:10.540
22452245+we're doing microservices now.
22462246+22472247+562
22482248+00:22:10.540 --> 00:22:13.220
22492249+And then you finally remove the thing and you realize,
22502250+22512251+563
22522252+00:22:13.220 --> 00:22:15.220
22532253+oh, crap, there are all these dependencies
22542254+22552255+564
22562256+00:22:15.220 --> 00:22:16.900
22572257+we didn't really understand that are, like,
22582258+22592259+565
22602260+00:22:16.900 --> 00:22:19.820
22612261+maybe they're temporal or they're data related or whatever.
22622262+22632263+566
22642264+00:22:19.820 --> 00:22:22.780
22652265+You didn't accomplish anything by doing this.
22662266+22672267+567
22682268+00:22:22.780 --> 00:22:25.700
22692269+Maybe some sort of, like, production runtime improvement
22702270+22712271+568
22722272+00:22:25.700 --> 00:22:28.340
22732273+of not having, you know, services get on each other's
22742274+22752275+569
22762276+00:22:29.780 --> 00:22:33.100
22772277+CPU cycles and slow the whole system down or whatever.
22782278+22792279+570
22802280+00:22:33.100 --> 00:22:34.260
22812281+Not good.
22822282+22832283+571
22842284+00:22:35.220 --> 00:22:37.780
22852285+So this is sort of a necessary thing to think about.
22862286+22872287+572
22882288+00:22:37.780 --> 00:22:39.700
22892289+Like, it's not just small,
22902290+22912291+573
22922292+00:22:39.700 --> 00:22:41.980
22932293+but it's about boundaries and replaceability.
22942294+22952295+574
22962296+00:22:41.980 --> 00:22:42.980
22972297+That's what matters.
22982298+22992299+575
23002300+00:22:42.980 --> 00:22:46.140
23012301+And I say this as a person who did a talk called Tiny
23022302+23032303+576
23042304+00:22:46.140 --> 00:22:48.220
23052305+10 years ago at a conference thinking,
23062306+23072307+577
23082308+00:22:48.220 --> 00:22:50.540
23092309+I think it's just about making things small, guys,
23102310+23112311+578
23122312+00:22:50.540 --> 00:22:51.380
23132313+but it was not.
23142314+23152315+579
23162316+00:22:53.140 --> 00:22:54.420
23172317+Now what I'm realizing,
23182318+23192319+580
23202320+00:22:54.420 --> 00:22:57.660
23212321+and this is me also shilling my project, I must admit,
23222322+23232323+581
23242324+00:22:57.660 --> 00:23:01.220
23252325+but really it's about the conversation.
23262326+23272327+582
23282328+00:23:01.220 --> 00:23:03.100
23292329+So, you know, I was thinking about, like,
23302330+23312331+583
23322332+00:23:03.100 --> 00:23:05.420
23332333+how do you apply all this generative AI stuff?
23342334+23352335+584
23362336+00:23:05.420 --> 00:23:07.620
23372337+It's fine for one-shotting apps and, you know,
23382338+23392339+585
23402340+00:23:07.620 --> 00:23:09.340
23412341+like I made this presentation with it.
23422342+23432343+586
23442344+00:23:09.340 --> 00:23:10.740
23452345+I don't have a slide deck.
23462346+23472347+587
23482348+00:23:10.740 --> 00:23:14.380
23492349+I just have talking to an LLM having to generate things.
23502350+23512351+588
23522352+00:23:17.700 --> 00:23:21.620
23532353+What really matters though, on big systems is context.
23542354+23552355+589
23562356+00:23:21.620 --> 00:23:22.740
23572357+Like, how do you get the intent?
23582358+23592359+590
23602360+00:23:22.740 --> 00:23:24.780
23612361+How do you go to a 20 year old system
23622362+23632363+591
23642364+00:23:24.780 --> 00:23:27.220
23652365+and find out what the intent is behind the code?
23662366+23672367+592
23682368+00:23:27.220 --> 00:23:29.260
23692369+You probably do not actually, right?
23702370+23712371+593
23722372+00:23:29.260 --> 00:23:30.620
23732373+Because no one captures it.
23742374+23752375+594
23762376+00:23:30.620 --> 00:23:31.940
23772377+There's just no system for that.
23782378+23792379+595
23802380+00:23:31.940 --> 00:23:33.060
23812381+There never has been.
23822382+23832383+596
23842384+00:23:33.900 --> 00:23:35.820
23852385+Except in like really, really bureaucratic places,
23862386+23872387+597
23882388+00:23:35.820 --> 00:23:38.700
23892389+but then it was malicious compliance
23902390+23912391+598
23922392+00:23:38.700 --> 00:23:41.060
23932393+and you're gonna end up crap anyway.
23942394+23952395+599
23962396+00:23:41.060 --> 00:23:42.900
23972397+So what if we could create an environment
23982398+23992399+600
24002400+00:23:42.900 --> 00:23:45.340
24012401+where the conversation is always captured
24022402+24032403+601
24042404+00:23:45.340 --> 00:23:48.460
24052405+around how the requirements were created and specified,
24062406+24072407+602
24082408+00:23:48.460 --> 00:23:51.140
24092409+tied to a human in a way that is archived
24102410+24112411+603
24122412+00:23:51.140 --> 00:23:53.940
24132413+and will never be lost when you move
24142414+24152415+604
24162416+00:23:53.940 --> 00:23:55.880
24172417+from Slack to Teams or something.
24182418+24192419+605
24202420+00:23:57.260 --> 00:23:58.900
24212421+And every commit and every piece of code
24222422+24232423+606
24242424+00:23:58.900 --> 00:24:01.000
24252425+is tied to that conversation and the people that did it
24262426+24272427+607
24282428+00:24:01.000 --> 00:24:02.580
24292429+so you get a sense of why.
24302430+24312431+608
24322432+00:24:02.620 --> 00:24:04.500
24332433+I think this is the only responsible way
24342434+24352435+609
24362436+00:24:04.500 --> 00:24:06.300
24372437+to do software development next year.
24382438+24392439+610
24402440+00:24:07.340 --> 00:24:10.800
24412441+And to do that, it means you may not touch code as a human.
24422442+24432443+611
24442444+00:24:10.800 --> 00:24:13.060
24452445+You can view it, like you shouldn't be able to,
24462446+24472447+612
24482448+00:24:13.060 --> 00:24:14.420
24492449+you can use VI, it's okay.
24502450+24512451+613
24522452+00:24:14.420 --> 00:24:15.900
24532453+If you use VI, you can change it, but you know,
24542454+24552455+614
24562456+00:24:15.900 --> 00:24:19.620
24572457+like don't use the VS code and edit your code, it's wrong.
24582458+24592459+615
24602460+00:24:19.620 --> 00:24:21.900
24612461+Because if you as a human do it,
24622462+24632463+616
24642464+00:24:21.900 --> 00:24:23.380
24652465+you can't guarantee all this stuff.
24662466+24672467+617
24682468+00:24:23.380 --> 00:24:25.020
24692469+You won't guarantee being able to capture
24702470+24712471+618
24722472+00:24:25.020 --> 00:24:26.420
24732473+all this provenance.
24742474+24752475+619
24762476+00:24:26.420 --> 00:24:29.040
24772477+And bots are way better at discipline than we are.
24782478+24792479+620
24802480+00:24:29.200 --> 00:24:33.640
24812481+So I'm gonna go kind of fast now.
24822482+24832483+621
24842484+00:24:35.680 --> 00:24:38.920
24852485+I talk about regenerating code and I talk about like systems,
24862486+24872487+622
24882488+00:24:38.920 --> 00:24:42.720
24892489+like in my perfect world, a system in production
24902490+24912491+623
24922492+00:24:42.720 --> 00:24:45.880
24932493+maybe doesn't have any of the same code it had last month.
24942494+24952495+624
24962496+00:24:45.880 --> 00:24:48.280
24972497+And that's always true, it's just always rolling.
24982498+24992499+625
25002500+00:24:48.280 --> 00:24:50.880
25012501+And probably I will think that's quaint in a year
25022502+25032503+626
25042504+00:24:50.880 --> 00:24:54.240
25052505+and say, really, I meant five minutes, sorry guys, you know.
25062506+25072507+627
25082508+00:24:54.240 --> 00:24:56.160
25092509+That's sort of insane though,
25102510+25112511+628
25122512+00:24:56.160 --> 00:24:58.920
25132513+because just because we can change it doesn't mean we should
25142514+25152515+629
25162516+00:24:59.680 --> 00:25:00.520
25172517+change it, and there are layers.
25182518+25192519+630
25202520+00:25:00.520 --> 00:25:03.520
25212521+So Stewart Brand has this concept of paste layers,
25222522+25232523+631
25242524+00:25:03.520 --> 00:25:06.760
25252525+which is really just about like layers of the ability
25262526+25272527+632
25282528+00:25:06.760 --> 00:25:09.120
25292529+to change and where things need to move more slowly
25302530+25312531+633
25322532+00:25:09.120 --> 00:25:11.000
25332533+and where they can move more quickly.
25342534+25352535+634
25362536+00:25:11.000 --> 00:25:12.880
25372537+An example of a paste layer that should move slowly
25382538+25392539+635
25402540+00:25:12.880 --> 00:25:15.080
25412541+is like a protocol, you know, HTTP,
25422542+25432543+636
25442544+00:25:15.080 --> 00:25:18.480
25452545+let's not change that daily, but also a user interface.
25462546+25472547+637
25482548+00:25:18.480 --> 00:25:20.760
25492549+You can't just have the user interface change constantly
25502550+25512551+638
25522552+00:25:20.760 --> 00:25:22.760
25532553+because your users will be confused.
25542554+25552555+639
25562556+00:25:22.760 --> 00:25:24.640
25572557+And I think Paul might have mentioned that earlier
25582558+25592559+640
25602560+00:25:24.640 --> 00:25:25.640
25612561+in their presentation.
25622562+25632563+641
25642564+00:25:26.640 --> 00:25:30.120
25652565+The other thing that we need to worry about is hidden state.
25662566+25672567+642
25682568+00:25:30.120 --> 00:25:35.120
25692569+And I sort of got to that with the deletion test idea
25702570+25712571+643
25722572+00:25:35.720 --> 00:25:38.040
25732573+of doing this big microservices thing,
25742574+25752575+644
25762576+00:25:38.040 --> 00:25:41.120
25772577+and then you replace the monolith with microservices
25782578+25792579+645
25802580+00:25:41.120 --> 00:25:42.880
25812581+and nothing works.
25822582+25832583+646
25842584+00:25:42.880 --> 00:25:44.520
25852585+There's a bunch of that in the world.
25862586+25872587+647
25882588+00:25:44.520 --> 00:25:48.520
25892589+And so to do an architecture like this,
25902590+25912591+648
25922592+00:25:48.520 --> 00:25:50.640
25932593+and this is gonna be different for every application,
25942594+25952595+649
25962596+00:25:50.640 --> 00:25:52.760
25972597+this is a very serious thing you need to be thinking hard
25982598+25992599+650
26002600+00:25:52.760 --> 00:25:55.360
26012601+about service boundaries, data boundaries, et cetera,
26022602+26032603+651
26042604+00:25:55.400 --> 00:25:57.600
26052605+even temporal coupling.
26062606+26072607+652
26082608+00:25:59.000 --> 00:26:01.520
26092609+The end sort of goal here,
26102610+26112611+653
26122612+00:26:01.520 --> 00:26:04.080
26132613+and really something that's always been true,
26142614+26152615+654
26162616+00:26:04.080 --> 00:26:06.600
26172617+is if we're on a team together,
26182618+26192619+655
26202620+00:26:06.600 --> 00:26:08.460
26212621+what we are building is not the code,
26222622+26232623+656
26242624+00:26:08.460 --> 00:26:09.980
26252625+we're building a system,
26262626+26272627+657
26282628+00:26:09.980 --> 00:26:13.560
26292629+and the code is not only not the asset, it is a liability.
26302630+26312631+658
26322632+00:26:13.560 --> 00:26:17.040
26332633+It always is, because every line of code you ever wrote
26342634+26352635+659
26362636+00:26:17.040 --> 00:26:20.400
26372637+is legacy code, the moment you wrote it, right?
26382638+26392639+660
26402640+00:26:20.400 --> 00:26:23.400
26412641+Legacy code is bad, we all know that, right?
26422642+26432643+661
26442644+00:26:23.400 --> 00:26:25.000
26452645+So the system is the asset,
26462646+26472647+662
26482648+00:26:25.520 --> 00:26:26.760
26492649+code is a liability.
26502650+26512651+663
26522652+00:26:26.760 --> 00:26:30.560
26532653+So if you think about all this stuff I was just saying,
26542654+26552655+664
26562656+00:26:30.560 --> 00:26:33.160
26572657+you think about anything in your current systems,
26582658+26592659+665
26602660+00:26:33.160 --> 00:26:37.140
26612661+like pick one component, could you replace it tomorrow?
26622662+26632663+666
26642664+00:26:37.140 --> 00:26:39.840
26652665+Could you just have Claude redo it?
26662666+26672667+667
26682668+00:26:39.840 --> 00:26:42.440
26692669+If not, you probably have a refactoring job,
26702670+26712671+668
26722672+00:26:42.440 --> 00:26:45.040
26732673+a system-wide refactoring job ahead of you.
26742674+26752675+669
26762676+00:26:45.040 --> 00:26:47.200
26772677+And I will assert you already have
26782678+26792679+670
26802680+00:26:47.200 --> 00:26:48.560
26812681+that refactoring job ahead of you,
26822682+26832683+671
26842684+00:26:48.560 --> 00:26:49.640
26852685+you just didn't know it yet
26862686+26872687+672
26882688+00:26:49.640 --> 00:26:52.060
26892689+because things are moving a thousand times faster
26902690+26912691+673
26922692+00:26:52.060 --> 00:26:54.080
26932693+than they used to, or maybe faster than that,
26942694+26952695+674
26962696+00:26:54.120 --> 00:26:56.520
26972697+I don't know what the right number it is.
26982698+26992699+675
27002700+00:26:56.520 --> 00:27:00.520
27012701+So the point is AI didn't actually create this problem.
27022702+27032703+676
27042704+00:27:00.520 --> 00:27:03.120
27052705+And I think that's true of a lot of stuff we're seeing now,
27062706+27072707+677
27082708+00:27:03.120 --> 00:27:05.220
27092709+both in terms of the problems we see from AI
27102710+27112711+678
27122712+00:27:05.220 --> 00:27:06.960
27132713+and the solutions.
27142714+27152715+679
27162716+00:27:06.960 --> 00:27:08.560
27172717+It's like a real pattern I'm seeing.
27182718+27192719+680
27202720+00:27:08.560 --> 00:27:12.800
27212721+I'm also a VC, sorry, I heard some shade to VCs
27222722+27232723+681
27242724+00:27:12.800 --> 00:27:15.760
27252725+on the last talk, and I agree with it, honestly.
27262726+27272727+682
27282728+00:27:15.760 --> 00:27:17.580
27292729+I'm a VC who's also a programmer.
27302730+27312731+683
27322732+00:27:17.580 --> 00:27:18.880
27332733+I talk to a lot of people,
27342734+27352735+684
27362736+00:27:18.880 --> 00:27:20.280
27372737+and a lot of things happening now
27382738+27392739+685
27402740+00:27:20.280 --> 00:27:22.200
27412741+that I think are really powerful are like,
27422742+27432743+686
27442744+00:27:22.200 --> 00:27:24.880
27452745+AI is creating a problem because things move so fast,
27462746+27472747+687
27482748+00:27:24.880 --> 00:27:27.440
27492749+so much content's getting created, et cetera, et cetera,
27502750+27512751+688
27522752+00:27:27.440 --> 00:27:29.880
27532753+so we're gonna use AI to fix the problem.
27542754+27552755+689
27562756+00:27:29.880 --> 00:27:32.120
27572757+And that's kind of where I am right now.
27582758+27592759+690
27602760+00:27:32.120 --> 00:27:33.840
27612761+But it's the same thing we always had,
27622762+27632763+691
27642764+00:27:33.840 --> 00:27:35.880
27652765+it's just going a thousand miles per hour.
27662766+27672767+692
27682768+00:27:37.640 --> 00:27:40.080
27692769+So all the stuff I was talking about,
27702770+27712771+693
27722772+00:27:40.080 --> 00:27:41.640
27732773+how do we make it more concrete?
27742774+27752775+694
27762776+00:27:42.960 --> 00:27:45.480
27772777+Well, I told you I have a reference implementation
27782778+27792779+695
27802780+00:27:45.480 --> 00:27:48.460
27812781+of the Phoenix architecture, I linked it earlier.
27822782+27832783+696
27842784+00:27:48.460 --> 00:27:51.160
27852785+But I also told you the conversation is the commit.
27862786+27872787+697
27882788+00:27:51.160 --> 00:27:52.160
27892789+And the things I was saying,
27902790+27912791+698
27922792+00:27:52.160 --> 00:27:53.520
27932793+I hope they were registering like,
27942794+27952795+699
27962796+00:27:53.520 --> 00:27:56.160
27972797+well, I can't use Slack as my system of record,
27982798+27992799+700
28002800+00:27:56.160 --> 00:27:59.080
28012801+or I can't use Teams or whatever, or Discord, right?
28022802+28032803+701
28042804+00:27:59.080 --> 00:28:02.600
28052805+I need something with durability that I can host myself,
28062806+28072807+702
28082808+00:28:02.600 --> 00:28:04.280
28092809+that I can trust that no one else can read
28102810+28112811+703
28122812+00:28:04.280 --> 00:28:05.640
28132813+unless I want them to.
28142814+28152815+704
28162816+00:28:06.520 --> 00:28:09.000
28172817+I want cryptographic identities.
28182818+28192819+705
28202820+00:28:09.000 --> 00:28:10.400
28212821+I want provenance that way.
28222822+28232823+706
28242824+00:28:10.400 --> 00:28:13.720
28252825+I want my agents to be spawned by me and my key,
28262826+28272827+707
28282828+00:28:13.720 --> 00:28:15.040
28292829+and I want them to have keys,
28302830+28312831+708
28322832+00:28:15.040 --> 00:28:18.440
28332833+and I want us to maybe even have reputation and durability.
28342834+28352835+709
28362836+00:28:18.440 --> 00:28:20.960
28372837+And so I decided I would just build something
28382838+28392839+710
28402840+00:28:21.080 --> 00:28:22.000
28412841+that does this.
28422842+28432843+711
28442844+00:28:22.000 --> 00:28:23.680
28452845+It started as a hack one day,
28462846+28472847+712
28482848+00:28:23.680 --> 00:28:25.640
28492849+and here's where it's an app protocol thing.
28502850+28512851+713
28522852+00:28:25.640 --> 00:28:29.320
28532853+I was like, what if we could sign into IRC,
28542854+28552855+714
28562856+00:28:29.320 --> 00:28:30.160
28572857+if you know what that is,
28582858+28592859+715
28602860+00:28:30.160 --> 00:28:32.840
28612861+internet relay chat for the young people,
28622862+28632863+716
28642864+00:28:33.880 --> 00:28:35.960
28652865+with your blue sky handle?
28662866+28672867+717
28682868+00:28:35.960 --> 00:28:38.920
28692869+And it just kind of got out of control.
28702870+28712871+718
28722872+00:28:38.920 --> 00:28:42.640
28732873+So now what I'm building is a substrate
28742874+28752875+719
28762876+00:28:42.640 --> 00:28:45.460
28772877+with all of these properties, agent provenance,
28782878+28792879+720
28802880+00:28:45.460 --> 00:28:47.860
28812881+et cetera, et cetera, there's a lot to it.
28822882+28832883+721
28842884+00:28:48.860 --> 00:28:51.660
28852885+But the end goal is the substrate
28862886+28872887+722
28882888+00:28:51.660 --> 00:28:55.220
28892889+for agent driven development with Phoenix.
28902890+28912891+723
28922892+00:28:55.220 --> 00:29:00.220
28932893+And so please join freak.at, please contribute stuff,
28942894+28952895+724
28962896+00:29:00.420 --> 00:29:02.260
28972897+tell me what's stupid, what's not great.
28982898+28992899+725
29002900+00:29:02.260 --> 00:29:06.860
29012901+It kind of looks like there's iOS, Android, Windows, web,
29022902+29032903+726
29042904+00:29:06.860 --> 00:29:11.860
29052905+2e, Rust SDK, bot SDK, great docs, it's ready for you,
29062906+29072907+727
29082908+00:29:12.900 --> 00:29:14.540
29092909+but I have not launched it.
29102910+29112911+728
29122912+00:29:14.540 --> 00:29:16.220
29132913+And don't tell anyone about it,
29142914+29152915+729
29162916+00:29:16.300 --> 00:29:19.660
29172917+but please join because it's just for nerds right now.
29182918+29192919+730
29202920+00:29:19.660 --> 00:29:22.100
29212921+But I think this is how things are gonna work in the future.
29222922+29232923+731
29242924+00:29:22.100 --> 00:29:24.120
29252925+And I guess I'm out of time.
29262926+29272927+732
29282928+00:29:24.120 --> 00:29:26.260
29292929+So thank you very much for your attention.
29302930+29312931+733
29322932+00:29:26.260 --> 00:29:29.600
29332933+!
29342934+29352935+734
29362936+00:29:30.560 --> 00:29:31.860
29372937+Thank you very much, Chad.
29382938+29392939+735
29402940+00:29:33.340 --> 00:29:35.820
29412941+Accidentally, an encrypted IRC client
29422942+29432943+736
29442944+00:29:35.820 --> 00:29:37.740
29452945+with at-portal accounts.
29462946+29472947+737
29482948+00:29:37.740 --> 00:29:39.280
29492949+Amazing, thank you very much.
11342950